summaryrefslogtreecommitdiff
path: root/archaeological_operations/tests.py
diff options
context:
space:
mode:
Diffstat (limited to 'archaeological_operations/tests.py')
-rw-r--r--archaeological_operations/tests.py97
1 files changed, 81 insertions, 16 deletions
diff --git a/archaeological_operations/tests.py b/archaeological_operations/tests.py
index d13a21011..e58868c1f 100644
--- a/archaeological_operations/tests.py
+++ b/archaeological_operations/tests.py
@@ -23,8 +23,10 @@ from subprocess import Popen, PIPE
from io import StringIO, BytesIO
import tempfile
import locale
+from unittest.mock import patch
import zipfile
+import requests
from django.apps import apps
from django.conf import settings
from django.contrib.auth.models import Group
@@ -44,6 +46,8 @@ from rest_framework.authtoken.models import Token
from . import models
+from ishtar_common import models_rest
+from ishtar_common.admin import update_types_from_source
from ishtar_common.views import document_deletion_steps
from ishtar_common.serializers import document_serialization
from archaeological_operations import views, serializers
@@ -4452,13 +4456,12 @@ class ApiTest(OperationInitTest, APITestCase):
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, app_label="archaeological_operations",
- model="operation"):
+ def create_api_search_model(
+ self, app_label="archaeological_operations", model="operation"
+ ):
return ApiSearchModel.objects.create(
user=self.api_user,
- content_type=ContentType.objects.get(
- app_label=app_label, model=model
- ),
+ content_type=ContentType.objects.get(app_label=app_label, model=model),
)
def test_api_permissions(self):
@@ -4531,19 +4534,24 @@ class ApiTest(OperationInitTest, APITestCase):
self.create_api_search_model()
url = reverse("api-facets-operation")
response = self.client.get(
- url, format="json", HTTP_AUTHORIZATION=self.auth_token,
+ url,
+ format="json",
+ HTTP_AUTHORIZATION=self.auth_token,
)
self.assertEqual(response.status_code, 200)
j = json.loads(response.content.decode())
- self.assertIn('archaeological_operations.operation', j)
+ self.assertIn("archaeological_operations.operation", j)
# no permissions for archaeological_site
- self.assertNotIn('archaeological_operations.archaeological_site', j)
+ self.assertNotIn("archaeological_operations.archaeological_site", j)
has_type = False
- for content in j['archaeological_operations.operation']:
- if content[0] == ["type", "type"]:
+ for content in j["archaeological_operations.operation"]:
+ if content[0] == "ishtar_common.operationtype" and content[1] == [
+ "type",
+ "type",
+ ]:
has_type = True
- lst = content[1]
+ lst = content[2]
for tpe in models.OperationType.objects.filter(available=True).all():
self.assertIn([tpe.txt_idx, tpe.label], lst)
# do not send not available
@@ -4552,18 +4560,75 @@ class ApiTest(OperationInitTest, APITestCase):
break
self.assertTrue(has_type)
- self.create_api_search_model(app_label="archaeological_operations",
- model="archaeologicalsite")
+ self.create_api_search_model(
+ app_label="archaeological_operations", model="archaeologicalsite"
+ )
url = reverse("api-facets-operation")
response = self.client.get(
- url, format="json", HTTP_AUTHORIZATION=self.auth_token,
+ url,
+ format="json",
+ HTTP_AUTHORIZATION=self.auth_token,
)
self.assertEqual(response.status_code, 200)
j = json.loads(response.content.decode())
- self.assertIn('archaeological_operations.archaeologicalsite', j)
+ self.assertIn("archaeological_operations.archaeologicalsite", j)
- def test_type_admin(self):
+ def _get_source(self):
+ src, __ = models_rest.ApiExternalSource.objects.get_or_create(
+ url="http://localhost", name="Default source", key="xxx"
+ )
+ return src
+
+ @patch("requests.get")
+ def test_type_admin(self, mock_get):
# POV: local
+ # receive from a source
+
+ source = self._get_source()
+ url = "/admin/{}/{}/".format(
+ "ishtar_common", models_rest.ApiExternalSource.__name__.lower()
+ )
+ params = {
+ "action": "update_types_from_source",
+ "_selected_action": [source.pk],
+ }
+ response = self.client.post(url, params)
+ self.assertEqual(
+ response["Location"],
+ "/admin/login/?next=/admin/ishtar_common/apiexternalsource/",
+ )
+
+ mock_get.return_value.status_code = 404
+ self.client.login(username=self.username, password=self.password)
+ response = self.client.post(url, params, follow=True)
+ self.assertEqual(
+ response.status_code,
+ 200,
+ )
+ self.assertIn(
+ "404 != 200",
+ response.content.decode(),
+ )
+ mock_get.return_value.status_code = 200
+
+ def __json():
+ return json.loads(mock_get.return_value.text)
+
+ mock_get.return_value.json = __json
+ mock_get.return_value.text = "NOK"
+
+ response = self.client.post(url, params, follow=True)
+ self.assertIn(
+ str(_("is not a valid JSON message")),
+ response.content.decode(),
+ )
+
+ with open(
+ "../archaeological_operations/tests/external_source_types_1.json", "r"
+ ) as tpes:
+ mock_get.return_value.text = tpes.read()
+ response = self.client.post(url, params, follow=True)
+
# create and update matches from an external source
# delete old matches!
pass