예제 #1
0
파일: test.py 프로젝트: mcne65/fumblechain
    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)
예제 #2
0
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
예제 #3
0
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.'
예제 #4
0
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'
예제 #5
0
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"]'
예제 #6
0
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'
예제 #7
0
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
예제 #8
0
파일: test.py 프로젝트: mcne65/fumblechain
    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)
예제 #9
0
파일: test.py 프로젝트: mcne65/fumblechain
    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)
예제 #10
0
async def test_client_index_loads():
    client = app.test_client()
    response = await client.get('/index')
    assert response.status_code == 200
예제 #11
0
async def test_client_root_redirects():
    client = app.test_client()
    response = await client.get('/')
    assert response.status_code == 302
예제 #12
0
def client():
    with app.test_client() as client:
        with app.app_context():  # New!!
            assert current_app.config["ENV"] == "production"
        yield client