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
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"]
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"])
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"]
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"]
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
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