kopia lustrzana https://github.com/bugout-dev/moonstream
56 wiersze
1.6 KiB
Python
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()
|