moonstream/engineapi/engineapi/test_auth.py

56 wiersze
1.6 KiB
Python

import time
import unittest
from brownie import network, accounts
from hexbytes import HexBytes
from .auth import (
authorize,
verify,
MoonstreamAuthorizationVerificationError,
MoonstreamAuthorizationExpired,
)
class TestAuth(unittest.TestCase):
@classmethod
def setUpClass(cls):
try:
network.connect()
except:
pass
cls.signer = accounts.add()
cls.non_signer = accounts.add()
def test_authorization_and_verification(self):
current_time = int(time.time())
payload = authorize(
current_time + 300, self.signer.address, HexBytes(self.signer.private_key)
)
self.assertDictContainsSubset(
{"address": self.signer.address, "deadline": current_time + 300}, payload
)
self.assertTrue(verify(payload))
def test_authorization_and_verification_fails_for_wrong_address(self):
current_time = int(time.time())
payload = authorize(
current_time + 300, self.signer.address, HexBytes(self.signer.private_key)
)
payload["address"] = self.non_signer.address
with self.assertRaises(MoonstreamAuthorizationVerificationError):
verify(payload)
def test_authorization_and_verification_fails_after_deadline(self):
current_time = int(time.time())
payload = authorize(
current_time - 1, self.signer.address, HexBytes(self.signer.private_key)
)
with self.assertRaises(MoonstreamAuthorizationExpired):
verify(payload)
if __name__ == "__main__":
unittest.main()