# standard imports import io import os import unittest import tempfile import shutil import logging import urllib.parse # external imports from chainlib.eth.unittest.ethtester import EthTesterCase from hexathon import same as is_same_hex from leveldir.uuid import UUIDDir from gas3.base import do_yield from gas3.base import check from gas3.register import do_register import gas3.error logging.basicConfig(level=logging.DEBUG) class TestRegister(EthTesterCase): def setUp(self): super(TestRegister, self).setUp() self.data_path = tempfile.mkdtemp() self.data_dir = UUIDDir(self.data_path) def test_yield(self): u = do_yield(None, {}, self.data_dir) p = check(u, self.data_dir) self.assertTrue(os.path.exists(p)) def test_register(self): u = do_yield(None, {}, self.data_dir) req = urllib.parse.urlparse('http://localhost/register/' + u) address_file = io.StringIO() address_file.write(self.accounts[0] + '\n') address_file.seek(0) env = { 'wsgi.input': address_file, } r = do_register(req, env, self.data_dir) self.assertEqual(len(r), 40) with self.assertRaises(gas3.error.Used): r = do_register(req, env, self.data_dir) fp = self.data_dir.to_filepath(u) f = open(fp, 'rb') r = f.read() f.close() self.assertTrue(is_same_hex(r.hex(), self.accounts[0])) if __name__ == '__main__': unittest.main()