def test_post_transaction(self): self.prepare_app() # prepare a valid transaction w = Wallet() w.create_keys() tx = Transaction("0", w.get_address(), 1) w.sign_transaction(tx) client = app.test_client() response = client.post("/block/new", data=tx.to_json()) self.assertEqual(response.status_code, 201) b = Block.from_json(response.get_data()) mine(b) response = client.post("/block", data=b.to_json()) self.assertEqual(response.status_code, 201) tx = Transaction(w.get_address(), 1, 0.5) # test without signature response = client.post("/transaction", data=tx.to_json()) self.assertEqual(response.status_code, 400) # test with signature w.sign_transaction(tx) response = client.post("/transaction", data=tx.to_json()) self.assertEqual(response.status_code, 201)
async def test_client_geo_code_accepts_data(): client = app.test_client() app.redis = fakeredis.FakeStrictRedis() app.redis.pubsub = fake_pubsub(app.redis) data = {'address': 'New York City'} response = await client.post('/geo_code', form=data) assert response.status_code == 200
async def test_client_geo_code_loads(): client = app.test_client() response = await client.post('/geo_code', json=None) assert response.status_code == 400 return_data = json.loads(response.response.data) assert list(return_data.keys())[0] == 'Error' assert return_data['Error'] == 'No valid request received. Pass parameters as form- or URL-parameters.'
async def test_client_geo_code_with_lat_only_yields_from_subscribed_channel(): client = app.test_client() app.redis = fakeredis.FakeStrictRedis() app.redis.pubsub = fake_pubsub(app.redis) data = {'lat': '35.6828387'} response = await client.post('/geo_code', form=data) return_data = json.loads(response.response.data) assert response.status_code == 400 assert list(return_data.keys())[0] == 'Error' assert return_data['Error'] == 'Both lat and lng must be set'
async def test_client_geo_code_with_lat_and_lng_yields_from_subscribed_channel(): client = app.test_client() app.redis = fakeredis.FakeStrictRedis() app.redis.pubsub = fake_pubsub(app.redis) data = {'lat': '35.6828387', 'lng': '139.7594549'} response = await client.post('/geo_code', form=data) return_data = json.loads(response.response.data) assert response.status_code == 200 assert list(return_data.keys())[0] == 'address' assert return_data['address'] == 'Mocked response for subscription response:["35.6828387", "139.7594549"]'
async def test_client_geo_code_with_address_yields_from_subscribed_channel(): client = app.test_client() app.redis = fakeredis.FakeStrictRedis() app.redis.pubsub = fake_pubsub(app.redis) data = {'address': 'New York City'} response = await client.post('/geo_code', form=data) return_data = json.loads(response.response.data) assert response.status_code == 200 assert list(return_data.keys())[0] == 'latlng' assert return_data['latlng'] == 'Mocked response for subscription response:New York City'
def client(): # setup db app.config[MOVIE_DATASET] = "full" app.config[AUTH_FACTORY] = AuthTokenFactory(private_key="some key") client = app.test_client() yield client # cleanup db pass
def test_post_new_block(self): self.prepare_app() # prepare a valid transaction w = Wallet() w.create_keys() tx = Transaction(0, w.get_address(), 1) w.sign_transaction(tx) client = app.test_client() response = client.post("/block/new", data=tx.to_json()) self.assertEqual(response.status_code, 201) b = Block.from_json(response.get_data()) self.assertTrue(type(b) == Block)
def test_post_block(self): p2p = ClientAPITest.DummyP2p() bc = BlockChain() p2p.bc = bc app.p2p = p2p # make some cash first w, cbtx = WalletHelper.generate_wallet_and_coinbase() cash_block = bc.new_block(cbtx) mine(cash_block) bc.discard_block(cash_block) txs = [] for i in range(4): tx = Transaction(w.get_address(), i, 0.1) w.sign_transaction(tx) txs.append(tx) # mine current block cbtx = WalletHelper.generate_coinbase_with_unused_wallet() current_block = bc.new_block(cbtx) mine(current_block) # put current block in chain and create new block bc.discard_block(current_block) # create new block cbtx = WalletHelper.generate_coinbase_with_unused_wallet() b = bc.new_block(cbtx) for tx in txs: b.add_transaction(tx) client = app.test_client() # POST new UN-mined block (should fail and return 400 bad request) response = client.post("/block", data=b.to_json()) self.assertEqual(response.status_code, 400) # mine new block mine(b) # POST new mined block (should work this time) response = client.post("/block", data=b.to_json()) self.assertEqual(response.status_code, 201)
async def test_client_index_loads(): client = app.test_client() response = await client.get('/index') assert response.status_code == 200
async def test_client_root_redirects(): client = app.test_client() response = await client.get('/') assert response.status_code == 302
def client(): with app.test_client() as client: with app.app_context(): # New!! assert current_app.config["ENV"] == "production" yield client