5 Commits

Author SHA1 Message Date
Aarni Halinen 44e63b6105 Fix tests 2022-10-24 21:46:08 +03:00
Aarni Halinen dae78ee976 Add tests 2022-10-24 21:43:29 +03:00
Aarni Halinen f813eaf9bf Update node to v16 in CI 2022-10-24 21:43:29 +03:00
Aarni Halinen 8baea20824 Add .nvmrc 2022-10-24 21:43:29 +03:00
Aarni Halinen 393ee997d9 Add delete path for SignupViewSet 2022-10-24 21:43:29 +03:00
4 changed files with 47 additions and 10 deletions
+3 -3
View File
@@ -7,7 +7,7 @@ stages:
- deploy - deploy
install: install:
image: node:14 image: node:16
stage: setup stage: setup
script: script:
- npm ci - npm ci
@@ -57,14 +57,14 @@ lint:py:
- black --check . - black --check .
lint:js: lint:js:
image: node:14 image: node:16
stage: lint stage: lint
needs: ["install"] needs: ["install"]
script: script:
- npm run lint:js - npm run lint:js
lint:md: lint:md:
image: node:14 image: node:16
stage: lint stage: lint
needs: ["install"] needs: ["install"]
script: script:
+1
View File
@@ -0,0 +1 @@
16
+22 -6
View File
@@ -22,6 +22,13 @@ class SignupTestCase(APITestCase):
self.signup1 = createSignupObject("1", self.signupForm, ALL_QUESTION_TYPES) self.signup1 = createSignupObject("1", self.signupForm, ALL_QUESTION_TYPES)
self.signup2 = createSignupObject("2", self.signupForm, ALL_QUESTION_TYPES) self.signup2 = createSignupObject("2", self.signupForm, ALL_QUESTION_TYPES)
self.signup_admin_delete = createSignupObject(
"3", self.signupForm, ALL_QUESTION_TYPES
)
self.signup_user_delete = createSignupObject(
"4", self.signupForm, ALL_QUESTION_TYPES
)
self.signup_count = 4
username, password = "test_admin", "password123" username, password = "test_admin", "password123"
self.authClient = User.objects.create_superuser( self.authClient = User.objects.create_superuser(
@@ -49,17 +56,17 @@ class SignupTestCase(APITestCase):
new = createSignupRequest("asd", self.signupForm.id, ALL_QUESTION_TYPES_ANSWER) new = createSignupRequest("asd", self.signupForm.id, ALL_QUESTION_TYPES_ANSWER)
response = self.client.post(URL, new, format="json") response = self.client.post(URL, new, format="json")
self.assertEqual(response.status_code, status.HTTP_201_CREATED) self.assertEqual(response.status_code, status.HTTP_201_CREATED)
self.assertEqual(Signup.objects.count(), 3) self.assertEqual(Signup.objects.count(), self.signup_count + 1)
# Can signup to a hidden form # Can signup to a hidden form
def test_create_signup_hidden(self): def test_create_signup_hidden(self):
new = createSignupRequest("asd", self.hiddenForm.id, ALL_QUESTION_TYPES_ANSWER) new = createSignupRequest("asd", self.hiddenForm.id, ALL_QUESTION_TYPES_ANSWER)
response = self.client.post(URL, new, format="json") response = self.client.post(URL, new, format="json")
self.assertEqual(response.status_code, status.HTTP_201_CREATED) self.assertEqual(response.status_code, status.HTTP_201_CREATED)
self.assertEqual(Signup.objects.count(), 3) self.assertEqual(Signup.objects.count(), self.signup_count + 1)
def test_delete_as_admin(self): def test_delete_as_admin(self):
id = self.signup1.id id = self.signup_admin_delete.id
no_auth_response = self.client.delete(f"{URL}{id}/", format="json") no_auth_response = self.client.delete(f"{URL}{id}/", format="json")
self.assertEqual(no_auth_response.status_code, status.HTTP_401_UNAUTHORIZED) self.assertEqual(no_auth_response.status_code, status.HTTP_401_UNAUTHORIZED)
self.client.force_authenticate(user=self.authClient) self.client.force_authenticate(user=self.authClient)
@@ -81,9 +88,18 @@ class SignupTestCase(APITestCase):
self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertEqual(Signup.objects.get(id=id).answer["-naY2R1-h"], "Edited Testi") self.assertEqual(Signup.objects.get(id=id).answer["-naY2R1-h"], "Edited Testi")
@skip("NotImplemented") def test_delete_as_user(self):
def test_delete_signup_token(self): bad_uuid = "d5a98794-8330-45b4-8ed4-cdb84198649b"
pass id = self.signup_user_delete.id
uuid = self.signup_user_delete.uuid
no_auth_response = self.client.delete(f"{URL}{id}/delete/?uuid={bad_uuid}")
self.assertEqual(no_auth_response.status_code, status.HTTP_404_NOT_FOUND)
self.assertEqual(Signup.objects.get(id=id).deleted, False)
response = self.client.delete(f"{URL}{id}/delete/?uuid={uuid}")
self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertEqual(Signup.objects.get(id=id).deleted, True)
# TODO: Use some mocking library and check that sendgrid is actually called # TODO: Use some mocking library and check that sendgrid is actually called
def test_signupee_sendemail(self): def test_signupee_sendemail(self):
+21 -1
View File
@@ -200,7 +200,13 @@ class SignupViewSet(ModelViewSet):
serializer_class = SignupSerializer serializer_class = SignupSerializer
permission_classes = [SignupPermission] permission_classes = [SignupPermission]
@action(detail=True, methods=["get", "put"], permission_classes=[AllowAny]) @action(
url_path="edit",
url_name="edit",
detail=True,
methods=["get", "put"],
permission_classes=[AllowAny],
)
def edit(self, request, pk=None, *args, **kwargs): def edit(self, request, pk=None, *args, **kwargs):
uuid = request.query_params.get("uuid", None) uuid = request.query_params.get("uuid", None)
queryset = self.filter_queryset(self.get_queryset()) queryset = self.filter_queryset(self.get_queryset())
@@ -211,6 +217,20 @@ class SignupViewSet(ModelViewSet):
elif request.method == "PUT": elif request.method == "PUT":
return self.partial_update(request, *args, **kwargs) return self.partial_update(request, *args, **kwargs)
@action(
url_path="delete",
url_name="delete",
detail=True,
methods=["delete"],
permission_classes=[AllowAny],
)
def user_delete(self, request, pk=None, *args, **kwargs):
uuid = request.query_params.get("uuid", None)
queryset = self.filter_queryset(self.get_queryset())
filter = {"pk": pk, "uuid": uuid}
get_object_or_404(queryset, **filter)
return self.destroy(request, *args, **kwargs)
def create(self, request, *args, **kwargs): def create(self, request, *args, **kwargs):
id = request.data["signupForm_id"] id = request.data["signupForm_id"]
try: try: