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