diff --git a/apps/accounts/tests/test_units/test_accounts.py b/apps/accounts/tests/test_units/test_accounts.py index bb72c19d44309bf5660dede5fa390caf6ee7221b..d694ce640dab60ad8c4770d957d852fa5efe732f 100644 --- a/apps/accounts/tests/test_units/test_accounts.py +++ b/apps/accounts/tests/test_units/test_accounts.py @@ -35,6 +35,7 @@ class AccountViewTest(APITestCase): cls.faker = Faker() def setUp(self): + self.noAuthClient = APIClient() self.client = APIClient(HTTP_AUTHORIZATION=HEADER_PREFIX + self.token_1.key) def test_string_representation(self): @@ -138,6 +139,30 @@ class AccountViewTest(APITestCase): f'"action_type":"{ACTIVITY_TYPE_CREATE}"', response_string ) + def test_create_new_officer_success_without_auth_token(self): + url = self.BASE_URL + + _account_id = self.faker.email() + officer_prev_count = Account.objects.filter(is_admin=False).count() + + data = { + "name": self.faker.name(), + "username": _account_id, + "password": "justpass", + "email": _account_id, + "phone_number": "+999999999999", + "area": self.faker.city(), + "is_admin": False, + "is_verified": False, + "is_active": False, + } + + response = self.noAuthClient.post(path=url, data=data, format="json",) + officer_current_count = Account.objects.filter(is_admin=False).count() + + self.assertEqual(response.status_code, status.HTTP_201_CREATED) + self.assertEqual(officer_current_count, officer_prev_count + 1) + def test_create_existing_user_fails(self): url = self.BASE_URL data = { diff --git a/apps/accounts/views.py b/apps/accounts/views.py index 1e862ffeb92aaa2a69f2b818502ea6e9517e079a..4417df06018d1c747c84604bab833258316e0a67 100644 --- a/apps/accounts/views.py +++ b/apps/accounts/views.py @@ -1,5 +1,5 @@ from django.core.mail import send_mail -from django.contrib.auth.models import User +from django.contrib.auth.models import AnonymousUser, User from django.shortcuts import get_object_or_404 from django_filters.rest_framework import DjangoFilterBackend from rest_framework import status, viewsets @@ -73,7 +73,13 @@ class AccountViewSet(viewsets.ModelViewSet): ) user = User.objects.create_user(username=username, password=password) - Account.objects.create(user=user, **serializer.validated_data) + if isinstance(self.request.user, AnonymousUser): + Account.objects.create(user=user, **serializer.validated_data) + else: + Account.objects.create( + user=user, + author=self.request.user.account, + **serializer.validated_data) return Response( serializer.data, status=status.HTTP_201_CREATED, diff --git a/apps/cases/serializers.py b/apps/cases/serializers.py index 610ce15b329bd703af18390004b574d10d7bd5db..79531993445d232f87760301a23d967c2bbd6056 100644 --- a/apps/cases/serializers.py +++ b/apps/cases/serializers.py @@ -93,7 +93,7 @@ class InvestigationCaseSerializer(serializers.ModelSerializer): outcome = self.validated_data.get('outcome', None) is_positive = None if outcome is not None: - is_positive = True if "+" in outcome else False + is_positive = False if "-" in outcome else True super(InvestigationCaseSerializer, self).save(author=account, is_positive=is_positive) diff --git a/apps/custom_auth/tests/test_units/test_custom_login.py b/apps/custom_auth/tests/test_units/test_custom_login.py index 9ea2f1e392a2184094531449e18aae47a67bca1d..d609c75613f578b191aa5be6d13184a7510a131f 100644 --- a/apps/custom_auth/tests/test_units/test_custom_login.py +++ b/apps/custom_auth/tests/test_units/test_custom_login.py @@ -13,7 +13,7 @@ class CustomAuthTest(APITestCase): user = User.objects.create(username="jonathan") user.set_password("justpass") user.save() - cls.user = user + cls.user = user def _test_success(self, data): response = self.client.post(path=self.URL, data=data, format="json") diff --git a/apps/custom_auth/views.py b/apps/custom_auth/views.py index 647058b2df5f5b33241a419e0841aab7ec2d6f65..1d642e0a598e31bbfbdd30ab05a14263be62dc6f 100644 --- a/apps/custom_auth/views.py +++ b/apps/custom_auth/views.py @@ -19,4 +19,4 @@ class CustomAuthToken(ObtainAuthToken): user = serializer.validated_data["user"] token, _ = Token.objects.get_or_create(user=user) - return Response(data={ "token": token.key }, status=status.HTTP_200_OK) + return Response(data={"token": token.key}, status=status.HTTP_200_OK) diff --git a/apps/exportables/tests/test_units/test_exportables.py b/apps/exportables/tests/test_units/test_exportables.py index e3dd2995c8cc3f6899d710d1bfa7336551e9adcc..38ebe974962e3a9625a0754aa788dd35c449f88e 100644 --- a/apps/exportables/tests/test_units/test_exportables.py +++ b/apps/exportables/tests/test_units/test_exportables.py @@ -10,15 +10,16 @@ from apps.cases.tests.factories.cases import InvestigationCaseFactory from apps.exportables.renderers import INVESTIGATION_CASE_RENDERER_FIELDS + def init_data(): InvestigationCaseFactory( - case_subject=CaseSubjectFactory( - district="Beji", - age=19, - is_male=True, - ), - is_positive=True, - ) + case_subject=CaseSubjectFactory( + district="Beji", + age=19, + is_male=True, + ), + is_positive=True, + ) InvestigationCaseFactory( case_subject=CaseSubjectFactory( district="Cilodong", diff --git a/apps/logs/serializers.py b/apps/logs/serializers.py index 1444379abb2d3a0c0970809a196401bb1b02a6d3..270bce9d408688387a31322c0d71bf3794495e05 100644 --- a/apps/logs/serializers.py +++ b/apps/logs/serializers.py @@ -41,7 +41,7 @@ class LogSerializer(serializers.Serializer): if isinstance(instance, InvestigationCaseHistory): return MODEL_NAME_INVESTIGATION_CASE if isinstance(instance, MonitoringCaseHistory): - return MODEL_NAME_CASE_SUBJECT + return MODEL_NAME_MONITORING_CASE def get_author(self, instance): if isinstance(instance.author, Account): diff --git a/apps/logs/tests/test_units/test_logs.py b/apps/logs/tests/test_units/test_logs.py index 72a892828e860fd5dc096676d06af1ff1559526c..e7d3470bfb35f60a23c8717814fbb2a2e171f2fb 100644 --- a/apps/logs/tests/test_units/test_logs.py +++ b/apps/logs/tests/test_units/test_logs.py @@ -39,8 +39,4 @@ class ActivityLogViewTest(APITestCase): def test_list_only_current_author_logs_success(self): self.client = APIClient(HTTP_AUTHORIZATION=HEADER_PREFIX + self.officer_token.key) - self.assertIn('"count":2', self.get_logs_response()) - - def test_admin_account_get_all_logs_success(self): - self.client = APIClient(HTTP_AUTHORIZATION=HEADER_PREFIX + self.admin_token.key) - self.assertIn('"count":4', self.get_logs_response()) + self.assertIn('"count":1', self.get_logs_response()) diff --git a/apps/logs/views.py b/apps/logs/views.py index 08a281a567dd87cc4283eaf10f479100cf7e209f..dc66a399aa40a68ba6b207820ce46e46f3176f02 100644 --- a/apps/logs/views.py +++ b/apps/logs/views.py @@ -21,16 +21,11 @@ class LogAPIView(ListAPIView): def _get_logs_queryset(self, queryset, request): account = request.user.account - if account.is_admin: - return queryset return queryset.filter(author=account) def get_queryset(self, request): account = request.user.account - if account.is_admin: - account_logs = AccountHistory.objects.all() - else: - account_logs = AccountHistory.objects.filter(object_id=account.id) + account_logs = AccountHistory.objects.filter(author=account.id) case_subject_logs = ( self._get_logs_queryset(CaseSubjectHistory.objects.all(), request))