class TestViewsetBindedSchemas(unittest.TestCase): def setUp(self): self.viewset = ViewSet() self.viewset.responses = mock.MagicMock() self.resource = mock.MagicMock() def test_request_schemas_have_header_and_querystring(self): self.viewset = ViewSet( default_get_arguments={}, default_record_arguments={}, record_get_arguments={} ) arguments = self.viewset.record_arguments(self.resource, 'GET') schema = arguments['schema'] self.assertIn('querystring', schema) self.assertIn('header', schema) def test_payload_request_schemas_have_a_body(self): arguments = self.viewset.record_arguments(self.resource, 'PUT') schema = arguments['schema'] self.assertIn('body', schema) def test_collection_deserialize_sort(self): arguments = self.viewset.collection_arguments(self.resource, 'DELETE') schema = arguments['schema'] value = {'querystring': {'_sort': 'foo,-bar'}} deserialized = schema.deserialize(value) expected = {'querystring': {'_sort': ['foo', '-bar']}} self.assertEquals(deserialized, expected) def test_get_collection_deserialize_fields(self): arguments = self.viewset.collection_arguments(self.resource, 'GET') schema = arguments['schema'] value = {'querystring': {'_fields': 'foo,bar'}} deserialized = schema.deserialize(value) expected = {'querystring': {'_fields': ['foo', 'bar']}} self.assertEquals(deserialized, expected) def test_get_record_deserialize_fields(self): arguments = self.viewset.record_arguments(self.resource, 'GET') schema = arguments['schema'] value = {'querystring': {'_fields': 'foo,bar'}} deserialized = schema.deserialize(value) expected = {'querystring': {'_fields': ['foo', 'bar']}} self.assertEquals(deserialized, expected) def test_patch_record_validate_response_behavior(self): arguments = self.viewset.collection_arguments(self.resource, 'PATCH') schema = arguments['schema'] invalid = {'header': {'Response-Behavior': 'impolite'}} self.assertRaises(colander.Invalid, schema.deserialize, invalid)
class TestViewsetBindedSchemas(unittest.TestCase): def setUp(self): self.viewset = ViewSet() self.viewset.responses = mock.MagicMock() self.resource = mock.MagicMock() def test_request_schemas_have_header_and_querystring(self): self.viewset = ViewSet(default_get_arguments={}, default_record_arguments={}, record_get_arguments={}) arguments = self.viewset.record_arguments(self.resource, "GET") schema = arguments["schema"] self.assertIn("querystring", schema) self.assertIn("header", schema) def test_payload_request_schemas_have_a_body(self): arguments = self.viewset.record_arguments(self.resource, "PUT") schema = arguments["schema"] self.assertIn("body", schema) def test_collection_deserialize_sort(self): arguments = self.viewset.collection_arguments(self.resource, "DELETE") schema = arguments["schema"] value = {"querystring": {"_sort": "foo,-bar"}} deserialized = schema.deserialize(value) expected = {"querystring": {"_sort": ["foo", "-bar"]}} self.assertEqual(deserialized, expected) def test_get_collection_deserialize_fields(self): arguments = self.viewset.collection_arguments(self.resource, "GET") schema = arguments["schema"] value = {"querystring": {"_fields": "foo,bar"}} deserialized = schema.deserialize(value) expected = {"querystring": {"_fields": ["foo", "bar"]}} self.assertEqual(deserialized, expected) def test_get_record_deserialize_fields(self): arguments = self.viewset.record_arguments(self.resource, "GET") schema = arguments["schema"] value = {"querystring": {"_fields": "foo,bar"}} deserialized = schema.deserialize(value) expected = {"querystring": {"_fields": ["foo", "bar"]}} self.assertEqual(deserialized, expected) def test_patch_record_validate_response_behavior(self): arguments = self.viewset.collection_arguments(self.resource, "PATCH") schema = arguments["schema"] invalid = {"header": {"Response-Behavior": "impolite"}} self.assertRaises(colander.Invalid, schema.deserialize, invalid)
class TestViewsetBindedSchemas(unittest.TestCase): def setUp(self): self.viewset = ViewSet() self.viewset.responses = mock.MagicMock() self.resource = mock.MagicMock() def test_request_schemas_have_header_and_querystring(self): self.viewset = ViewSet( default_get_arguments={}, default_record_arguments={}, record_get_arguments={} ) arguments = self.viewset.record_arguments(self.resource, "GET") schema = arguments["schema"] self.assertIn("querystring", schema) self.assertIn("header", schema) def test_payload_request_schemas_have_a_body(self): arguments = self.viewset.record_arguments(self.resource, "PUT") schema = arguments["schema"] self.assertIn("body", schema) def test_collection_deserialize_sort(self): arguments = self.viewset.collection_arguments(self.resource, "DELETE") schema = arguments["schema"] value = {"querystring": {"_sort": "foo,-bar"}} deserialized = schema.deserialize(value) expected = {"querystring": {"_sort": ["foo", "-bar"]}} self.assertEqual(deserialized, expected) def test_get_collection_deserialize_fields(self): arguments = self.viewset.collection_arguments(self.resource, "GET") schema = arguments["schema"] value = {"querystring": {"_fields": "foo,bar"}} deserialized = schema.deserialize(value) expected = {"querystring": {"_fields": ["foo", "bar"]}} self.assertEqual(deserialized, expected) def test_get_record_deserialize_fields(self): arguments = self.viewset.record_arguments(self.resource, "GET") schema = arguments["schema"] value = {"querystring": {"_fields": "foo,bar"}} deserialized = schema.deserialize(value) expected = {"querystring": {"_fields": ["foo", "bar"]}} self.assertEqual(deserialized, expected) def test_patch_record_validate_response_behavior(self): arguments = self.viewset.collection_arguments(self.resource, "PATCH") schema = arguments["schema"] invalid = {"header": {"Response-Behavior": "impolite"}} self.assertRaises(colander.Invalid, schema.deserialize, invalid)
def test_class_parameters_overwrite_each_others(self): # Some class parameters should overwrite each others. # The more specifics should prevail over the more generics. # Items annoted with a "<<" are the one that should prevail. default_arguments = { 'cors_origins': mock.sentinel.default_cors_origins, 'error_handler': mock.sentinel.default_error_handler, 'cors_headers': mock.sentinel.default_cors_headers, # << } default_record_arguments = { 'cors_origins': mock.sentinel.default_record_cors_origin, 'error_handler': mock.sentinel.default_record_error_handler, # << } record_get_arguments = { 'cors_origins': mock.sentinel.record_get_cors_origin, # << } viewset = ViewSet( default_arguments=default_arguments, default_record_arguments=default_record_arguments, record_get_arguments=record_get_arguments, ) arguments = viewset.record_arguments(mock.MagicMock, 'get') arguments.pop('schema') self.assertDictEqual( arguments, { 'cors_headers': mock.sentinel.default_cors_headers, 'error_handler': mock.sentinel.default_record_error_handler, 'cors_origins': mock.sentinel.record_get_cors_origin, })
def test_default_arguments_are_used_for_record_arguments(self): default_arguments = { 'cors_headers': mock.sentinel.cors_headers, } default_get_arguments = { 'accept': mock.sentinel.accept, } default_record_arguments = { 'cors_origins': mock.sentinel.record_cors_origins, } record_get_arguments = {'error_handler': mock.sentinel.error_handler} viewset = ViewSet(default_arguments=default_arguments, default_get_arguments=default_get_arguments, default_record_arguments=default_record_arguments, record_get_arguments=record_get_arguments) arguments = viewset.record_arguments(mock.MagicMock, 'get') arguments.pop('schema') self.assertDictEqual( arguments, { 'accept': mock.sentinel.accept, 'cors_headers': mock.sentinel.cors_headers, 'cors_origins': mock.sentinel.record_cors_origins, 'error_handler': mock.sentinel.error_handler, })
def test_default_arguments_are_used_for_record_arguments(self, mocked): default_arguments = { 'cors_headers': mock.sentinel.cors_headers, } default_get_arguments = { 'accept': mock.sentinel.accept, } default_record_arguments = { 'cors_origins': mock.sentinel.record_cors_origins, } record_get_arguments = {'error_handler': mock.sentinel.error_handler} viewset = ViewSet(default_arguments=default_arguments, default_get_arguments=default_get_arguments, default_record_arguments=default_record_arguments, record_get_arguments=record_get_arguments) viewset.responses = mock.MagicMock() arguments = viewset.record_arguments(mock.MagicMock(), 'get') self.assertDictEqual( arguments, { 'schema': mocked().bind(), 'accept': mock.sentinel.accept, 'cors_headers': mock.sentinel.cors_headers, 'cors_origins': mock.sentinel.record_cors_origins, 'error_handler': mock.sentinel.error_handler, 'validators': [colander_validator], 'response_schemas': viewset.responses.get_and_bind() })
def test_default_arguments_are_used_for_record_arguments(self, mocked): default_arguments = {"cors_headers": mock.sentinel.cors_headers} default_get_arguments = {"accept": mock.sentinel.accept} default_record_arguments = { "cors_origins": mock.sentinel.record_cors_origins } record_get_arguments = {"error_handler": mock.sentinel.error_handler} viewset = ViewSet( default_arguments=default_arguments, default_get_arguments=default_get_arguments, default_record_arguments=default_record_arguments, record_get_arguments=record_get_arguments, ) viewset.responses = mock.MagicMock() arguments = viewset.record_arguments(mock.MagicMock(), "get") self.assertDictEqual( arguments, { "schema": mocked().bind(), "accept": mock.sentinel.accept, "cors_headers": mock.sentinel.cors_headers, "cors_origins": mock.sentinel.record_cors_origins, "error_handler": mock.sentinel.error_handler, "validators": [colander_validator], "response_schemas": viewset.responses.get_and_bind(), }, )
def test_service_arguments_arent_inherited_by_record_arguments(self, mocked): service_arguments = { 'description': 'The little book of calm', } default_arguments = { 'cors_headers': mock.sentinel.cors_headers, } viewset = ViewSet( default_arguments=default_arguments, service_arguments=service_arguments, default_record_arguments={}, record_get_arguments={} ) viewset.responses = mock.MagicMock() arguments = viewset.record_arguments(mock.MagicMock(), 'get') self.assertDictEqual( arguments, { 'schema': mocked().bind(), 'cors_headers': mock.sentinel.cors_headers, 'validators': [colander_validator], 'response_schemas': viewset.responses.get_and_bind() } )
def test_class_parameters_overwrite_each_others(self): # Some class parameters should overwrite each others. # The more specifics should prevail over the more generics. # Items annoted with a "<<" are the one that should prevail. default_arguments = { 'cors_origins': mock.sentinel.default_cors_origins, 'error_handler': mock.sentinel.default_error_handler, 'cors_headers': mock.sentinel.default_cors_headers, # << } default_record_arguments = { 'cors_origins': mock.sentinel.default_record_cors_origin, 'error_handler': mock.sentinel.default_record_error_handler, # << } record_get_arguments = { 'cors_origins': mock.sentinel.record_get_cors_origin, # << } viewset = ViewSet( default_arguments=default_arguments, default_record_arguments=default_record_arguments, record_get_arguments=record_get_arguments, ) arguments = viewset.record_arguments(mock.MagicMock, 'get') arguments.pop('schema') self.assertDictEqual( arguments, { 'cors_headers': mock.sentinel.default_cors_headers, 'error_handler': mock.sentinel.default_record_error_handler, 'cors_origins': mock.sentinel.record_get_cors_origin, } )
def test_default_arguments_are_used_for_record_arguments(self, mocked): default_arguments = {"cors_headers": mock.sentinel.cors_headers} default_get_arguments = {"accept": mock.sentinel.accept} default_record_arguments = {"cors_origins": mock.sentinel.record_cors_origins} record_get_arguments = {"error_handler": mock.sentinel.error_handler} viewset = ViewSet( default_arguments=default_arguments, default_get_arguments=default_get_arguments, default_record_arguments=default_record_arguments, record_get_arguments=record_get_arguments, ) viewset.responses = mock.MagicMock() arguments = viewset.record_arguments(mock.MagicMock(), "get") self.assertDictEqual( arguments, { "schema": mocked().bind(), "accept": mock.sentinel.accept, "cors_headers": mock.sentinel.cors_headers, "cors_origins": mock.sentinel.record_cors_origins, "error_handler": mock.sentinel.error_handler, "validators": [colander_validator], "response_schemas": viewset.responses.get_and_bind(), }, )
def test_service_arguments_arent_inherited_by_record_arguments(self): service_arguments = { 'description': 'The little book of calm', } default_arguments = { 'cors_headers': mock.sentinel.cors_headers, } viewset = ViewSet(default_arguments=default_arguments, service_arguments=service_arguments, default_record_arguments={}, record_get_arguments={}) arguments = viewset.record_arguments(mock.MagicMock, 'get') arguments.pop('schema') self.assertDictEqual(arguments, { 'cors_headers': mock.sentinel.cors_headers, })
def test_class_parameters_overwrite_each_others(self, mocked): # Some class parameters should overwrite each others. # The more specifics should prevail over the more generics. # Items annoted with a "<<" are the one that should prevail. default_arguments = { "cors_origins": mock.sentinel.default_cors_origins, "error_handler": mock.sentinel.default_error_handler, "cors_headers": mock.sentinel.default_cors_headers, # << } default_record_arguments = { "cors_origins": mock.sentinel.default_record_cors_origin, "error_handler": mock.sentinel.default_record_error_handler, # << } record_get_arguments = { "cors_origins": mock.sentinel.record_get_cors_origin } # << viewset = ViewSet( default_arguments=default_arguments, default_record_arguments=default_record_arguments, record_get_arguments=record_get_arguments, ) viewset.responses = mock.MagicMock() arguments = viewset.record_arguments(mock.MagicMock(), "get") self.assertDictEqual( arguments, { "schema": mocked().bind(), "cors_headers": mock.sentinel.default_cors_headers, "error_handler": mock.sentinel.default_record_error_handler, "cors_origins": mock.sentinel.record_get_cors_origin, "validators": [colander_validator], "response_schemas": viewset.responses.get_and_bind(), }, )
def test_service_arguments_arent_inherited_by_record_arguments(self, mocked): service_arguments = {"description": "The little book of calm"} default_arguments = {"cors_headers": mock.sentinel.cors_headers} viewset = ViewSet( default_arguments=default_arguments, service_arguments=service_arguments, default_record_arguments={}, record_get_arguments={}, ) viewset.responses = mock.MagicMock() arguments = viewset.record_arguments(mock.MagicMock(), "get") self.assertDictEqual( arguments, { "schema": mocked().bind(), "cors_headers": mock.sentinel.cors_headers, "validators": [colander_validator], "response_schemas": viewset.responses.get_and_bind(), }, )
def test_default_arguments_are_used_for_record_arguments(self): default_arguments = { 'cors_headers': mock.sentinel.cors_headers, } default_get_arguments = { 'accept': mock.sentinel.accept, } default_record_arguments = { 'cors_origins': mock.sentinel.record_cors_origins, } record_get_arguments = { 'error_handler': mock.sentinel.error_handler } viewset = ViewSet( default_arguments=default_arguments, default_get_arguments=default_get_arguments, default_record_arguments=default_record_arguments, record_get_arguments=record_get_arguments ) arguments = viewset.record_arguments(mock.MagicMock, 'get') arguments.pop('schema') self.assertDictEqual( arguments, { 'accept': mock.sentinel.accept, 'cors_headers': mock.sentinel.cors_headers, 'cors_origins': mock.sentinel.record_cors_origins, 'error_handler': mock.sentinel.error_handler, } )
def test_class_parameters_overwrite_each_others(self, mocked): # Some class parameters should overwrite each others. # The more specifics should prevail over the more generics. # Items annoted with a "<<" are the one that should prevail. default_arguments = { "cors_origins": mock.sentinel.default_cors_origins, "error_handler": mock.sentinel.default_error_handler, "cors_headers": mock.sentinel.default_cors_headers, # << } default_record_arguments = { "cors_origins": mock.sentinel.default_record_cors_origin, "error_handler": mock.sentinel.default_record_error_handler, # << } record_get_arguments = {"cors_origins": mock.sentinel.record_get_cors_origin} # << viewset = ViewSet( default_arguments=default_arguments, default_record_arguments=default_record_arguments, record_get_arguments=record_get_arguments, ) viewset.responses = mock.MagicMock() arguments = viewset.record_arguments(mock.MagicMock(), "get") self.assertDictEqual( arguments, { "schema": mocked().bind(), "cors_headers": mock.sentinel.default_cors_headers, "error_handler": mock.sentinel.default_record_error_handler, "cors_origins": mock.sentinel.record_get_cors_origin, "validators": [colander_validator], "response_schemas": viewset.responses.get_and_bind(), }, )
def test_service_arguments_arent_inherited_by_record_arguments(self): service_arguments = { 'description': 'The little book of calm', } default_arguments = { 'cors_headers': mock.sentinel.cors_headers, } viewset = ViewSet( default_arguments=default_arguments, service_arguments=service_arguments, default_record_arguments={}, record_get_arguments={} ) arguments = viewset.record_arguments(mock.MagicMock, 'get') arguments.pop('schema') self.assertDictEqual( arguments, { 'cors_headers': mock.sentinel.cors_headers, } )
def test_service_arguments_arent_inherited_by_record_arguments( self, mocked): service_arguments = {"description": "The little book of calm"} default_arguments = {"cors_headers": mock.sentinel.cors_headers} viewset = ViewSet( default_arguments=default_arguments, service_arguments=service_arguments, default_record_arguments={}, record_get_arguments={}, ) viewset.responses = mock.MagicMock() arguments = viewset.record_arguments(mock.MagicMock(), "get") self.assertDictEqual( arguments, { "schema": mocked().bind(), "cors_headers": mock.sentinel.cors_headers, "validators": [colander_validator], "response_schemas": viewset.responses.get_and_bind(), }, )