def test_many_nested(client): response = request( client, 'PUT', '/nested_parents/1', { 'id': '1', 'name': "Updated Parent", 'children': [ {'name': "Child 3"}, {'name': "Child 4"}, ], }, ) assert_response(response, 200, { 'id': '1', 'name': "Updated Parent", 'children': [ { 'id': '3', 'name': "Child 3", }, { 'id': '4', 'name': "Child 4", }, ], })
def test_error_invalid_field(client): response = client.get('/widgets?size_min=foo') assert_response(response, 400, [{ 'code': 'invalid_filter', 'detail': 'Not a valid integer.', 'source': {'parameter': 'size_min'}, }])
def test_many(client): response = request( client, 'PUT', '/parents/1', { 'id': '1', 'name': "Updated Parent", 'children': [ {'id': '1'}, {'id': '2'}, ], }, ) assert_response(response, 200, { 'id': '1', 'name': "Updated Parent", 'children': [ { 'id': '1', 'name': "Child 1", }, { 'id': '2', 'name': "Child 2", }, ], })
def test_error_invalid_relay_cursor_field(client): response = client.get('/relay_cursor_widgets?cursor=Zm9v') assert_response(response, 400, [{ 'code': 'invalid_cursor', 'detail': 'Not a valid integer.', 'source': {'parameter': 'cursor'}, }])
def test_retrieve(client): response = client.get('/widgets/1/2') assert_response(response, 200, { 'id_1': '1', 'id_2': '2', 'name': "Foo", })
def test_retrieve_create_missing(client): response = client.get('/widgets_create_missing/4?user_id=foo&owner_id=foo') assert_response(response, 200, { 'id': '4', 'owner_id': 'foo', 'name': None, })
def test_arg(client, token): response = client.get('/widgets?id_token={}'.format(token)) assert_response(response, 200, [ { 'id': '1', 'owner_id': 'foo', }, ])
def test_error_delete_unauthorized(client): not_found_response = client.delete('/widgets/1?user_id=bar') assert_response(not_found_response, 404) forbidden_response = client.delete('/widgets/3?user_id=bar') assert_response(forbidden_response, 403, [{ 'code': 'invalid_user' }])
def test_retrieve(client): response = client.get('/widgets/1') assert_response(response, 200, { 'id': '1', 'name': "Foo", 'description': "foo widget", })
def test_error_invalid_authorization_scheme(client): response = client.get( '/widgets', headers={ 'Authorization': 'foo bar', }, ) assert_response(response, 401, [{ 'code': 'invalid_authorization.scheme', }])
def test_update_update_missing(client): response = request( client, 'PUT', '/widgets_create_missing/4?user_id=foo&owner_id=foo', { 'id': '4', 'name': "Created", } ) assert_response(response, 204)
def test_error_invalid_token(client, invalid_token): response = client.get( '/widgets', headers={ 'Authorization': 'Bearer {}'.format(invalid_token), }, ) assert_response(response, 401, [{ 'code': 'invalid_token', }])
def test_create(client): response = request( client, 'POST', '/widgets?user_id=foo', { 'owner_id': 'foo', 'name': "Created", }, ) assert_response(response, 201)
def test_update(client): response = request( client, 'PATCH', '/widgets/1?user_id=foo', { 'id': '1', 'owner_id': 'foo', 'name': "Updated", }, ) assert_response(response, 204)
def test_limit_offset_offset_truncate(client): response = client.get('/limit_offset_widgets?offset=5') assert_response(response, 200, [ { 'id': '6', 'size': 3, }, ]) assert get_meta(response) == { 'has_next_page': False }
def test_limit_offset_filtered_offset(client): response = client.get('/limit_offset_widgets?size=2&offset=1') assert_response(response, 200, [ { 'id': '5', 'size': 2, }, ]) assert get_meta(response) == { 'has_next_page': False }
def test_many(client): response = client.get("/widgets?sort=name,-size") assert_response( response, 200, [ {"id": "3", "name": "Baz", "size": 3}, {"id": "2", "name": "Foo", "size": 5}, {"id": "1", "name": "Foo", "size": 1}, ], )
def test_fixed(client): response = client.get("/fixed_widgets") assert_response( response, 200, [ {"id": "3", "name": "Baz", "size": 3}, {"id": "1", "name": "Foo", "size": 1}, {"id": "2", "name": "Foo", "size": 5}, ], )
def test_error_update_create_missing_unauthorized(client): response = request( client, 'PUT', '/widgets_create_missing/4?user_id=bar&owner_id=foo', { 'id': '4', 'name': "Created", } ) assert_response(response, 403, [{ 'code': 'invalid_user' }])
def test_error_create_unauthorized(client): response = request( client, 'POST', '/widgets?user_id=bar', { 'owner_id': 'foo', 'name': "Created", }, ) assert_response(response, 403, [{ 'code': 'invalid_user' }])
def test_custom_operator(client): response = client.get('/widgets?size_divides=2') assert_response(response, 200, [ { 'id': '2', 'color': 'green', 'size': 2, }, { 'id': '4', 'color': 'red', 'size': 6, }, ])
def test_filter_field(client): response = client.get('/widgets?size_is_odd=true') assert_response(response, 200, [ { 'id': '1', 'color': 'red', 'size': 1, }, { 'id': '3', 'color': 'blue', 'size': 3, }, ])
def test_eq(client): response = client.get('/widgets?color=red') assert_response(response, 200, [ { 'id': '1', 'color': 'red', 'size': 1, }, { 'id': '4', 'color': 'red', 'size': 6, }, ])
def test_ge(client): response = client.get('/widgets?size_min=3') assert_response(response, 200, [ { 'id': '3', 'color': 'blue', 'size': 3, }, { 'id': '4', 'color': 'red', 'size': 6, }, ])
def test_error_missing_id(client): response = request( client, 'PUT', '/children/1', { 'id': '1', 'name': "Updated Child", 'parent': {}, }, ) assert_response(response, 422, [{ 'code': 'invalid_related.missing_id', 'source': {'pointer': '/data/parent'}, }])
def test_list(client): response = client.get('/widgets?user_id=foo') assert_response(response, 200, [ { 'id': '1', 'owner_id': 'foo', 'name': "Foo", }, { 'id': '3', 'owner_id': None, 'name': "Public", }, ])
def test_header(client, token): response = client.get( '/widgets', headers={ 'Authorization': 'Bearer {}'.format(token), }, ) assert_response(response, 200, [ { 'id': '1', 'owner_id': 'foo', }, ])
def test_eq_many(client): response = client.get('/widgets?color=green,blue') assert_response(response, 200, [ { 'id': '2', 'color': 'green', 'size': 2, }, { 'id': '3', 'color': 'blue', 'size': 3, }, ])
def test_page_default(client): response = client.get('/page_widgets') assert_response(response, 200, [ { 'id': '1', 'size': 1, }, { 'id': '2', 'size': 2, }, ]) assert get_meta(response) == { 'has_next_page': True }
def test_page(client): response = client.get('/page_widgets?page=1') assert_response(response, 200, [ { 'id': '3', 'size': 3, }, { 'id': '4', 'size': 1, }, ]) assert get_meta(response) == { 'has_next_page': True }
def test_ping(base_client): response = base_client.get("/ping") assert_response(response, 200) assert response.get_data(as_text=True) == ""
def test_delete_return_item(app, views, client): api = Api(app) api.add_resource("/widgets/<int:id>", views["custom_widget"]) response = client.delete("/widgets/1") assert_response(response, 200, {"id": "9"})
def test_destroy(client): destroy_response = client.delete("/widgets/1/2") assert_response(destroy_response, 204) retrieve_response = client.get("/widgets/1/2") assert_response(retrieve_response, 404)
def test_eq_empty_allow_empty(client): response = client.get("/widgets?color_allow_empty=") assert_response(response, 200, [])
def test_column_filter_unvalidated(client): response = client.get("/widgets?size_min_unvalidated=-1") assert_response( response, 200, [{"id": "1"}, {"id": "2"}, {"id": "3"}, {"id": "4"}] )
def test_model_filter_default(client): response = client.get("/widgets_default_filters") assert_response(response, 200, [{"id": "1", "color": "red", "size": 1}])
def test_get_names_one(client): response = client.get("/names?name=foo") assert_response(response, 200, ["foo"])
def test_get_name_default_specified(client): response = client.get("/name_default?name=bar") assert_response(response, 200, "bar")
def test_get_name_extra(client): response = client.get("/name?name=foo&ignored=bar") assert_response(response, 200, "foo")
def test_get_name_default(client): response = client.get("/name_default") assert_response(response, 200, "foo")
def test_get_names_many_delimited(client): response = client.get("/names_delimited?name=foo,bar") assert_response(response, 200, ["foo", "bar"])
def test_error_retrieve_bearer_wrong_scheme(client): response = client.get("/widgets_bearer/1", headers={"Authorization": "Bear XXX"}) assert_response(response, 401, [{"code": "invalid_authorization.scheme"}])
def test_error_invalid_token(self, client, invalid_token): response = client.get( "/widgets", headers={"Authorization": f"Bearer {invalid_token}"}) assert_response(response, 401, [{"code": "invalid_token"}])
def test_get_names_many(client): response = client.get("/names?name=foo&name=bar") assert_response(response, 200, ["foo", "bar"])
def test_error_invalid_authorization_scheme(self, client): response = client.get("/widgets", headers={"Authorization": "foo bar"}) assert_response(response, 401, [{ "code": "invalid_authorization.scheme" }])
def test_error_unauthenticated(self, client): response = client.get('/widgets') assert_response(response, 401, [{ 'code': 'invalid_credentials.missing', }])
def test_limit_offset_offset_truncate(client): response = client.get("/limit_offset_widgets?offset=5") assert_response(response, 200, [{"id": "6", "size": 3}]) assert get_meta(response) == {"has_next_page": False}
def test_not_found(client): response = client.get('/nonexistent') assert_response(response, 404, [{ 'code': 'not_found', }])
def test_retrieve(client): response = client.get("/widgets/1/2") assert_response(response, 200, {"id_1": "1", "id_2": "2", "name": "Foo"})
def test_limit_offset_filtered_offset(client): response = client.get("/limit_offset_widgets?size=2&offset=1") assert_response(response, 200, [{"id": "5", "size": 2}]) assert get_meta(response) == {"has_next_page": False}
def test_eq_empty_custom_column_element(client): response = client.get("/widgets?size=") assert_response(response, 200, [])
def test_relay_cursor_create_sorted(client): response = client.post("/relay_cursor_widgets?sort=size", data={"size": 1}) assert_response(response, 201, {"size": 1}) assert get_meta(response) == {"cursor": "MQ.Nw"}
def test_column_filter_required_present(client): response = client.get("/widgets_size_required?size=1") assert_response(response, 200, [{"id": "1", "color": "red", "size": 1}])
def test_retrieve(client): response = client.get("/widgets/1?user_id=foo") assert_response(response, 200)
def test_column_filter_skip_invalid(client): response = client.get("/widgets?size_skip_invalid=foo") assert_response(response, 200, [])
def test_error_unauthenticated(client): response = client.get("/widgets") assert_response(response, 401, [{"code": "invalid_credentials.missing"}])
def test_model_filter_default_override(client): response = client.get("/widgets_default_filters?color=blue&size=3") assert_response(response, 200, [{"id": "3", "color": "blue", "size": 3}])
def test_error_retrieve_unauthorized(client): response = client.get("/widgets/1?user_id=bar") assert_response(response, 404)
def test_default_code(client, path): response = client.get(path) assert_response(response, 400, [{ 'code': 'bad_request', }])
def test_error_retrieve_bearer_malformed_header(client): response = client.get("/widgets_bearer/1", headers={"Authorization": "BearerXXX"}) assert_response(response, 401, [{"code": "invalid_authorization"}])