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_object_arguments={}, object_get_arguments={} ) arguments = self.viewset.object_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.object_arguments(self.resource, "PUT") schema = arguments["schema"] self.assertIn("body", schema) def test_plural_deserialize_sort(self): arguments = self.viewset.plural_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_plural_get_deserialize_fields(self): arguments = self.viewset.plural_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_object_deserialize_fields(self): arguments = self.viewset.object_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_object_validate_response_behavior(self): arguments = self.viewset.plural_arguments(self.resource, "PATCH") schema = arguments["schema"] invalid = {"header": {"Response-Behavior": "impolite"}} self.assertRaises(colander.Invalid, schema.deserialize, invalid)
def test_class_parameters_are_used_for_plural_arguments(self, mocked): default_arguments = {"cors_headers": mock.sentinel.cors_headers} default_get_arguments = {"accept": mock.sentinel.accept} default_plural_arguments = {"cors_origins": mock.sentinel.cors_origins} plural_get_arguments = {"error_handler": mock.sentinel.error_handler} viewset = ViewSet( default_arguments=default_arguments, default_get_arguments=default_get_arguments, default_plural_arguments=default_plural_arguments, plural_get_arguments=plural_get_arguments, ) viewset.responses = mock.MagicMock() arguments = viewset.plural_arguments(mock.MagicMock(), "get") self.assertDictEqual( arguments, { "schema": mocked().bind(), "accept": mock.sentinel.accept, "cors_headers": mock.sentinel.cors_headers, "cors_origins": mock.sentinel.cors_origins, "error_handler": mock.sentinel.error_handler, "validators": [colander_validator], "response_schemas": viewset.responses.get_and_bind(), }, )
def test_default_arguments_are_copied_before_being_returned(self): original_arguments = {} viewset = ViewSet(plural_get_arguments=original_arguments) viewset.responses = mock.MagicMock() arguments = viewset.plural_arguments(mock.MagicMock(), "GET") self.assertEqual(original_arguments, {}) self.assertNotEquals(original_arguments, arguments)
def test_a_default_schema_is_added_when_method_doesnt_match(self, mocked): viewset = ViewSet() resource = mock.MagicMock() viewset.responses = mock.MagicMock() mocked.Mapping.return_value = mock.sentinel.default_schema arguments = viewset.plural_arguments(resource, "GET") self.assertNotEqual(arguments["schema"], resource.schema) mocked.assert_called_with()
def test_schema_is_added_when_uppercase_method_matches(self): viewset = ViewSet(plural_methods=("GET", "DELETE")) viewset.responses = mock.MagicMock() arguments = viewset.plural_arguments(mock.MagicMock(), "get") self.assertIn("schema", arguments)
def test_schema_is_added_when_method_matches(self): viewset = ViewSet() viewset.responses = mock.MagicMock() resource = mock.MagicMock() arguments = viewset.plural_arguments(resource, "GET") self.assertIn("schema", arguments)
def test_permission_private_is_set_by_default(self): viewset = ViewSet() viewset.responses = mock.MagicMock() args = viewset.plural_arguments(mock.MagicMock(), "GET") self.assertEqual(args["permission"], "private")
def test_permission_dynamic_is_set_by_default(self): viewset = ViewSet() viewset.responses = mock.MagicMock() resource = mock.MagicMock() args = viewset.plural_arguments(resource, "GET") self.assertEqual(args["permission"], "dynamic")