Example #1
0
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",
            },
        ],
    })
Example #2
0
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'},
    }])
Example #3
0
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",
    })
Example #6
0
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,
    })
Example #7
0
def test_arg(client, token):
    response = client.get('/widgets?id_token={}'.format(token))
    assert_response(response, 200, [
        {
            'id': '1',
            'owner_id': 'foo',
        },
    ])
Example #8
0
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'
    }])
Example #9
0
def test_retrieve(client):
    response = client.get('/widgets/1')

    assert_response(response, 200, {
        'id': '1',
        'name': "Foo",
        'description': "foo widget",
    })
Example #10
0
def test_error_invalid_authorization_scheme(client):
    response = client.get(
        '/widgets',
        headers={
            'Authorization': 'foo bar',
        },
    )
    assert_response(response, 401, [{
        'code': 'invalid_authorization.scheme',
    }])
Example #11
0
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)
Example #12
0
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',
    }])
Example #13
0
def test_create(client):
    response = request(
        client,
        'POST', '/widgets?user_id=foo',
        {
            'owner_id': 'foo',
            'name': "Created",
        },
    )
    assert_response(response, 201)
Example #14
0
def test_update(client):
    response = request(
        client,
        'PATCH', '/widgets/1?user_id=foo',
        {
            'id': '1',
            'owner_id': 'foo',
            'name': "Updated",
        },
    )
    assert_response(response, 204)
Example #15
0
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
    }
Example #16
0
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
    }
Example #17
0
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},
        ],
    )
Example #18
0
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},
        ],
    )
Example #19
0
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'
    }])
Example #20
0
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'
    }])
Example #21
0
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,
        },
    ])
Example #22
0
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,
        },
    ])
Example #23
0
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,
        },
    ])
Example #24
0
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,
        },
    ])
Example #25
0
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'},
    }])
Example #26
0
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",
        },
    ])
Example #27
0
def test_header(client, token):
    response = client.get(
        '/widgets',
        headers={
            'Authorization': 'Bearer {}'.format(token),
        },
    )

    assert_response(response, 200, [
        {
            'id': '1',
            'owner_id': 'foo',
        },
    ])
Example #28
0
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,
        },
    ])
Example #29
0
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
    }
Example #30
0
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
    }
Example #31
0
def test_ping(base_client):
    response = base_client.get("/ping")
    assert_response(response, 200)
    assert response.get_data(as_text=True) == ""
Example #32
0
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)
Example #34
0
def test_eq_empty_allow_empty(client):
    response = client.get("/widgets?color_allow_empty=")
    assert_response(response, 200, [])
Example #35
0
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"}]
    )
Example #36
0
def test_model_filter_default(client):
    response = client.get("/widgets_default_filters")
    assert_response(response, 200, [{"id": "1", "color": "red", "size": 1}])
Example #37
0
def test_get_names_one(client):
    response = client.get("/names?name=foo")
    assert_response(response, 200, ["foo"])
Example #38
0
def test_get_name_default_specified(client):
    response = client.get("/name_default?name=bar")
    assert_response(response, 200, "bar")
Example #39
0
def test_get_name_extra(client):
    response = client.get("/name?name=foo&ignored=bar")
    assert_response(response, 200, "foo")
Example #40
0
def test_get_name_default(client):
    response = client.get("/name_default")
    assert_response(response, 200, "foo")
Example #41
0
def test_get_names_many_delimited(client):
    response = client.get("/names_delimited?name=foo,bar")
    assert_response(response, 200, ["foo", "bar"])
Example #42
0
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"}])
Example #43
0
 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"}])
Example #44
0
def test_get_names_many(client):
    response = client.get("/names?name=foo&name=bar")
    assert_response(response, 200, ["foo", "bar"])
Example #45
0
 def test_error_invalid_authorization_scheme(self, client):
     response = client.get("/widgets", headers={"Authorization": "foo bar"})
     assert_response(response, 401, [{
         "code": "invalid_authorization.scheme"
     }])
Example #46
0
 def test_error_unauthenticated(self, client):
     response = client.get('/widgets')
     assert_response(response, 401, [{
         'code': 'invalid_credentials.missing',
     }])
Example #47
0
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}
Example #48
0
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"})
Example #50
0
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}
Example #51
0
def test_eq_empty_custom_column_element(client):
    response = client.get("/widgets?size=")
    assert_response(response, 200, [])
Example #52
0
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"}
Example #53
0
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}])
Example #54
0
def test_retrieve(client):
    response = client.get("/widgets/1?user_id=foo")
    assert_response(response, 200)
Example #55
0
def test_column_filter_skip_invalid(client):
    response = client.get("/widgets?size_skip_invalid=foo")
    assert_response(response, 200, [])
Example #56
0
def test_error_unauthenticated(client):
    response = client.get("/widgets")
    assert_response(response, 401, [{"code": "invalid_credentials.missing"}])
Example #57
0
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}])
Example #58
0
def test_error_retrieve_unauthorized(client):
    response = client.get("/widgets/1?user_id=bar")
    assert_response(response, 404)
Example #59
0
def test_default_code(client, path):
    response = client.get(path)
    assert_response(response, 400, [{
        'code': 'bad_request',
    }])
Example #60
0
def test_error_retrieve_bearer_malformed_header(client):
    response = client.get("/widgets_bearer/1",
                          headers={"Authorization": "BearerXXX"})
    assert_response(response, 401, [{"code": "invalid_authorization"}])