Ejemplo n.º 1
0
def test_valid_headers(base_url, swagger_20):
    endpoint = Endpoint(
        "/api/success",
        "GET",
        definition={},
        schema=swagger_20,
        base_url=base_url,
        headers={
            "properties": {
                "api_key": {
                    "name": "api_key",
                    "in": "header",
                    "type": "string"
                }
            },
            "additionalProperties": False,
            "type": "object",
            "required": ["api_key"],
        },
    )

    @given(case=get_case_strategy(endpoint))
    @settings(suppress_health_check=[HealthCheck.filter_too_much],
              deadline=None)
    def inner(case):
        case.call()
Ejemplo n.º 2
0
def test_valid_headers(base_url, swagger_20, definition):
    endpoint = Endpoint(
        "/api/success",
        "GET",
        definition=EndpointDefinition({}, {}, "foo"),
        schema=swagger_20,
        base_url=base_url,
        headers={
            "properties": {
                "api_key": definition
            },
            "additionalProperties": False,
            "type": "object",
            "required": ["api_key"],
        },
    )

    @given(case=get_case_strategy(endpoint))
    @settings(suppress_health_check=[
        HealthCheck.filter_too_much, HealthCheck.too_slow
    ],
              deadline=None,
              max_examples=10)
    def inner(case):
        case.call()
Ejemplo n.º 3
0
def test_invalid_body_in_get():
    endpoint = Endpoint(
        path="/foo",
        method="GET",
        definition={},
        body={"required": ["foo"], "type": "object", "properties": {"foo": {"type": "string"}}},
    )
    with pytest.raises(InvalidSchema, match=r"^Body parameters are defined for GET request.$"):
        get_case_strategy(endpoint)
Ejemplo n.º 4
0
def test_invalid_body_in_get_disable_validation(simple_schema):
    schema = schemathesis.from_dict(simple_schema, validate_schema=False)
    endpoint = Endpoint(
        path="/foo",
        method="GET",
        definition=EndpointDefinition({}, {}, "foo"),
        schema=schema,
        body={
            "required": ["foo"],
            "type": "object",
            "properties": {
                "foo": {
                    "type": "string"
                }
            }
        },
    )
    strategy = get_case_strategy(endpoint)

    @given(strategy)
    @settings(max_examples=1)
    def test(case):
        assert case.body is not None

    test()
Ejemplo n.º 5
0
def test_valid_headers(base_url):
    endpoint = Endpoint(
        "/api/success",
        "GET",
        definition={},
        base_url=base_url,
        headers={
            "properties": {"api_key": {"name": "api_key", "in": "header", "type": "string"}},
            "additionalProperties": False,
            "type": "object",
            "required": ["api_key"],
        },
    )

    @given(case=get_case_strategy(endpoint))
    def inner(case):
        case.call()
Ejemplo n.º 6
0
def test_default_strategies_binary():
    endpoint = make_endpoint(
        form_data={
            "required": ["file"],
            "type": "object",
            "additionalProperties": False,
            "properties": {"file": {"type": "string", "format": "binary"}},
        }
    )
    result = get_case_strategy(endpoint).example()
    assert isinstance(result.form_data["file"], bytes)
Ejemplo n.º 7
0
def test_default_strategies_bytes():
    endpoint = make_endpoint(
        body={
            "required": ["byte"],
            "type": "object",
            "additionalProperties": False,
            "properties": {"byte": {"type": "string", "format": "byte"}},
        }
    )
    result = get_case_strategy(endpoint).example()
    assert isinstance(result.body["byte"], str)
    b64decode(result.body["byte"])
Ejemplo n.º 8
0
def test_custom_strategies():
    register_string_format("even_4_digits", strategies.from_regex(r"\A[0-9]{4}\Z").filter(lambda x: int(x) % 2 == 0))
    endpoint = make_endpoint(
        query={
            "required": ["id"],
            "type": "object",
            "additionalProperties": False,
            "properties": {"id": {"type": "string", "format": "even_4_digits"}},
        }
    )
    result = get_case_strategy(endpoint).example()
    assert len(result.query["id"]) == 4
    assert int(result.query["id"]) % 2 == 0