From 0b8348cc18c777afa5afed93d78a0e40554e37b2 Mon Sep 17 00:00:00 2001 From: Shawn Wilkinson Date: Mon, 24 Aug 2015 17:33:44 -0400 Subject: [PATCH] Added Fixtures and More Inclusive Register Tests --- README.rst | 2 +- tests/fixtures.json | 28 +++++++++++++++++++++ tests/test_App.py | 59 +++++++++++++++++++++++++++++++++++++-------- 3 files changed, 78 insertions(+), 11 deletions(-) create mode 100644 tests/fixtures.json diff --git a/README.rst b/README.rst index df6125b..c309cef 100644 --- a/README.rst +++ b/README.rst @@ -59,7 +59,7 @@ can perform any other actions. :: - GET /api/register/ + GET /api/register// Success Example: diff --git a/tests/fixtures.json b/tests/fixtures.json new file mode 100644 index 0000000..7876e83 --- /dev/null +++ b/tests/fixtures.json @@ -0,0 +1,28 @@ +{ + "addresses" : { + "alpha" : "12guBkWfVjiqBnu5yRdTseBB7wBM5WSWnm", + "beta" : "1BZR9GHs9a1bBfh6cwnDtvq6GEvNwVWxFa", + "gamma" : "1Jd4YBQ7d8nHGe4zWfLL9EWHMkspN9JKGf", + "delta" : "16eEuTp1QERjCC8ZnGf34NvkptMifNSCti", + "epsilon" : "1FwSLAJtpLrSQp94damzWY2nK5cEBugZfC", + "zeta" : "1FHgmJkT4od36Zu3SVSzi71Kcvcs33Y1hn", + "eta" : "1wqyu7Mxz6sgmnHGzQdaSdW8zpGkViL79", + "theta" : "1AFJM5dn1iqHXtnttJJgskKwrhhajaY7iC", + "iota" : "19oWeFAWJh3WUKF9KEXdFUtwD9TQAf4gh9", + "lambda" : "17prdhkPcSJ3TC4SoSVNCAbUdr8xZrokaY", + "mu" : "1DNe4PPhr6raNbADsHABGSpm6XQi7KhSTo", + "nu" : "16Smzr8ESjdFDdfj5pVZifvSRzHhim3gAn", + "pi" : "1EdCc5bxUAsdsvuJN48gK8UteezYNC2ffU", + "omicron" : "19FfabAxmTZRCuxBvesMovz1xSfGgsmoqg", + "kappa" : "1G5UfNg2M1qExpLGDLko8cfusLQ2GvVSqK", + "ksi" : "15xu7JLwqZB9ZakrfZQJF5AJpNDwWabqwA", + "rho" : "1EYtmt5QWgwATbJvnVP9G9cDXrMcX5bHJ", + "sigma" : "12qx5eKHmtwHkrpByYBdosRwUfSfbGsqhT", + "tau" : "1MfQwmCQaLRxAAij1Xii6BxFtkVvjrHPc2", + "upsilon" : "1MwWa91KJGzctsYxE9V5iHFVp9Ub9HBarV", + "phi" : "1LRVczz1Ln1ECom7oVotEmUVLKbxofQfKS", + "chi" : "12zhPViCGssXWiUMeGuEYgqLFr1wF1MJH9", + "psi" : "1BKUVHEWRQNFF8M9TUZhsuGiQxL6rqeSi5", + "omega" : "notvalidaddress" + } +} diff --git a/tests/test_App.py b/tests/test_App.py index 3c28303..7eb2e57 100644 --- a/tests/test_App.py +++ b/tests/test_App.py @@ -7,12 +7,17 @@ from email.utils import formatdate from dataserv.app import secs_to_mins, online_farmers +# load address from fixtures file +fixtures = json.load(open("tests/fixtures.json")) +addresses = fixtures["addresses"] + class AppTest(unittest.TestCase): # setup def setUp(self): app.config["SKIP_AUTHENTICATION"] = True # monkey patch + self.app = app.test_client() db.create_all() @@ -20,29 +25,63 @@ def tearDown(self): db.session.remove() db.drop_all() - # simple index test + # making sure that at least the web server works def test_hello_world(self): rv = self.app.get('/') self.assertEqual(b"Hello World.", rv.data) - # register call - def test_register(self): - addr = '191GVvAaTRxLmz3rW3nU5jAV1rF186VxQc' - rv = self.app.get('/api/register/{0}'.format(addr)) + # register calls + def test_register_no_payout(self): + rv = self.app.get('/api/register/{0}'.format(addresses["alpha"])) # good registration - data = json.loads(rv.data.decode("utf-8")) - self.assertEqual(addr, data["btc_addr"]) + return_data = json.loads(rv.data.decode("utf-8")) + expected_data = { + "height": 0, + "btc_addr": addresses["alpha"], + 'payout_addr': addresses["alpha"], + "last_seen": 0 + } self.assertEqual(rv.status_code, 200) + self.assertEqual(return_data, expected_data) # duplicate registration - rv = self.app.get('/api/register/{0}'.format(addr)) + rv = self.app.get('/api/register/{0}'.format(addresses["alpha"])) + self.assertEqual(b"Registration Failed: Address already is registered.", rv.data) + self.assertEqual(rv.status_code, 409) + + def test_register_w_payout(self): + rv = self.app.get('/api/register/{0}/{1}'.format(addresses["beta"], addresses["gamma"])) + # good registration + return_data = json.loads(rv.data.decode("utf-8")) + expected_data = { + "height": 0, + "btc_addr": addresses["beta"], + 'payout_addr': addresses["gamma"], + "last_seen": 0 + } + self.assertEqual(rv.status_code, 200) + self.assertEqual(return_data, expected_data) + + # duplicate registration + rv = self.app.get('/api/register/{0}/{1}'.format(addresses["beta"], addresses["gamma"])) self.assertEqual(b"Registration Failed: Address already is registered.", rv.data) self.assertEqual(rv.status_code, 409) + # duplicate payout address is ok + rv = self.app.get('/api/register/{0}/{1}'.format(addresses["delta"], addresses["gamma"])) + return_data = json.loads(rv.data.decode("utf-8")) + expected_data = { + "height": 0, + "btc_addr": addresses["delta"], + 'payout_addr': addresses["gamma"], + "last_seen": 0 + } + self.assertEqual(rv.status_code, 200) + self.assertEqual(return_data, expected_data) + def test_register_invalid_address(self): - addr = '191GVvAaTRxLmz3rW3nU5jAV1rF186VxQc_this_is_not_an_address' - rv = self.app.get('/api/register/{0}'.format(addr)) + rv = self.app.get('/api/register/{0}'.format(addresses["omega"])) # invalid address self.assertEqual(b"Registration Failed: Invalid Bitcoin address.", rv.data)