Example #1
0
 async def test_register_bike_bad_schema(self, client: TestClient):
     """Assert that a bad schema is dealt with."""
     resp = await client.post('/api/v1/bikes', json={"bad_key": "bad_key"})
     response_schema = JSendSchema()
     response_data = response_schema.load(await resp.json())
     assert response_data["status"] == JSendStatus.FAIL
     assert resp.status == 400
Example #2
0
    async def test_get_bike_missing(self, client: TestClient):
        """Assert that getting a non-existent bike causes a failure."""

        response = await client.get(f'/api/v1/bikes/ababab')
        response_schema = JSendSchema()
        data = response_schema.load(await response.json())

        assert data["status"] == JSendStatus.FAIL
        assert "Could not find" in data["data"]["message"]
Example #3
0
 async def test_create_bike_rental_invalid_key(self, client: TestClient,
                                               random_bike):
     """Assert that creating a rental with an invalid firebase key fails."""
     response_schema = JSendSchema()
     response = await client.post(
         f'/api/v1/bikes/{random_bike.identifier}/rentals',
         headers={"Authorization": "Bearer "})
     response_data = response_schema.load(await response.json())
     assert response_data["status"] == JSendStatus.FAIL
     assert any("Invalid" == error
                for error in response_data["data"]["errors"])
Example #4
0
    async def test_create_bike_rental_missing_user(self, client: TestClient,
                                                   random_bike):
        """Assert that creating a rental with a non existing user (but valid firebase key) gives a descriptive error."""
        response = await client.post(
            f'/api/v1/bikes/{random_bike.identifier}/rentals',
            headers={"Authorization": "Bearer ab"})

        response_schema = JSendSchema()
        response_data = response_schema.load(await response.json())

        assert response_data["status"] == JSendStatus.FAIL
        assert "Could not find" in response_data["data"]["message"]
Example #5
0
    async def test_delete_bike_bad_master(self, client: TestClient,
                                          random_bike):
        """Assert that passing the wrong key fails."""

        request_schema = MasterKeySchema()
        response_schema = JSendSchema()

        request_data = request_schema.dump({"master_key": "abcd"})

        response = await client.delete(
            f'/api/v1/bikes/{random_bike.identifier}', json=request_data)
        response_data = response_schema.load(await response.json())

        assert response_data["status"] == JSendStatus.FAIL
        assert "master key is invalid" in response_data["data"]["message"]
Example #6
0
    async def test_register_bike_bad_master_key(self, client: TestClient):
        """Assert that a bad master key causes a failed request."""
        request_schema = BikeRegisterSchema()
        request_data = {
            "public_key": random_key(32),
            "master_key": random_key(1),
            "type": BikeType.ROAD,
        }

        request_json = request_schema.dump(request_data)

        resp = await client.post('/api/v1/bikes', json=request_json)

        response_schema = JSendSchema()
        response_data = response_schema.load(await resp.json())
        assert response_data["status"] == JSendStatus.FAIL
        assert resp.status == 400
Example #7
0
    async def test_register_bike_bad_public_key(self, client: TestClient):
        """Assert that a bad public key causes a failed request."""
        request_schema = BikeRegisterSchema()

        request_json = request_schema.dump({
            "public_key": random_key(1),
            "type": BikeType.ROAD,
        })

        request_json["public_key"] = "bad_key"

        resp = await client.post('/api/v1/bikes', json=request_json)

        response_schema = JSendSchema()
        response_data = response_schema.load(await resp.json())
        assert response_data["status"] == JSendStatus.FAIL
        assert any("bad_key is not a valid hex-encoded string" in error
                   for error in response_data["data"]["errors"]["public_key"])
        assert resp.status == 400