59 lines
1.5 KiB
Python
59 lines
1.5 KiB
Python
|
# 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()
|