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
install:
image: node:14
image: node:16
stage: setup
script:
- npm ci
@@ -57,14 +57,14 @@ lint:py:
- black --check .
lint:js:
image: node:14
image: node:16
stage: lint
needs: ["install"]
script:
- npm run lint:js
lint:md:
image: node:14
image: node:16
stage: lint
needs: ["install"]
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.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"
self.authClient = User.objects.create_superuser(
@@ -49,17 +56,17 @@ class SignupTestCase(APITestCase):
new = createSignupRequest("asd", self.signupForm.id, ALL_QUESTION_TYPES_ANSWER)
response = self.client.post(URL, new, format="json")
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
def test_create_signup_hidden(self):
new = createSignupRequest("asd", self.hiddenForm.id, ALL_QUESTION_TYPES_ANSWER)
response = self.client.post(URL, new, format="json")
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):
id = self.signup1.id
id = self.signup_admin_delete.id
no_auth_response = self.client.delete(f"{URL}{id}/", format="json")
self.assertEqual(no_auth_response.status_code, status.HTTP_401_UNAUTHORIZED)
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(Signup.objects.get(id=id).answer["-naY2R1-h"], "Edited Testi")
@skip("NotImplemented")
def test_delete_signup_token(self):
pass
def test_delete_as_user(self):
bad_uuid = "d5a98794-8330-45b4-8ed4-cdb84198649b"
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
def test_signupee_sendemail(self):
+21 -1
View File
@@ -200,7 +200,13 @@ class SignupViewSet(ModelViewSet):
serializer_class = SignupSerializer
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):
uuid = request.query_params.get("uuid", None)
queryset = self.filter_queryset(self.get_queryset())
@@ -211,6 +217,20 @@ class SignupViewSet(ModelViewSet):
elif request.method == "PUT":
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):
id = request.data["signupForm_id"]
try: