From fa3983666a786f8ca511e706c78955717090e636 Mon Sep 17 00:00:00 2001 From: Riccardo Magliocchetti Date: Tue, 17 Apr 2018 16:42:10 +0200 Subject: [PATCH] tests: don't hardcode pip project build id test_privacy_urls Fixes these tests running against postgres --- .../rtd_tests/tests/test_privacy_urls.py | 35 +++++++++++++++---- 1 file changed, 28 insertions(+), 7 deletions(-) diff --git a/readthedocs/rtd_tests/tests/test_privacy_urls.py b/readthedocs/rtd_tests/tests/test_privacy_urls.py index b8ec1350fc1..732c01330e8 100644 --- a/readthedocs/rtd_tests/tests/test_privacy_urls.py +++ b/readthedocs/rtd_tests/tests/test_privacy_urls.py @@ -28,12 +28,25 @@ class URLAccessMixin(object): context_data = [] default_status_code = 200 + def get_response_data_url_ctx(self): + return {} + def login(self): raise NotImplementedError def is_admin(self): raise NotImplementedError + def get_response_data(self, path, name): + response_data = self.response_data.get(path, {}) + if not response_data: + response_data = self.response_data.get(name, {}) + ctx = self.get_response_data_url_ctx() + if ctx: + return {k.format(**ctx): v for k,v in response_data.items()} + else: + return response_data.copy() + def assertResponse(self, path, name=None, method=None, data=None, **kwargs): self.login() if method is None: @@ -53,9 +66,7 @@ def assertResponse(self, path, name=None, method=None, data=None, **kwargs): response = method(path, data=data) # Get response specific test data - response_data = self.response_data.get(path, {}).copy() - if not response_data: - response_data = self.response_data.get(name, {}).copy() + response_data = self.get_response_data(path, name) response_attrs = { 'status_code': kwargs.pop('status_code', self.default_status_code), @@ -232,10 +243,15 @@ class PrivateProjectAdminAccessTest(PrivateProjectMixin, TestCase): '/dashboard/pip/redirects/delete/': {'status_code': 405}, '/dashboard/pip/subprojects/sub/delete/': {'status_code': 405}, '/dashboard/pip/integrations/sync/': {'status_code': 405}, - '/dashboard/pip/integrations/1/sync/': {'status_code': 405}, - '/dashboard/pip/integrations/1/delete/': {'status_code': 405}, + '/dashboard/pip/integrations/{pip_id}/sync/': {'status_code': 405}, + '/dashboard/pip/integrations/{pip_id}/delete/': {'status_code': 405}, } + def get_response_data_url_ctx(self): + return { + 'pip_id': self.pip.id + } + def login(self): return self.client.login(username='owner', password='test') @@ -261,10 +277,15 @@ class PrivateProjectUserAccessTest(PrivateProjectMixin, TestCase): '/dashboard/pip/redirects/delete/': {'status_code': 405}, '/dashboard/pip/subprojects/sub/delete/': {'status_code': 405}, '/dashboard/pip/integrations/sync/': {'status_code': 405}, - '/dashboard/pip/integrations/1/sync/': {'status_code': 405}, - '/dashboard/pip/integrations/1/delete/': {'status_code': 405}, + '/dashboard/pip/integrations/{pip_id}/sync/': {'status_code': 405}, + '/dashboard/pip/integrations/{pip_id}/delete/': {'status_code': 405}, } + def get_response_data_url_ctx(self): + return { + 'pip_id': self.pip.id + } + # Filtered out by queryset on projects that we don't own. default_status_code = 404