From 4b04aed2dac60aad2f1c9ae8b0876b93824659d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20T=C3=B6rnqvist?= Date: Sat, 18 May 2013 19:11:12 +0300 Subject: [PATCH 1/8] Rename test case files --- .../tests/{authentication.py => test_authentication.py} | 0 rest_framework/tests/{breadcrumbs.py => test_breadcrumbs.py} | 0 rest_framework/tests/{decorators.py => test_decorators.py} | 0 rest_framework/tests/{description.py => test_description.py} | 0 rest_framework/tests/{fields.py => test_fields.py} | 0 rest_framework/tests/{files.py => test_files.py} | 0 rest_framework/tests/{filters.py => test_filters.py} | 0 .../tests/{genericrelations.py => test_genericrelations.py} | 0 rest_framework/tests/{generics.py => test_generics.py} | 0 rest_framework/tests/{htmlrenderer.py => test_htmlrenderer.py} | 0 .../{hyperlinkedserializers.py => test_hyperlinkedserializers.py} | 0 .../{multitable_inheritance.py => test_multitable_inheritance.py} | 0 rest_framework/tests/{negotiation.py => test_negotiation.py} | 0 rest_framework/tests/{pagination.py => test_pagination.py} | 0 rest_framework/tests/{parsers.py => test_parsers.py} | 0 rest_framework/tests/{permissions.py => test_permissions.py} | 0 rest_framework/tests/{relations.py => test_relations.py} | 0 .../tests/{relations_hyperlink.py => test_relations_hyperlink.py} | 0 .../tests/{relations_nested.py => test_relations_nested.py} | 0 rest_framework/tests/{relations_pk.py => test_relations_pk.py} | 0 .../tests/{relations_slug.py => test_relations_slug.py} | 0 rest_framework/tests/{renderers.py => test_renderers.py} | 0 rest_framework/tests/{request.py => test_request.py} | 0 rest_framework/tests/{response.py => test_response.py} | 0 rest_framework/tests/{reverse.py => test_reverse.py} | 0 rest_framework/tests/{routers.py => test_routers.py} | 0 rest_framework/tests/{serializer.py => test_serializer.py} | 0 .../{serializer_bulk_update.py => test_serializer_bulk_update.py} | 0 .../tests/{serializer_nested.py => test_serializer_nested.py} | 0 rest_framework/tests/{settings.py => test_settings.py} | 0 rest_framework/tests/{testcases.py => test_testcases.py} | 0 rest_framework/tests/{throttling.py => test_throttling.py} | 0 rest_framework/tests/{urlpatterns.py => test_urlpatterns.py} | 0 rest_framework/tests/{validation.py => test_validation.py} | 0 rest_framework/tests/{views.py => test_views.py} | 0 35 files changed, 0 insertions(+), 0 deletions(-) rename rest_framework/tests/{authentication.py => test_authentication.py} (100%) rename rest_framework/tests/{breadcrumbs.py => test_breadcrumbs.py} (100%) rename rest_framework/tests/{decorators.py => test_decorators.py} (100%) rename rest_framework/tests/{description.py => test_description.py} (100%) rename rest_framework/tests/{fields.py => test_fields.py} (100%) rename rest_framework/tests/{files.py => test_files.py} (100%) rename rest_framework/tests/{filters.py => test_filters.py} (100%) rename rest_framework/tests/{genericrelations.py => test_genericrelations.py} (100%) rename rest_framework/tests/{generics.py => test_generics.py} (100%) rename rest_framework/tests/{htmlrenderer.py => test_htmlrenderer.py} (100%) rename rest_framework/tests/{hyperlinkedserializers.py => test_hyperlinkedserializers.py} (100%) rename rest_framework/tests/{multitable_inheritance.py => test_multitable_inheritance.py} (100%) rename rest_framework/tests/{negotiation.py => test_negotiation.py} (100%) rename rest_framework/tests/{pagination.py => test_pagination.py} (100%) rename rest_framework/tests/{parsers.py => test_parsers.py} (100%) rename rest_framework/tests/{permissions.py => test_permissions.py} (100%) rename rest_framework/tests/{relations.py => test_relations.py} (100%) rename rest_framework/tests/{relations_hyperlink.py => test_relations_hyperlink.py} (100%) rename rest_framework/tests/{relations_nested.py => test_relations_nested.py} (100%) rename rest_framework/tests/{relations_pk.py => test_relations_pk.py} (100%) rename rest_framework/tests/{relations_slug.py => test_relations_slug.py} (100%) rename rest_framework/tests/{renderers.py => test_renderers.py} (100%) rename rest_framework/tests/{request.py => test_request.py} (100%) rename rest_framework/tests/{response.py => test_response.py} (100%) rename rest_framework/tests/{reverse.py => test_reverse.py} (100%) rename rest_framework/tests/{routers.py => test_routers.py} (100%) rename rest_framework/tests/{serializer.py => test_serializer.py} (100%) rename rest_framework/tests/{serializer_bulk_update.py => test_serializer_bulk_update.py} (100%) rename rest_framework/tests/{serializer_nested.py => test_serializer_nested.py} (100%) rename rest_framework/tests/{settings.py => test_settings.py} (100%) rename rest_framework/tests/{testcases.py => test_testcases.py} (100%) rename rest_framework/tests/{throttling.py => test_throttling.py} (100%) rename rest_framework/tests/{urlpatterns.py => test_urlpatterns.py} (100%) rename rest_framework/tests/{validation.py => test_validation.py} (100%) rename rest_framework/tests/{views.py => test_views.py} (100%) diff --git a/rest_framework/tests/authentication.py b/rest_framework/tests/test_authentication.py similarity index 100% rename from rest_framework/tests/authentication.py rename to rest_framework/tests/test_authentication.py diff --git a/rest_framework/tests/breadcrumbs.py b/rest_framework/tests/test_breadcrumbs.py similarity index 100% rename from rest_framework/tests/breadcrumbs.py rename to rest_framework/tests/test_breadcrumbs.py diff --git a/rest_framework/tests/decorators.py b/rest_framework/tests/test_decorators.py similarity index 100% rename from rest_framework/tests/decorators.py rename to rest_framework/tests/test_decorators.py diff --git a/rest_framework/tests/description.py b/rest_framework/tests/test_description.py similarity index 100% rename from rest_framework/tests/description.py rename to rest_framework/tests/test_description.py diff --git a/rest_framework/tests/fields.py b/rest_framework/tests/test_fields.py similarity index 100% rename from rest_framework/tests/fields.py rename to rest_framework/tests/test_fields.py diff --git a/rest_framework/tests/files.py b/rest_framework/tests/test_files.py similarity index 100% rename from rest_framework/tests/files.py rename to rest_framework/tests/test_files.py diff --git a/rest_framework/tests/filters.py b/rest_framework/tests/test_filters.py similarity index 100% rename from rest_framework/tests/filters.py rename to rest_framework/tests/test_filters.py diff --git a/rest_framework/tests/genericrelations.py b/rest_framework/tests/test_genericrelations.py similarity index 100% rename from rest_framework/tests/genericrelations.py rename to rest_framework/tests/test_genericrelations.py diff --git a/rest_framework/tests/generics.py b/rest_framework/tests/test_generics.py similarity index 100% rename from rest_framework/tests/generics.py rename to rest_framework/tests/test_generics.py diff --git a/rest_framework/tests/htmlrenderer.py b/rest_framework/tests/test_htmlrenderer.py similarity index 100% rename from rest_framework/tests/htmlrenderer.py rename to rest_framework/tests/test_htmlrenderer.py diff --git a/rest_framework/tests/hyperlinkedserializers.py b/rest_framework/tests/test_hyperlinkedserializers.py similarity index 100% rename from rest_framework/tests/hyperlinkedserializers.py rename to rest_framework/tests/test_hyperlinkedserializers.py diff --git a/rest_framework/tests/multitable_inheritance.py b/rest_framework/tests/test_multitable_inheritance.py similarity index 100% rename from rest_framework/tests/multitable_inheritance.py rename to rest_framework/tests/test_multitable_inheritance.py diff --git a/rest_framework/tests/negotiation.py b/rest_framework/tests/test_negotiation.py similarity index 100% rename from rest_framework/tests/negotiation.py rename to rest_framework/tests/test_negotiation.py diff --git a/rest_framework/tests/pagination.py b/rest_framework/tests/test_pagination.py similarity index 100% rename from rest_framework/tests/pagination.py rename to rest_framework/tests/test_pagination.py diff --git a/rest_framework/tests/parsers.py b/rest_framework/tests/test_parsers.py similarity index 100% rename from rest_framework/tests/parsers.py rename to rest_framework/tests/test_parsers.py diff --git a/rest_framework/tests/permissions.py b/rest_framework/tests/test_permissions.py similarity index 100% rename from rest_framework/tests/permissions.py rename to rest_framework/tests/test_permissions.py diff --git a/rest_framework/tests/relations.py b/rest_framework/tests/test_relations.py similarity index 100% rename from rest_framework/tests/relations.py rename to rest_framework/tests/test_relations.py diff --git a/rest_framework/tests/relations_hyperlink.py b/rest_framework/tests/test_relations_hyperlink.py similarity index 100% rename from rest_framework/tests/relations_hyperlink.py rename to rest_framework/tests/test_relations_hyperlink.py diff --git a/rest_framework/tests/relations_nested.py b/rest_framework/tests/test_relations_nested.py similarity index 100% rename from rest_framework/tests/relations_nested.py rename to rest_framework/tests/test_relations_nested.py diff --git a/rest_framework/tests/relations_pk.py b/rest_framework/tests/test_relations_pk.py similarity index 100% rename from rest_framework/tests/relations_pk.py rename to rest_framework/tests/test_relations_pk.py diff --git a/rest_framework/tests/relations_slug.py b/rest_framework/tests/test_relations_slug.py similarity index 100% rename from rest_framework/tests/relations_slug.py rename to rest_framework/tests/test_relations_slug.py diff --git a/rest_framework/tests/renderers.py b/rest_framework/tests/test_renderers.py similarity index 100% rename from rest_framework/tests/renderers.py rename to rest_framework/tests/test_renderers.py diff --git a/rest_framework/tests/request.py b/rest_framework/tests/test_request.py similarity index 100% rename from rest_framework/tests/request.py rename to rest_framework/tests/test_request.py diff --git a/rest_framework/tests/response.py b/rest_framework/tests/test_response.py similarity index 100% rename from rest_framework/tests/response.py rename to rest_framework/tests/test_response.py diff --git a/rest_framework/tests/reverse.py b/rest_framework/tests/test_reverse.py similarity index 100% rename from rest_framework/tests/reverse.py rename to rest_framework/tests/test_reverse.py diff --git a/rest_framework/tests/routers.py b/rest_framework/tests/test_routers.py similarity index 100% rename from rest_framework/tests/routers.py rename to rest_framework/tests/test_routers.py diff --git a/rest_framework/tests/serializer.py b/rest_framework/tests/test_serializer.py similarity index 100% rename from rest_framework/tests/serializer.py rename to rest_framework/tests/test_serializer.py diff --git a/rest_framework/tests/serializer_bulk_update.py b/rest_framework/tests/test_serializer_bulk_update.py similarity index 100% rename from rest_framework/tests/serializer_bulk_update.py rename to rest_framework/tests/test_serializer_bulk_update.py diff --git a/rest_framework/tests/serializer_nested.py b/rest_framework/tests/test_serializer_nested.py similarity index 100% rename from rest_framework/tests/serializer_nested.py rename to rest_framework/tests/test_serializer_nested.py diff --git a/rest_framework/tests/settings.py b/rest_framework/tests/test_settings.py similarity index 100% rename from rest_framework/tests/settings.py rename to rest_framework/tests/test_settings.py diff --git a/rest_framework/tests/testcases.py b/rest_framework/tests/test_testcases.py similarity index 100% rename from rest_framework/tests/testcases.py rename to rest_framework/tests/test_testcases.py diff --git a/rest_framework/tests/throttling.py b/rest_framework/tests/test_throttling.py similarity index 100% rename from rest_framework/tests/throttling.py rename to rest_framework/tests/test_throttling.py diff --git a/rest_framework/tests/urlpatterns.py b/rest_framework/tests/test_urlpatterns.py similarity index 100% rename from rest_framework/tests/urlpatterns.py rename to rest_framework/tests/test_urlpatterns.py diff --git a/rest_framework/tests/validation.py b/rest_framework/tests/test_validation.py similarity index 100% rename from rest_framework/tests/validation.py rename to rest_framework/tests/test_validation.py diff --git a/rest_framework/tests/views.py b/rest_framework/tests/test_views.py similarity index 100% rename from rest_framework/tests/views.py rename to rest_framework/tests/test_views.py From f152129a2cb9e76018e2e7a020bcad43495bd0cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20T=C3=B6rnqvist?= Date: Sat, 18 May 2013 19:14:28 +0300 Subject: [PATCH 2/8] Fix urls in tests --- rest_framework/tests/test_authentication.py | 14 +++++++------- rest_framework/tests/test_breadcrumbs.py | 2 +- rest_framework/tests/test_htmlrenderer.py | 4 ++-- .../tests/test_hyperlinkedserializers.py | 12 ++++++------ rest_framework/tests/test_relations_hyperlink.py | 10 +++++----- rest_framework/tests/test_renderers.py | 6 +++--- rest_framework/tests/test_request.py | 2 +- rest_framework/tests/test_response.py | 4 ++-- rest_framework/tests/test_reverse.py | 2 +- 9 files changed, 28 insertions(+), 28 deletions(-) diff --git a/rest_framework/tests/test_authentication.py b/rest_framework/tests/test_authentication.py index 8e6d3e51a..05e9fbc30 100644 --- a/rest_framework/tests/test_authentication.py +++ b/rest_framework/tests/test_authentication.py @@ -48,7 +48,7 @@ urlpatterns = patterns('', (r'^token/$', MockView.as_view(authentication_classes=[TokenAuthentication])), (r'^auth-token/$', 'rest_framework.authtoken.views.obtain_auth_token'), (r'^oauth/$', MockView.as_view(authentication_classes=[OAuthAuthentication])), - (r'^oauth-with-scope/$', MockView.as_view(authentication_classes=[OAuthAuthentication], + (r'^oauth-with-scope/$', MockView.as_view(authentication_classes=[OAuthAuthentication], permission_classes=[permissions.TokenHasReadWriteScope])) ) @@ -56,14 +56,14 @@ if oauth2_provider is not None: urlpatterns += patterns('', url(r'^oauth2/', include('provider.oauth2.urls', namespace='oauth2')), url(r'^oauth2-test/$', MockView.as_view(authentication_classes=[OAuth2Authentication])), - url(r'^oauth2-with-scope-test/$', MockView.as_view(authentication_classes=[OAuth2Authentication], + url(r'^oauth2-with-scope-test/$', MockView.as_view(authentication_classes=[OAuth2Authentication], permission_classes=[permissions.TokenHasReadWriteScope])), ) class BasicAuthTests(TestCase): """Basic authentication""" - urls = 'rest_framework.tests.authentication' + urls = 'rest_framework.tests.test_authentication' def setUp(self): self.csrf_client = Client(enforce_csrf_checks=True) @@ -102,7 +102,7 @@ class BasicAuthTests(TestCase): class SessionAuthTests(TestCase): """User session authentication""" - urls = 'rest_framework.tests.authentication' + urls = 'rest_framework.tests.test_authentication' def setUp(self): self.csrf_client = Client(enforce_csrf_checks=True) @@ -149,7 +149,7 @@ class SessionAuthTests(TestCase): class TokenAuthTests(TestCase): """Token authentication""" - urls = 'rest_framework.tests.authentication' + urls = 'rest_framework.tests.test_authentication' def setUp(self): self.csrf_client = Client(enforce_csrf_checks=True) @@ -243,7 +243,7 @@ class IncorrectCredentialsTests(TestCase): class OAuthTests(TestCase): """OAuth 1.0a authentication""" - urls = 'rest_framework.tests.authentication' + urls = 'rest_framework.tests.test_authentication' def setUp(self): # these imports are here because oauth is optional and hiding them in try..except block or compat @@ -429,7 +429,7 @@ class OAuthTests(TestCase): class OAuth2Tests(TestCase): """OAuth 2.0 authentication""" - urls = 'rest_framework.tests.authentication' + urls = 'rest_framework.tests.test_authentication' def setUp(self): self.csrf_client = Client(enforce_csrf_checks=True) diff --git a/rest_framework/tests/test_breadcrumbs.py b/rest_framework/tests/test_breadcrumbs.py index d9ed647e2..41ddf2cea 100644 --- a/rest_framework/tests/test_breadcrumbs.py +++ b/rest_framework/tests/test_breadcrumbs.py @@ -36,7 +36,7 @@ urlpatterns = patterns('', class BreadcrumbTests(TestCase): """Tests the breadcrumb functionality used by the HTML renderer.""" - urls = 'rest_framework.tests.breadcrumbs' + urls = 'rest_framework.tests.test_breadcrumbs' def test_root_breadcrumbs(self): url = '/' diff --git a/rest_framework/tests/test_htmlrenderer.py b/rest_framework/tests/test_htmlrenderer.py index 8f2e2b5a0..96804e1dd 100644 --- a/rest_framework/tests/test_htmlrenderer.py +++ b/rest_framework/tests/test_htmlrenderer.py @@ -42,7 +42,7 @@ urlpatterns = patterns('', class TemplateHTMLRendererTests(TestCase): - urls = 'rest_framework.tests.htmlrenderer' + urls = 'rest_framework.tests.test_htmlrenderer' def setUp(self): """ @@ -82,7 +82,7 @@ class TemplateHTMLRendererTests(TestCase): class TemplateHTMLRendererExceptionTests(TestCase): - urls = 'rest_framework.tests.htmlrenderer' + urls = 'rest_framework.tests.test_htmlrenderer' def setUp(self): """ diff --git a/rest_framework/tests/test_hyperlinkedserializers.py b/rest_framework/tests/test_hyperlinkedserializers.py index 8fc6ba773..1894ddb27 100644 --- a/rest_framework/tests/test_hyperlinkedserializers.py +++ b/rest_framework/tests/test_hyperlinkedserializers.py @@ -106,7 +106,7 @@ urlpatterns = patterns('', class TestBasicHyperlinkedView(TestCase): - urls = 'rest_framework.tests.hyperlinkedserializers' + urls = 'rest_framework.tests.test_hyperlinkedserializers' def setUp(self): """ @@ -143,7 +143,7 @@ class TestBasicHyperlinkedView(TestCase): class TestManyToManyHyperlinkedView(TestCase): - urls = 'rest_framework.tests.hyperlinkedserializers' + urls = 'rest_framework.tests.test_hyperlinkedserializers' def setUp(self): """ @@ -191,7 +191,7 @@ class TestManyToManyHyperlinkedView(TestCase): class TestHyperlinkedIdentityFieldLookup(TestCase): - urls = 'rest_framework.tests.hyperlinkedserializers' + urls = 'rest_framework.tests.test_hyperlinkedserializers' def setUp(self): """ @@ -221,7 +221,7 @@ class TestHyperlinkedIdentityFieldLookup(TestCase): class TestCreateWithForeignKeys(TestCase): - urls = 'rest_framework.tests.hyperlinkedserializers' + urls = 'rest_framework.tests.test_hyperlinkedserializers' def setUp(self): """ @@ -246,7 +246,7 @@ class TestCreateWithForeignKeys(TestCase): class TestCreateWithForeignKeysAndCustomSlug(TestCase): - urls = 'rest_framework.tests.hyperlinkedserializers' + urls = 'rest_framework.tests.test_hyperlinkedserializers' def setUp(self): """ @@ -271,7 +271,7 @@ class TestCreateWithForeignKeysAndCustomSlug(TestCase): class TestOptionalRelationHyperlinkedView(TestCase): - urls = 'rest_framework.tests.hyperlinkedserializers' + urls = 'rest_framework.tests.test_hyperlinkedserializers' def setUp(self): """ diff --git a/rest_framework/tests/test_relations_hyperlink.py b/rest_framework/tests/test_relations_hyperlink.py index b3efbf524..2ca7f4f2b 100644 --- a/rest_framework/tests/test_relations_hyperlink.py +++ b/rest_framework/tests/test_relations_hyperlink.py @@ -71,7 +71,7 @@ class NullableOneToOneTargetSerializer(serializers.HyperlinkedModelSerializer): # TODO: Add test that .data cannot be accessed prior to .is_valid class HyperlinkedManyToManyTests(TestCase): - urls = 'rest_framework.tests.relations_hyperlink' + urls = 'rest_framework.tests.test_relations_hyperlink' def setUp(self): for idx in range(1, 4): @@ -179,7 +179,7 @@ class HyperlinkedManyToManyTests(TestCase): class HyperlinkedForeignKeyTests(TestCase): - urls = 'rest_framework.tests.relations_hyperlink' + urls = 'rest_framework.tests.test_relations_hyperlink' def setUp(self): target = ForeignKeyTarget(name='target-1') @@ -307,7 +307,7 @@ class HyperlinkedForeignKeyTests(TestCase): class HyperlinkedNullableForeignKeyTests(TestCase): - urls = 'rest_framework.tests.relations_hyperlink' + urls = 'rest_framework.tests.test_relations_hyperlink' def setUp(self): target = ForeignKeyTarget(name='target-1') @@ -435,7 +435,7 @@ class HyperlinkedNullableForeignKeyTests(TestCase): class HyperlinkedNullableOneToOneTests(TestCase): - urls = 'rest_framework.tests.relations_hyperlink' + urls = 'rest_framework.tests.test_relations_hyperlink' def setUp(self): target = OneToOneTarget(name='target-1') @@ -458,7 +458,7 @@ class HyperlinkedNullableOneToOneTests(TestCase): # Regression tests for #694 (`source` attribute on related fields) class HyperlinkedRelatedFieldSourceTests(TestCase): - urls = 'rest_framework.tests.relations_hyperlink' + urls = 'rest_framework.tests.test_relations_hyperlink' def test_related_manager_source(self): """ diff --git a/rest_framework/tests/test_renderers.py b/rest_framework/tests/test_renderers.py index 40bac9cb3..2a2c72575 100644 --- a/rest_framework/tests/test_renderers.py +++ b/rest_framework/tests/test_renderers.py @@ -129,7 +129,7 @@ class RendererEndToEndTests(TestCase): End-to-end testing of renderers using an RendererMixin on a generic view. """ - urls = 'rest_framework.tests.renderers' + urls = 'rest_framework.tests.test_renderers' def test_default_renderer_serializes_content(self): """If the Accept header is not set the default renderer should serialize the response.""" @@ -260,7 +260,7 @@ class JSONPRendererTests(TestCase): Tests specific to the JSONP Renderer """ - urls = 'rest_framework.tests.renderers' + urls = 'rest_framework.tests.test_renderers' def test_without_callback_with_json_renderer(self): """ @@ -433,7 +433,7 @@ class CacheRenderTest(TestCase): Tests specific to caching responses """ - urls = 'rest_framework.tests.renderers' + urls = 'rest_framework.tests.test_renderers' cache_key = 'just_a_cache_key' diff --git a/rest_framework/tests/test_request.py b/rest_framework/tests/test_request.py index 97e5af207..a5c5e84ce 100644 --- a/rest_framework/tests/test_request.py +++ b/rest_framework/tests/test_request.py @@ -254,7 +254,7 @@ urlpatterns = patterns('', class TestContentParsingWithAuthentication(TestCase): - urls = 'rest_framework.tests.request' + urls = 'rest_framework.tests.test_request' def setUp(self): self.csrf_client = Client(enforce_csrf_checks=True) diff --git a/rest_framework/tests/test_response.py b/rest_framework/tests/test_response.py index aecf83f4e..cea2534c7 100644 --- a/rest_framework/tests/test_response.py +++ b/rest_framework/tests/test_response.py @@ -80,7 +80,7 @@ class RendererIntegrationTests(TestCase): End-to-end testing of renderers using an ResponseMixin on a generic view. """ - urls = 'rest_framework.tests.response' + urls = 'rest_framework.tests.test_response' def test_default_renderer_serializes_content(self): """If the Accept header is not set the default renderer should serialize the response.""" @@ -160,7 +160,7 @@ class Issue122Tests(TestCase): """ Tests that covers #122. """ - urls = 'rest_framework.tests.response' + urls = 'rest_framework.tests.test_response' def test_only_html_renderer(self): """ diff --git a/rest_framework/tests/test_reverse.py b/rest_framework/tests/test_reverse.py index cb8d81325..93ef56377 100644 --- a/rest_framework/tests/test_reverse.py +++ b/rest_framework/tests/test_reverse.py @@ -19,7 +19,7 @@ class ReverseTests(TestCase): """ Tests for fully qualified URLs when using `reverse`. """ - urls = 'rest_framework.tests.reverse' + urls = 'rest_framework.tests.test_reverse' def test_reversed_urls_are_fully_qualified(self): request = factory.get('/view') From 498082919ac9a13df968f3f39481faca08887625 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20T=C3=B6rnqvist?= Date: Sun, 19 May 2013 13:36:34 +0300 Subject: [PATCH 3/8] field_test -> check_field so nose doesn't think i's a test --- rest_framework/tests/test_serializer.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/rest_framework/tests/test_serializer.py b/rest_framework/tests/test_serializer.py index 4f188c3e4..30162e423 100644 --- a/rest_framework/tests/test_serializer.py +++ b/rest_framework/tests/test_serializer.py @@ -1369,7 +1369,7 @@ class AttributeMappingOnAutogeneratedFieldsTests(TestCase): ], } - def field_test(self, field): + def check_field(self, field): serializer = self.serializer_class(data={}) self.assertEqual(serializer.is_valid(), True) @@ -1380,25 +1380,25 @@ class AttributeMappingOnAutogeneratedFieldsTests(TestCase): ) def test_char_field(self): - self.field_test('char_field') + self.check_field('char_field') def test_comma_separated_integer_field(self): - self.field_test('comma_separated_integer_field') + self.check_field('comma_separated_integer_field') def test_decimal_field(self): - self.field_test('decimal_field') + self.check_field('decimal_field') def test_email_field(self): - self.field_test('email_field') + self.check_field('email_field') def test_file_field(self): - self.field_test('file_field') + self.check_field('file_field') def test_image_field(self): - self.field_test('image_field') + self.check_field('image_field') def test_slug_field(self): - self.field_test('slug_field') + self.check_field('slug_field') def test_url_field(self): - self.field_test('url_field') + self.check_field('url_field') From dc4e284d8dc9eba674b017f70c901c1e5b96bdbd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20T=C3=B6rnqvist?= Date: Sun, 19 May 2013 13:58:56 +0300 Subject: [PATCH 4/8] Get Permission explicitly for model. There may be others if other apps are installed. --- rest_framework/tests/test_permissions.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/rest_framework/tests/test_permissions.py b/rest_framework/tests/test_permissions.py index b3993be58..555139b81 100644 --- a/rest_framework/tests/test_permissions.py +++ b/rest_framework/tests/test_permissions.py @@ -40,13 +40,13 @@ class ModelPermissionsIntegrationTests(TestCase): User.objects.create_user('disallowed', 'disallowed@example.com', 'password') user = User.objects.create_user('permitted', 'permitted@example.com', 'password') user.user_permissions = [ - Permission.objects.get(codename='add_basicmodel'), - Permission.objects.get(codename='change_basicmodel'), - Permission.objects.get(codename='delete_basicmodel') + Permission.objects.get(content_type__name='basic model', codename='add_basicmodel'), + Permission.objects.get(content_type__name='basic model', codename='change_basicmodel'), + Permission.objects.get(content_type__name='basic model', codename='delete_basicmodel') ] user = User.objects.create_user('updateonly', 'updateonly@example.com', 'password') user.user_permissions = [ - Permission.objects.get(codename='change_basicmodel'), + Permission.objects.get(content_type__name='basic model', codename='change_basicmodel'), ] self.permitted_credentials = basic_auth_header('permitted', 'password') From da0b7f3f4d2294ee62e49d22f4550a8a0f4ba81f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20T=C3=B6rnqvist?= Date: Sun, 19 May 2013 14:36:11 +0300 Subject: [PATCH 5/8] URL path in test_response mergefix --- rest_framework/tests/test_response.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rest_framework/tests/test_response.py b/rest_framework/tests/test_response.py index 9501f9cb7..e109b0b58 100644 --- a/rest_framework/tests/test_response.py +++ b/rest_framework/tests/test_response.py @@ -196,7 +196,7 @@ class Issue807Testts(TestCase): Covers #807 """ - urls = 'rest_framework.tests.response' + urls = 'rest_framework.tests.test_response' def test_does_not_append_charset_by_default(self): """ From 187e26e6af8bc41922dd2c51fb58f5699aaf0861 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20T=C3=B6rnqvist?= Date: Sun, 19 May 2013 15:09:57 +0300 Subject: [PATCH 6/8] Be strict with permission get in test --- rest_framework/tests/test_permissions.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/rest_framework/tests/test_permissions.py b/rest_framework/tests/test_permissions.py index 555139b81..a8108c115 100644 --- a/rest_framework/tests/test_permissions.py +++ b/rest_framework/tests/test_permissions.py @@ -39,14 +39,19 @@ class ModelPermissionsIntegrationTests(TestCase): def setUp(self): User.objects.create_user('disallowed', 'disallowed@example.com', 'password') user = User.objects.create_user('permitted', 'permitted@example.com', 'password') + # Keep get() lines clean and short + perm_kwargs = { + 'content_type__app_label': 'tests', + 'content_type__name': 'basic model', + } user.user_permissions = [ - Permission.objects.get(content_type__name='basic model', codename='add_basicmodel'), - Permission.objects.get(content_type__name='basic model', codename='change_basicmodel'), - Permission.objects.get(content_type__name='basic model', codename='delete_basicmodel') + Permission.objects.get(codename='add_basicmodel', **perm_kwargs), + Permission.objects.get(codename='change_basicmodel', **perm_kwargs), + Permission.objects.get(codename='delete_basicmodel', **perm_kwargs) ] user = User.objects.create_user('updateonly', 'updateonly@example.com', 'password') user.user_permissions = [ - Permission.objects.get(content_type__name='basic model', codename='change_basicmodel'), + Permission.objects.get(codename='change_basicmodel', **perm_kwargs), ] self.permitted_credentials = basic_auth_header('permitted', 'password') From 9a63ad6c2e778b842e90879b674bb12711b01382 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20T=C3=B6rnqvist?= Date: Sun, 19 May 2013 15:37:51 +0300 Subject: [PATCH 7/8] Explicit permission classes in test cases --- rest_framework/tests/test_decorators.py | 11 ++++++++++- rest_framework/tests/test_generics.py | 5 +++++ rest_framework/tests/test_htmlrenderer.py | 6 +++++- rest_framework/tests/test_hyperlinkedserializers.py | 12 ++++++++++++ rest_framework/tests/test_renderers.py | 6 ++++++ rest_framework/tests/test_request.py | 3 +++ rest_framework/tests/test_response.py | 6 ++++++ rest_framework/tests/test_throttling.py | 4 ++++ rest_framework/tests/test_views.py | 5 ++++- 9 files changed, 55 insertions(+), 3 deletions(-) diff --git a/rest_framework/tests/test_decorators.py b/rest_framework/tests/test_decorators.py index 1016fed3f..4081a53f1 100644 --- a/rest_framework/tests/test_decorators.py +++ b/rest_framework/tests/test_decorators.py @@ -6,7 +6,7 @@ from rest_framework.renderers import JSONRenderer from rest_framework.parsers import JSONParser from rest_framework.authentication import BasicAuthentication from rest_framework.throttling import UserRateThrottle -from rest_framework.permissions import IsAuthenticated +from rest_framework.permissions import IsAuthenticated, AllowAny from rest_framework.views import APIView from rest_framework.decorators import ( api_view, @@ -35,6 +35,7 @@ class DecoratorTestCase(TestCase): """ @api_view + @permission_classes((AllowAny,)) def view(request): return Response() @@ -48,12 +49,14 @@ class DecoratorTestCase(TestCase): with self.assertRaises(AssertionError): @api_view('GET') + @permission_classes((AllowAny,)) def view(request): return Response() def test_calling_method(self): @api_view(['GET']) + @permission_classes((AllowAny,)) def view(request): return Response({}) @@ -68,6 +71,7 @@ class DecoratorTestCase(TestCase): def test_calling_put_method(self): @api_view(['GET', 'PUT']) + @permission_classes((AllowAny,)) def view(request): return Response({}) @@ -82,6 +86,7 @@ class DecoratorTestCase(TestCase): def test_calling_patch_method(self): @api_view(['GET', 'PATCH']) + @permission_classes((AllowAny,)) def view(request): return Response({}) @@ -96,6 +101,7 @@ class DecoratorTestCase(TestCase): def test_renderer_classes(self): @api_view(['GET']) + @permission_classes((AllowAny,)) @renderer_classes([JSONRenderer]) def view(request): return Response({}) @@ -107,6 +113,7 @@ class DecoratorTestCase(TestCase): def test_parser_classes(self): @api_view(['GET']) + @permission_classes((AllowAny,)) @parser_classes([JSONParser]) def view(request): self.assertEqual(len(request.parsers), 1) @@ -120,6 +127,7 @@ class DecoratorTestCase(TestCase): def test_authentication_classes(self): @api_view(['GET']) + @permission_classes((AllowAny,)) @authentication_classes([BasicAuthentication]) def view(request): self.assertEqual(len(request.authenticators), 1) @@ -146,6 +154,7 @@ class DecoratorTestCase(TestCase): rate = '1/day' @api_view(['GET']) + @permission_classes((AllowAny,)) @throttle_classes([OncePerDayUserThrottle]) def view(request): return Response({}) diff --git a/rest_framework/tests/test_generics.py b/rest_framework/tests/test_generics.py index 15d87e866..2f274cfce 100644 --- a/rest_framework/tests/test_generics.py +++ b/rest_framework/tests/test_generics.py @@ -6,6 +6,7 @@ from rest_framework import generics, renderers, serializers, status from rest_framework.tests.utils import RequestFactory from rest_framework.tests.models import BasicModel, Comment, SlugBasedModel from rest_framework.compat import six +from rest_framework.permissions import AllowAny import json factory = RequestFactory() @@ -16,6 +17,7 @@ class RootView(generics.ListCreateAPIView): Example description for OPTIONS. """ model = BasicModel + permission_classes = (AllowAny,) class InstanceView(generics.RetrieveUpdateDestroyAPIView): @@ -23,6 +25,7 @@ class InstanceView(generics.RetrieveUpdateDestroyAPIView): Example description for OPTIONS. """ model = BasicModel + permission_classes = (AllowAny,) class SlugSerializer(serializers.ModelSerializer): @@ -355,6 +358,7 @@ class CommentSerializer(serializers.ModelSerializer): class CommentView(generics.ListCreateAPIView): serializer_class = CommentSerializer + permission_classes = (AllowAny,) model = Comment @@ -486,6 +490,7 @@ class TwoFieldModel(models.Model): class DynamicSerializerView(generics.ListCreateAPIView): model = TwoFieldModel renderer_classes = (renderers.BrowsableAPIRenderer, renderers.JSONRenderer) + permission_classes = (AllowAny,) def get_serializer_class(self): if self.request.method == 'POST': diff --git a/rest_framework/tests/test_htmlrenderer.py b/rest_framework/tests/test_htmlrenderer.py index 8957a43c7..4cb3fd658 100644 --- a/rest_framework/tests/test_htmlrenderer.py +++ b/rest_framework/tests/test_htmlrenderer.py @@ -6,14 +6,16 @@ from django.template import TemplateDoesNotExist, Template import django.template.loader from rest_framework import status from rest_framework.compat import patterns, url -from rest_framework.decorators import api_view, renderer_classes +from rest_framework.decorators import api_view, renderer_classes, permission_classes from rest_framework.renderers import TemplateHTMLRenderer from rest_framework.response import Response from rest_framework.compat import six +from rest_framework.permissions import AllowAny @api_view(('GET',)) @renderer_classes((TemplateHTMLRenderer,)) +@permission_classes((AllowAny,)) def example(request): """ A view that can returns an HTML representation. @@ -24,12 +26,14 @@ def example(request): @api_view(('GET',)) @renderer_classes((TemplateHTMLRenderer,)) +@permission_classes((AllowAny,)) def permission_denied(request): raise PermissionDenied() @api_view(('GET',)) @renderer_classes((TemplateHTMLRenderer,)) +@permission_classes((AllowAny,)) def not_found(request): raise Http404() diff --git a/rest_framework/tests/test_hyperlinkedserializers.py b/rest_framework/tests/test_hyperlinkedserializers.py index 1894ddb27..a80bd2bd3 100644 --- a/rest_framework/tests/test_hyperlinkedserializers.py +++ b/rest_framework/tests/test_hyperlinkedserializers.py @@ -5,6 +5,7 @@ from django.test.client import RequestFactory from rest_framework import generics, status, serializers from rest_framework.compat import patterns, url from rest_framework.tests.models import Anchor, BasicModel, ManyToManyModel, BlogPost, BlogPostComment, Album, Photo, OptionalRelationModel +from rest_framework.permissions import AllowAny factory = RequestFactory() @@ -38,56 +39,67 @@ class AlbumSerializer(serializers.ModelSerializer): class BasicList(generics.ListCreateAPIView): model = BasicModel model_serializer_class = serializers.HyperlinkedModelSerializer + permission_classes = (AllowAny,) class BasicDetail(generics.RetrieveUpdateDestroyAPIView): model = BasicModel model_serializer_class = serializers.HyperlinkedModelSerializer + permission_classes = (AllowAny,) class AnchorDetail(generics.RetrieveAPIView): model = Anchor model_serializer_class = serializers.HyperlinkedModelSerializer + permission_classes = (AllowAny,) class ManyToManyList(generics.ListAPIView): model = ManyToManyModel model_serializer_class = serializers.HyperlinkedModelSerializer + permission_classes = (AllowAny,) class ManyToManyDetail(generics.RetrieveAPIView): model = ManyToManyModel model_serializer_class = serializers.HyperlinkedModelSerializer + permission_classes = (AllowAny,) class BlogPostCommentListCreate(generics.ListCreateAPIView): model = BlogPostComment serializer_class = BlogPostCommentSerializer + permission_classes = (AllowAny,) class BlogPostCommentDetail(generics.RetrieveAPIView): model = BlogPostComment serializer_class = BlogPostCommentSerializer + permission_classes = (AllowAny,) class BlogPostDetail(generics.RetrieveAPIView): model = BlogPost + permission_classes = (AllowAny,) class PhotoListCreate(generics.ListCreateAPIView): model = Photo model_serializer_class = PhotoSerializer + permission_classes = (AllowAny,) class AlbumDetail(generics.RetrieveAPIView): model = Album serializer_class = AlbumSerializer lookup_field = 'title' + permission_classes = (AllowAny,) class OptionalRelationDetail(generics.RetrieveUpdateDestroyAPIView): model = OptionalRelationModel model_serializer_class = serializers.HyperlinkedModelSerializer + permission_classes = (AllowAny,) urlpatterns = patterns('', diff --git a/rest_framework/tests/test_renderers.py b/rest_framework/tests/test_renderers.py index 1584fc9f7..3e1d6bfa1 100644 --- a/rest_framework/tests/test_renderers.py +++ b/rest_framework/tests/test_renderers.py @@ -6,6 +6,7 @@ from django.test.client import RequestFactory from django.utils import unittest from rest_framework import status, permissions from rest_framework.compat import yaml, etree, patterns, url, include +from rest_framework.decorators import permission_classes from rest_framework.response import Response from rest_framework.views import APIView from rest_framework.renderers import BaseRenderer, JSONRenderer, YAMLRenderer, \ @@ -14,6 +15,7 @@ from rest_framework.parsers import YAMLParser, XMLParser from rest_framework.settings import api_settings from rest_framework.compat import StringIO from rest_framework.compat import six +from rest_framework.permissions import AllowAny import datetime import pickle import re @@ -56,6 +58,7 @@ class RendererB(BaseRenderer): class MockView(APIView): renderer_classes = (RendererA, RendererB) + permission_classes = (AllowAny,) def get(self, request, **kwargs): response = Response(DUMMYCONTENT, status=DUMMYSTATUS) @@ -64,12 +67,14 @@ class MockView(APIView): class MockGETView(APIView): + permission_classes = (AllowAny,) def get(self, request, **kwargs): return Response({'foo': ['bar', 'baz']}) class HTMLView(APIView): renderer_classes = (BrowsableAPIRenderer, ) + permission_classes = (AllowAny,) def get(self, request, **kwargs): return Response('text') @@ -77,6 +82,7 @@ class HTMLView(APIView): class HTMLView1(APIView): renderer_classes = (BrowsableAPIRenderer, JSONRenderer) + permission_classes = (AllowAny,) def get(self, request, **kwargs): return Response('text') diff --git a/rest_framework/tests/test_request.py b/rest_framework/tests/test_request.py index a5c5e84ce..9e99a905f 100644 --- a/rest_framework/tests/test_request.py +++ b/rest_framework/tests/test_request.py @@ -16,6 +16,8 @@ from rest_framework.parsers import ( MultiPartParser, JSONParser ) +from rest_framework.decorators import permission_classes +from rest_framework.permissions import AllowAny from rest_framework.request import Request from rest_framework.response import Response from rest_framework.settings import api_settings @@ -241,6 +243,7 @@ class TestContentParsing(TestCase): class MockView(APIView): authentication_classes = (SessionAuthentication,) + permission_classes = (AllowAny,) def post(self, request): if request.POST.get('example') is not None: diff --git a/rest_framework/tests/test_response.py b/rest_framework/tests/test_response.py index e109b0b58..6b2016c4e 100644 --- a/rest_framework/tests/test_response.py +++ b/rest_framework/tests/test_response.py @@ -1,6 +1,8 @@ from __future__ import unicode_literals from django.test import TestCase from rest_framework.compat import patterns, url, include +from rest_framework.decorators import permission_classes +from rest_framework.permissions import AllowAny from rest_framework.response import Response from rest_framework.views import APIView from rest_framework import status @@ -55,6 +57,7 @@ class RendererC(RendererB): class MockView(APIView): renderer_classes = (RendererA, RendererB, RendererC) + permission_classes = (AllowAny,) def get(self, request, **kwargs): return Response(DUMMYCONTENT, status=DUMMYSTATUS) @@ -62,6 +65,7 @@ class MockView(APIView): class MockViewSettingCharset(APIView): renderer_classes = (RendererA, RendererB, RendererC) + permission_classes = (AllowAny,) def get(self, request, **kwargs): return Response(DUMMYCONTENT, status=DUMMYSTATUS, charset='setbyview') @@ -69,6 +73,7 @@ class MockViewSettingCharset(APIView): class HTMLView(APIView): renderer_classes = (BrowsableAPIRenderer, ) + permission_classes = (AllowAny,) def get(self, request, **kwargs): return Response('text') @@ -76,6 +81,7 @@ class HTMLView(APIView): class HTMLView1(APIView): renderer_classes = (BrowsableAPIRenderer, JSONRenderer) + permission_classes = (AllowAny,) def get(self, request, **kwargs): return Response('text') diff --git a/rest_framework/tests/test_throttling.py b/rest_framework/tests/test_throttling.py index 11cbd8eba..ebf426a9a 100644 --- a/rest_framework/tests/test_throttling.py +++ b/rest_framework/tests/test_throttling.py @@ -6,6 +6,8 @@ from django.test import TestCase from django.contrib.auth.models import User from django.core.cache import cache from django.test.client import RequestFactory +from rest_framework.decorators import api_view +from rest_framework.permissions import AllowAny from rest_framework.views import APIView from rest_framework.throttling import UserRateThrottle from rest_framework.response import Response @@ -23,6 +25,7 @@ class User3MinRateThrottle(UserRateThrottle): class MockView(APIView): throttle_classes = (User3SecRateThrottle,) + permission_classes = (AllowAny,) def get(self, request): return Response('foo') @@ -30,6 +33,7 @@ class MockView(APIView): class MockView_MinuteThrottling(APIView): throttle_classes = (User3MinRateThrottle,) + permission_classes = (AllowAny,) def get(self, request): return Response('foo') diff --git a/rest_framework/tests/test_views.py b/rest_framework/tests/test_views.py index 994cf6dc3..951a13153 100644 --- a/rest_framework/tests/test_views.py +++ b/rest_framework/tests/test_views.py @@ -2,7 +2,8 @@ from __future__ import unicode_literals from django.test import TestCase from django.test.client import RequestFactory from rest_framework import status -from rest_framework.decorators import api_view +from rest_framework.decorators import api_view, permission_classes +from rest_framework.permissions import AllowAny from rest_framework.response import Response from rest_framework.settings import api_settings from rest_framework.views import APIView @@ -12,6 +13,7 @@ factory = RequestFactory() class BasicView(APIView): + permission_classes = (AllowAny,) def get(self, request, *args, **kwargs): return Response({'method': 'GET'}) @@ -20,6 +22,7 @@ class BasicView(APIView): @api_view(['GET', 'POST', 'PUT', 'PATCH']) +@permission_classes((AllowAny,)) def basic_view(request): if request.method == 'GET': return {'method': 'GET'} From c80622db23234b1cf6904b0f9da729e4015ff3eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20T=C3=B6rnqvist?= Date: Sun, 19 May 2013 16:09:48 +0300 Subject: [PATCH 8/8] Fix django-filters --- rest_framework/tests/test_filters.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/rest_framework/tests/test_filters.py b/rest_framework/tests/test_filters.py index 8ae6d5303..62d7d43cb 100644 --- a/rest_framework/tests/test_filters.py +++ b/rest_framework/tests/test_filters.py @@ -8,6 +8,8 @@ from django.test.client import RequestFactory from django.utils import unittest from rest_framework import generics, serializers, status, filters from rest_framework.compat import django_filters, patterns, url +from rest_framework.decorators import permission_classes +from rest_framework.permissions import AllowAny from rest_framework.tests.models import BasicModel factory = RequestFactory() @@ -69,11 +71,13 @@ if django_filters: serializer_class = FilterableItemSerializer filter_fields = ['decimal', 'date'] filter_backends = (filters.DjangoFilterBackend,) + permission_classes = (AllowAny,) class GetQuerysetView(generics.ListCreateAPIView): serializer_class = FilterableItemSerializer filter_class = SeveralFieldsFilter filter_backends = (filters.DjangoFilterBackend,) + permission_classes = (AllowAny,) def get_queryset(self): return FilterableItem.objects.all() @@ -243,7 +247,7 @@ class IntegrationTestDetailFiltering(CommonFilteringTestCase): """ Integration tests for filtered detail views. """ - urls = 'rest_framework.tests.filters' + urls = 'rest_framework.tests.test_filters' def _get_url(self, item): return reverse('detail-view', kwargs=dict(pk=item.pk)) @@ -312,6 +316,7 @@ class SearchFilterTests(TestCase): class SearchListView(generics.ListAPIView): model = SearchFilterModel filter_backends = (filters.SearchFilter,) + permission_classes = (AllowAny,) search_fields = ('title', 'text') view = SearchListView.as_view()