Skip to content

Commit

Permalink
Added Fixtures and More Inclusive Register Tests
Browse files Browse the repository at this point in the history
  • Loading branch information
super3 committed Aug 24, 2015
1 parent 4117f47 commit 0b8348c
Show file tree
Hide file tree
Showing 3 changed files with 78 additions and 11 deletions.
2 changes: 1 addition & 1 deletion README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ can perform any other actions.

::

GET /api/register/<bitcoin address>
GET /api/register/<bitcoin address>/<payout address>

Success Example:

Expand Down
28 changes: 28 additions & 0 deletions tests/fixtures.json
Original file line number Diff line number Diff line change
@@ -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"
}
}
59 changes: 49 additions & 10 deletions tests/test_App.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,42 +7,81 @@
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()

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)
Expand Down

0 comments on commit 0b8348c

Please sign in to comment.