gasgasgas/tests/test_register.py

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()