diff options
Diffstat (limited to 'archaeological_operations/tests.py')
| -rw-r--r-- | archaeological_operations/tests.py | 68 | 
1 files changed, 68 insertions, 0 deletions
diff --git a/archaeological_operations/tests.py b/archaeological_operations/tests.py index e70b701c4..58915dce9 100644 --- a/archaeological_operations/tests.py +++ b/archaeological_operations/tests.py @@ -39,6 +39,9 @@ from django.utils.text import slugify  from django.contrib.auth.models import User, Permission  from django.utils.translation import ugettext_lazy as _, pgettext, pgettext_lazy +from rest_framework.test import APITestCase +from rest_framework.authtoken.models import Token +  from . import models  from ishtar_common.views import document_deletion_steps @@ -77,6 +80,8 @@ from ishtar_common.models import (      Document,      ValueFormater,      Regexp, +    ApiUser, +    ApiSearchModel,  )  from ishtar_common.models_imports import ImporterDefault, ImporterDefaultValues  from archaeological_files.models import File, FileType @@ -4419,3 +4424,66 @@ class SeleniumTestsOperations(SeleniumTests):          for pk, xpath in from_table:              slug_pk = slug + "-" + str(pk)              self._test_operation(xpath, slug_pk, copy.deepcopy(geojsons)) + + +class ApiTest(OperationInitTest, APITestCase): +    fixtures = FILE_FIXTURES + +    def setUp(self): +        IshtarSiteProfile.objects.get_or_create(slug="default", active=True) +        self.username, self.password, self.user = create_superuser() +        self.orgas = self.create_orgas(self.user) +        self.create_operation(self.user, self.orgas[0]) +        self.create_operation(self.user, self.orgas[0]) +        self.create_operation(self.user, self.orgas[0]) +        self.create_operation(self.user, self.orgas[0]) +        self.auth_token = "Token " + Token.objects.create(user=self.user).key +        self.api_user = ApiUser.objects.create(user_ptr=self.user, ip="127.0.0.1") + +    def create_api_search_model(self): +        return ApiSearchModel.objects.create( +            user=self.api_user, +            content_type=ContentType.objects.get( +                app_label="archaeological_operations", +                model="operation" +            )) + +    def test_permissions(self): +        url = reverse("api-search-operation") +        response = self.client.get(url, format="json") +        # nothing OK +        self.assertEqual(response.status_code, 401) +        # token + IP +        response = self.client.get( +            url, format="json", HTTP_AUTHORIZATION=self.auth_token +        ) +        self.assertEqual(response.status_code, 403) +        api_search_model = self.create_api_search_model() +        content_type_id = api_search_model.content_type.id +        api_search_model.content_type = ContentType.objects.get( +                app_label="archaeological_operations", +                model="archaeologicalsite" +            ) +        api_search_model.save() +        # token + IP + bad model +        response = self.client.get( +            url, format="json", HTTP_AUTHORIZATION=self.auth_token +        ) +        self.assertEqual(response.status_code, 403) +        api_search_model.content_type_id = content_type_id +        api_search_model.save() +        # token + IP + good model +        response = self.client.get( +            url, format="json", HTTP_AUTHORIZATION=self.auth_token +        ) +        self.assertEqual(response.status_code, 200) +        # token + bad IP + good model +        self.api_user.ip = "8.8.8.8" +        self.api_user.save() +        response = self.client.get( +            url, format="json", HTTP_AUTHORIZATION=self.auth_token +        ) +        self.assertEqual(response.status_code, 403) +        self.api_user.ip = "127.0.0.1" +        self.api_user.save() +  | 
