def test_basePath_works(httprettified, swagger_dict): swagger_dict["basePath"] = "/append" register_spec(swagger_dict) register_get("http://localhost/append/test_http?test_param=foo") resource = SwaggerClient.from_url(API_DOCS_URL).api_test resource.testHTTP(test_param="foo").result() assert ["foo"] == httpretty.last_request().querystring['test_param']
def test_default_value_in_request(httprettified, swagger_dict): swagger_dict['paths']['/test_http']['get']['parameters'][0]['default'] = 'X' register_spec(swagger_dict) register_get("http://localhost/test_http?") resource = SwaggerClient.from_url(API_DOCS_URL).api_test resource.testHTTP().result() assert ['X'] == httpretty.last_request().querystring['test_param']
def test_invalid_type_in_response_raises_ValidationError( httprettified, swagger_dict, sample_model): register_spec(swagger_dict) register_get("http://localhost/test_http", body='"NOT_COMPLEX_TYPE"') with pytest.raises(ValidationError) as excinfo: SwaggerClient.from_url(API_DOCS_URL).api_test.testHTTP().result() assert "'NOT_COMPLEX_TYPE' is not of type" in str(excinfo.value)
async def test_correct_route_with_basePath_no_slash(swagger_dict, http_client): register_get("http://localhost/lame/test/test_http?test_param=foo", body=u'""') swagger_dict["basePath"] = "/lame/test" register_spec(swagger_dict) client = await swagger_client(http_client) assert await client.api_test.testHTTP(test_param="foo").result() is None
async def test_basePath_works(swagger_dict, http_client): swagger_dict["basePath"] = "/append" register_spec(swagger_dict) register_get("http://localhost/append/test_http?test_param=foo") client = await swagger_client(http_client) await client.api_test.testHTTP(test_param="foo").result() assert ["foo"] == HTTPretty.last_request.querystring['test_param']
def test_hostname_if_passed_overrides_origin_url(httprettified, swagger_dict): register_get("http://foo/test_http?", body='') swagger_dict['host'] = 'foo' register_spec(swagger_dict) resource = SwaggerClient.from_url(API_DOCS_URL).api_test resource.testHTTP(test_param="foo").result() assert ["foo"] == httpretty.last_request().querystring['test_param']
def test_correct_route_with_basePath_no_slash(httprettified, swagger_dict): register_get("http://localhost/lame/test/test_http?test_param=foo", body=u'""') swagger_dict["basePath"] = "/lame/test" register_spec(swagger_dict) resource = SwaggerClient.from_url(API_DOCS_URL).api_test assert resource.testHTTP(test_param="foo").result() is None
async def test_hostname_if_passed_overrides_origin_url(swagger_dict, http_client): register_get("http://foo/test_http?", body='') swagger_dict['host'] = 'foo' register_spec(swagger_dict) client = await swagger_client(http_client) await client.api_test.testHTTP(test_param="foo").result() assert ["foo"] == HTTPretty.last_request.querystring['test_param']
def test_default_value_in_request(httprettified, swagger_dict): swagger_dict['paths']['/test_http']['get']['parameters'][0][ 'default'] = 'X' register_spec(swagger_dict) register_get("http://localhost/test_http?") resource = SwaggerClient.from_url(API_DOCS_URL).api_test resource.testHTTP().result() assert ['X'] == httpretty.last_request().querystring['test_param']
def test_correct_route_with_basePath_no_slash(httprettified, swagger_dict): register_get( "http://localhost/lame/test/test_http?test_param=foo", body=u'""') swagger_dict["basePath"] = "/lame/test" register_spec(swagger_dict) resource = SwaggerClient.from_url(API_DOCS_URL).api_test assert resource.testHTTP(test_param="foo").result() is None
async def test_invalid_type_in_response_raises_ValidationError( swagger_dict, sample_model, http_client): register_spec(swagger_dict) register_get("http://localhost/test_http", body='"NOT_COMPLEX_TYPE"') client = await swagger_client(http_client) with pytest.raises(ValidationError) as excinfo: await client.api_test.testHTTP().result() assert "'NOT_COMPLEX_TYPE' is not of type" in str(excinfo.value)
def test_error_on_wrong_type_inside_complex_type(httprettified, swagger_dict, sample_model): register_spec(swagger_dict) sample_model["id"] = "Not Integer" register_get("http://localhost/test_http", body=json.dumps(sample_model)) with pytest.raises(ValidationError) as excinfo: SwaggerClient.from_url(API_DOCS_URL).api_test.testHTTP().result() assert "'Not Integer' is not of type" in str(excinfo.value)
def test_error_on_missing_type_in_model( httprettified, swagger_dict, sample_model): register_spec(swagger_dict) sample_model["schools"][0] = {} # Omit 'name' register_get("http://localhost/test_http", body=simplejson.dumps(sample_model)) with pytest.raises(ValidationError) as excinfo: SwaggerClient.from_url(API_DOCS_URL).api_test.testHTTP().result() assert "'name' is a required property" in str(excinfo.value)
def test_error_on_missing_type_in_model(httprettified, swagger_dict, sample_model): register_spec(swagger_dict) sample_model["schools"][0] = {} # Omit 'name' register_get("http://localhost/test_http", body=json.dumps(sample_model)) with pytest.raises(ValidationError) as excinfo: SwaggerClient.from_url(API_DOCS_URL).api_test.testHTTP().result() assert "'name' is a required property" in str(excinfo.value)
def test_model_missing_required_property_in_response_raises_ValidationError( httprettified, swagger_dict, sample_model): register_spec(swagger_dict) sample_model.pop("id") register_get("http://localhost/test_http", body=simplejson.dumps(sample_model)) with pytest.raises(ValidationError) as excinfo: SwaggerClient.from_url(API_DOCS_URL).api_test.testHTTP().result() assert "'id' is a required property" in str(excinfo.value)
def test_additionalProperty_in_model_in_response(httprettified, swagger_dict, sample_model): register_spec(swagger_dict) sample_model["extra"] = 42 register_get("http://localhost/test_http", body=json.dumps(sample_model)) resource = SwaggerClient.from_url(API_DOCS_URL).api_test result = resource.testHTTP().result() assert result.extra == 42
def test_model_missing_required_property_in_response_raises_ValidationError( httprettified, swagger_dict, sample_model): register_spec(swagger_dict) sample_model.pop("id") register_get("http://localhost/test_http", body=json.dumps(sample_model)) with pytest.raises(ValidationError) as excinfo: SwaggerClient.from_url(API_DOCS_URL).api_test.testHTTP().result() assert "'id' is a required property" in str(excinfo.value)
def test_error_on_wrong_type_inside_complex_type( httprettified, swagger_dict, sample_model): register_spec(swagger_dict) sample_model["id"] = "Not Integer" register_get("http://localhost/test_http", body=simplejson.dumps(sample_model)) with pytest.raises(ValidationError) as excinfo: SwaggerClient.from_url(API_DOCS_URL).api_test.testHTTP().result() assert "'Not Integer' is not of type" in str(excinfo.value)
def test_additionalProperty_in_model_in_response( httprettified, swagger_dict, sample_model): register_spec(swagger_dict) sample_model["extra"] = 42 register_get("http://localhost/test_http", body=simplejson.dumps(sample_model)) resource = SwaggerClient.from_url(API_DOCS_URL).api_test result = resource.testHTTP().result() assert result.extra == 42
async def test_model_missing_required_property_in_response_raises_ValidationError( swagger_dict, sample_model, http_client): register_spec(swagger_dict) sample_model.pop("id") register_get("http://localhost/test_http", body=json.dumps(sample_model)) client = await swagger_client(http_client) with pytest.raises(ValidationError) as excinfo: await client.api_test.testHTTP().result() assert "'id' is a required property" in str(excinfo.value)
async def test_additionalProperty_in_model_in_response(swagger_dict, sample_model, http_client): register_spec(swagger_dict) sample_model["extra"] = 42 register_get("http://localhost/test_http", body=json.dumps(sample_model)) client = await swagger_client(http_client) result = await client.api_test.testHTTP().result() assert result.extra == 42
async def test_default_value_not_in_request(swagger_dict, http_client): # Default should be applied on the server side so no need to send it in # the request. swagger_dict['paths']['/test_http']['get']['parameters'][0]['default'] = 'X' register_spec(swagger_dict) register_get('http://localhost/test_http?') client = await swagger_client(http_client) await client.api_test.testHTTP().result() assert 'test_param' not in HTTPretty.last_request.querystring
def test_default_value_not_in_request(httprettified, swagger_dict): # Default should be applied on the server side so no need to send it in # the request. swagger_dict['paths']['/test_http']['get']['parameters'][0]['default'] = 'X' register_spec(swagger_dict) register_get("http://localhost/test_http?") resource = SwaggerClient.from_url(API_DOCS_URL).api_test resource.testHTTP().result() assert 'test_param' not in httpretty.last_request().querystring
async def test_error_on_missing_type_in_model(swagger_dict, sample_model, http_client): register_spec(swagger_dict) sample_model["schools"][0] = {} # Omit 'name' register_get("http://localhost/test_http", body=json.dumps(sample_model)) client = await swagger_client(http_client) with pytest.raises(ValidationError) as excinfo: await client.api_test.testHTTP().result() assert "'name' is a required property" in str(excinfo.value)
async def test_error_on_wrong_type_inside_complex_type(swagger_dict, sample_model, http_client): register_spec(swagger_dict) sample_model["id"] = "Not Integer" register_get("http://localhost/test_http", body=json.dumps(sample_model)) client = await swagger_client(http_client) with pytest.raises(ValidationError) as excinfo: await client.api_test.testHTTP().result() assert "'Not Integer' is not of type" in str(excinfo.value)
def test_parameter_in_path_of_request(httprettified, swagger_dict): path_param_spec = {"in": "path", "name": "param_id", "type": "string"} paths_spec = swagger_dict['paths'] paths_spec['/test_http/{param_id}'] = paths_spec.pop('/test_http') paths_spec['/test_http/{param_id}']['get']['parameters'].append( path_param_spec) register_spec(swagger_dict) register_get('http://localhost/test_http/42?test_param=foo') resource = SwaggerClient.from_url(API_DOCS_URL).api_test assert resource.testHTTP(test_param="foo", param_id="42").result() is None
def test_default_value_not_in_request(httprettified, swagger_dict): # Default should be applied on the server side so no need to send it in # the request. swagger_dict['paths']['/test_http']['get']['parameters'][0][ 'default'] = 'X' register_spec(swagger_dict) register_get('http://localhost/test_http?') resource = SwaggerClient.from_url(API_DOCS_URL).api_test resource.testHTTP().result() assert 'test_param' not in httpretty.last_request().querystring
def test_500_error_raises_HTTPError(httprettified, swagger_dict): register_spec(swagger_dict) register_get('http://localhost/test_http?test_param=foo', status=500) with pytest.raises(HTTPError) as excinfo: _resource().testHTTP(test_param='foo').result() match_str = '500 Internal Server Error' assert match_str in str(excinfo.value) response_text = '{"message": "HTTPretty :)"}' assert response_text in str(excinfo.value)
def test_model_in_response(httprettified, swagger_dict, sample_model): register_spec(swagger_dict) register_get("http://localhost/test_http", body=json.dumps(sample_model)) client = SwaggerClient.from_url(API_DOCS_URL) result = client.api_test.testHTTP().result() User = client.get_model('User') School = client.get_model('School') assert isinstance(result, User) for school in result.schools: assert isinstance(school, School) assert User(id=42, schools=[School(name="School1"), School(name="School2")]) == result
async def test_model_in_response(swagger_dict, sample_model, spec_type, http_client): register_spec(swagger_dict, spec_type=spec_type) register_get("http://localhost/test_http", body=json.dumps(sample_model)) client = await swagger_client(http_client) result = await client.api_test.testHTTP().result() User = client.get_model('User') School = client.get_model('School') assert isinstance(result, User) for school in result.schools: assert isinstance(school, School) assert User(id=42, schools=[School(name="School1"), School(name="School2")]) == result
def test_parameter_in_path_of_request(httprettified, swagger_dict): path_param_spec = { "in": "path", "name": "param_id", "type": "string" } paths_spec = swagger_dict['paths'] paths_spec['/test_http/{param_id}'] = paths_spec.pop('/test_http') paths_spec['/test_http/{param_id}']['get']['parameters'].append( path_param_spec) register_spec(swagger_dict) register_get('http://localhost/test_http/42?test_param=foo') resource = SwaggerClient.from_url(API_DOCS_URL).api_test assert resource.testHTTP(test_param="foo", param_id="42").result() is None
async def test_parameter_in_path_of_request(swagger_dict, http_client): path_param_spec = { 'in': 'path', 'name': 'param_id', 'required': True, 'type': 'string', } paths_spec = swagger_dict['paths'] paths_spec['/test_http/{param_id}'] = paths_spec.pop('/test_http') paths_spec['/test_http/{param_id}']['get']['parameters'].append( path_param_spec) register_spec(swagger_dict) register_get('http://localhost/test_http/42?test_param=foo') client = await swagger_client(http_client) assert await client.api_test.testHTTP(test_param='foo', param_id='42').result() is None
def test_parameter_in_path_of_request(httprettified, swagger_dict): path_param_spec = { 'in': 'path', 'name': 'param_id', 'required': True, 'type': 'string', } paths_spec = swagger_dict['paths'] paths_spec['/test_http/{param_id}'] = paths_spec.pop('/test_http') paths_spec['/test_http/{param_id}']['get']['parameters'].append( path_param_spec) register_spec(swagger_dict) register_get('http://localhost/test_http/42?test_param=foo') resource = SwaggerClient.from_url(API_DOCS_URL).api_test assert resource.testHTTP(test_param='foo', param_id='42').result() is None
def test_model_in_response(httprettified, swagger_dict, sample_model): register_spec(swagger_dict) register_get("http://localhost/test_http", body=json.dumps(sample_model)) client = SwaggerClient.from_url(API_DOCS_URL) result = client.api_test.testHTTP().result() User = client.get_model('User') School = client.get_model('School') assert isinstance(result, User) for school in result.schools: assert isinstance(school, School) assert User( id=42, schools=[ School(name="School1"), School(name="School2") ]) == result
def test_array_with_collection_format_in_path_of_request( httprettified, swagger_dict): path_param_spec = { 'in': 'path', 'name': 'param_ids', 'type': 'array', 'items': { 'type': 'integer' }, 'collectionFormat': 'csv', } swagger_dict['paths']['/test_http/{param_ids}'] = \ swagger_dict['paths'].pop('/test_http') swagger_dict['paths']['/test_http/{param_ids}']['get']['parameters'] = \ [path_param_spec] register_spec(swagger_dict) register_get('http://localhost/test_http/40,41,42') resource = SwaggerClient.from_url(API_DOCS_URL).api_test assert resource.testHTTP(param_ids=[40, 41, 42]).result() is None
async def test_array_with_collection_format_in_path_of_request( swagger_dict, http_client): path_param_spec = { 'in': 'path', 'name': 'param_ids', 'type': 'array', 'items': { 'type': 'integer' }, 'collectionFormat': 'csv', 'required': True, } swagger_dict['paths']['/test_http/{param_ids}'] = \ swagger_dict['paths'].pop('/test_http') swagger_dict['paths']['/test_http/{param_ids}']['get']['parameters'] = \ [path_param_spec] register_spec(swagger_dict) register_get('http://localhost/test_http/40,41,42') client = await swagger_client(http_client) assert await client.api_test.testHTTP(param_ids=[40, 41, 42]).result() is None
def test_500_error_raises_HTTPError(httprettified, swagger_dict): register_spec(swagger_dict) register_get('http://localhost/test_http?test_param=foo', status=500) assert_raises_and_matches(HTTPError, '500 Internal Server Error')
async def test_500_error_raises_HTTPError(swagger_dict, http_client): register_spec(swagger_dict) register_get('http://localhost/test_http?test_param=foo', status=500) await assert_raises_and_matches(HTTPError, '500 Internal Server Error', http_client)
def test_500_error_raises_HTTPError(httprettified, swagger_dict): register_spec(swagger_dict) register_get('http://localhost/test_http?test_param=foo', status=500) assert_raises_and_matches(HTTPError, '500 Server Error')