From f48f78916a0fbf55550ff2bf751d374eb1e9421a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Oguz=20G=C3=B6gebakan?= Date: Tue, 13 Aug 2024 12:51:39 +0200 Subject: [PATCH 01/16] EndUserManagement case tests first commit. Debugging needed. --- EndUserManagement/dummyData/cases.py | 7 ++ .../management/commands/createDummyData.py | 18 +++-- tests/AdminManagement/__init__.py | 0 tests/EndUserManagement/__init__.py | 0 tests/EndUserManagement/testCaseEndpoints.py | 69 +++++++++++++++++++ tests/__init__.py | 0 6 files changed, 88 insertions(+), 6 deletions(-) create mode 100644 tests/AdminManagement/__init__.py create mode 100644 tests/EndUserManagement/__init__.py create mode 100644 tests/EndUserManagement/testCaseEndpoints.py create mode 100644 tests/__init__.py diff --git a/EndUserManagement/dummyData/cases.py b/EndUserManagement/dummyData/cases.py index f95f343..4863deb 100755 --- a/EndUserManagement/dummyData/cases.py +++ b/EndUserManagement/dummyData/cases.py @@ -57,6 +57,13 @@ ] } ] + }, + { + "Coverage": "INDIVIDUAL", + "Description": "I need psychological help about an issue. I would like to speak with a case worker in private.", + "Status": "REQUEST RECEIVED", + "CaseTypes": ["Health"], + "PsnTypes": [] } ], "Dilshad": [ diff --git a/EndUserManagement/management/commands/createDummyData.py b/EndUserManagement/management/commands/createDummyData.py index 8d3e5be..89cd677 100755 --- a/EndUserManagement/management/commands/createDummyData.py +++ b/EndUserManagement/management/commands/createDummyData.py @@ -59,6 +59,7 @@ def handle(self, *args, **options): dummyUser = User(**dummyUserInfo) dummyUser.set_password(dummyPwd) dummyUser.save() + print("User inserted") dummyCasesOfUser = dummyCases[dummyUserInfo["Name"]] if dummyUserInfo["Name"] in dummyCases else None if dummyCasesOfUser: for dummyCaseInfo in dummyCasesOfUser: @@ -70,14 +71,19 @@ def handle(self, *args, **options): dummyCase = Case(User = dummyUser, **caseCreateDict) # We first need to save the model for attaching many to many fields dummyCase.save() + print("Case inserted") # Attaching the case types - chosenCaseTypes = CaseType.objects.filter(name__in = dummyCaseInfo["CaseTypes"]) - for chosenCaseType in chosenCaseTypes: - dummyCase.CaseTypes.add(chosenCaseType) + caseTypes = dummyCaseInfo["CaseTypes"] if "CaseTypes" in dummyCaseInfo else None + if caseTypes: + chosenCaseTypes = CaseType.objects.filter(name__in = caseTypes) + for chosenCaseType in chosenCaseTypes: + dummyCase.CaseTypes.add(chosenCaseType) # Attaching the psn types - chosenPsnTypes = PsnType.objects.filter(name__in = dummyCaseInfo["PsnTypes"]) - for chosenPsnType in chosenPsnTypes: - dummyCase.PsnTypes.add(chosenPsnType) + psnTypes = dummyCaseInfo["PsnTypes"] if "PsnTypes" in dummyCaseInfo else None + if psnTypes: + chosenPsnTypes = PsnType.objects.filter(name__in = dummyCaseInfo["PsnTypes"]) + for chosenPsnType in chosenPsnTypes: + dummyCase.PsnTypes.add(chosenPsnType) # Calculating and setting the vulnerability score for household cases if dummyCase.Coverage == "HOUSEHOLD": vulnerabilityScore, vulnerabilityCategory = caseService.calcCaseVulnerabilityScore(dummyCase) diff --git a/tests/AdminManagement/__init__.py b/tests/AdminManagement/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/EndUserManagement/__init__.py b/tests/EndUserManagement/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/EndUserManagement/testCaseEndpoints.py b/tests/EndUserManagement/testCaseEndpoints.py new file mode 100644 index 0000000..75cd1d7 --- /dev/null +++ b/tests/EndUserManagement/testCaseEndpoints.py @@ -0,0 +1,69 @@ +import requests + +from django.test import TestCase +from EndUserManagement.models import Case +from EndUserManagement.dummyData import getDummyCases + +class CasesTestCase(TestCase): + def setUp(self): + # The host for the docker + self.baseServerUrl = "http://localhost:8000" + self.dummyUserEmail = "eduard@gmail.com" + self.dummyUserPwd = "1234567" + payload = { + "EmailAddress": self.dummyUserEmail, + "Password": self.dummyUserPwd + } + loginUrl = self.baseServerUrl + "/api/login" + # Send a POST request to the login endpoint + response = requests.post(loginUrl, json=payload) + + # Check if the request was successful (status code 200) + if response.status_code == 200: + # Parse the JSON response + responseData = response.json() + # Extract the accessToken from the response data + accessToken = responseData.get('data', {}).get('accessToken') + if accessToken: + self.dummyUserAccessToken = accessToken + else: + print(response.status_code) + print(response) + raise Exception("No access token in the login response. Check out the test set up method.") + else: + raise Exception("Login request failed. Check out the test set up method.") + + def test_case_list(self): + caseListUrl = self.baseServerUrl + "/cases" + caseListHeaders = { + 'Authorization': f'Bearer {self.dummyUserAccessToken}' + } + response = requests.get(caseListUrl, headers = caseListHeaders) + responseData = None + # Check if the request was successful (status code 200) + if response.status_code == 200: + # Parse the JSON response + responseData = response.json() + else: + raise Exception("Case list request failed.") + # Check if response is not an empty list + casesList = responseData['data'] + self.assertNotEqual(casesList, []) + self.assertEqual(len(casesList), 2) + dummyCases = getDummyCases() + casesExpected = dummyCases["Eduard"] + casesObserved = casesList + descriptionsExpected = [case["Description"] for case in casesExpected] + descriptionsObserved = [case["Description"] for case in casesObserved] + # Comparing the expected and observed desriptions of the cases + self.assertEqual(descriptionsExpected, descriptionsObserved) + + def test_case_create(self): + """Animals that can speak are correctly identified""" + print("ROARRR") + + def test_case_get(self): + """Animals that can speak are correctly identified""" + print("ROARRR") + + # NO CASE DELETE AND UPDATE FOR THE END USER \ No newline at end of file diff --git a/tests/__init__.py b/tests/__init__.py new file mode 100644 index 0000000..e69de29 From efbb5a14f9c92208aaa0e206a4e900706118cc5e Mon Sep 17 00:00:00 2001 From: Betul Karagoz Date: Tue, 13 Aug 2024 13:42:35 +0200 Subject: [PATCH 02/16] fix no access token error in test case --- tests/EndUserManagement/testCaseEndpoints.py | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/tests/EndUserManagement/testCaseEndpoints.py b/tests/EndUserManagement/testCaseEndpoints.py index 75cd1d7..a6d3242 100644 --- a/tests/EndUserManagement/testCaseEndpoints.py +++ b/tests/EndUserManagement/testCaseEndpoints.py @@ -7,28 +7,26 @@ class CasesTestCase(TestCase): def setUp(self): # The host for the docker - self.baseServerUrl = "http://localhost:8000" + self.baseServerUrl = "http://localhost:8000/api" self.dummyUserEmail = "eduard@gmail.com" self.dummyUserPwd = "1234567" payload = { "EmailAddress": self.dummyUserEmail, "Password": self.dummyUserPwd } - loginUrl = self.baseServerUrl + "/api/login" + loginUrl = self.baseServerUrl + "/login" # Send a POST request to the login endpoint response = requests.post(loginUrl, json=payload) # Check if the request was successful (status code 200) if response.status_code == 200: # Parse the JSON response - responseData = response.json() + responseData = response.json() # Extract the accessToken from the response data - accessToken = responseData.get('data', {}).get('accessToken') + accessToken = responseData.get('data', {}).get('access_token') if accessToken: self.dummyUserAccessToken = accessToken else: - print(response.status_code) - print(response) raise Exception("No access token in the login response. Check out the test set up method.") else: raise Exception("Login request failed. Check out the test set up method.") @@ -49,7 +47,7 @@ def test_case_list(self): # Check if response is not an empty list casesList = responseData['data'] self.assertNotEqual(casesList, []) - self.assertEqual(len(casesList), 2) + self.assertEqual(len(casesList), 1) dummyCases = getDummyCases() casesExpected = dummyCases["Eduard"] casesObserved = casesList @@ -60,10 +58,10 @@ def test_case_list(self): def test_case_create(self): """Animals that can speak are correctly identified""" - print("ROARRR") + print("test_case_create") def test_case_get(self): """Animals that can speak are correctly identified""" - print("ROARRR") + print("test_case_get") # NO CASE DELETE AND UPDATE FOR THE END USER \ No newline at end of file From 9d16139f1850aa4f889b8c4bdc6350ad741ffcf8 Mon Sep 17 00:00:00 2001 From: Betul Karagoz Date: Tue, 13 Aug 2024 13:45:39 +0200 Subject: [PATCH 03/16] change the assertion in case list --- tests/EndUserManagement/testCaseEndpoints.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/EndUserManagement/testCaseEndpoints.py b/tests/EndUserManagement/testCaseEndpoints.py index a6d3242..f8baf9a 100644 --- a/tests/EndUserManagement/testCaseEndpoints.py +++ b/tests/EndUserManagement/testCaseEndpoints.py @@ -47,7 +47,7 @@ def test_case_list(self): # Check if response is not an empty list casesList = responseData['data'] self.assertNotEqual(casesList, []) - self.assertEqual(len(casesList), 1) + self.assertEqual(len(casesList), 2) dummyCases = getDummyCases() casesExpected = dummyCases["Eduard"] casesObserved = casesList From 5232a77c1e73d3f0eeb2e69bc6b3cdd22c004cd7 Mon Sep 17 00:00:00 2001 From: Betul Karagoz Date: Tue, 13 Aug 2024 14:16:59 +0200 Subject: [PATCH 04/16] add test case for case create --- tests/EndUserManagement/testCaseEndpoints.py | 31 ++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/tests/EndUserManagement/testCaseEndpoints.py b/tests/EndUserManagement/testCaseEndpoints.py index f8baf9a..039686c 100644 --- a/tests/EndUserManagement/testCaseEndpoints.py +++ b/tests/EndUserManagement/testCaseEndpoints.py @@ -57,8 +57,35 @@ def test_case_list(self): self.assertEqual(descriptionsExpected, descriptionsObserved) def test_case_create(self): - """Animals that can speak are correctly identified""" - print("test_case_create") + caseCreateUrl = self.baseServerUrl + "/cases" + caseCreateHeaders = { + 'Authorization': f'Bearer {self.dummyUserAccessToken}' + } + + # Prepare data to send as form-data + data = { + 'Coverage': 'INDIVIDUAL', + 'Description': 'Test Description', + 'CaseTypes': ','.join(map(str, [1])), + 'PsnTypes': ','.join(map(str, [1])) + } + + # Send the POST request with form-data + response = requests.post(caseCreateUrl, headers=caseCreateHeaders, data=data) + print(response) + print(response.text) + + if response.status_code == 201: + responseData = response.json() + caseCreated = responseData.get('data', {}) + print(caseCreated) + self.assertIsNotNone(caseCreated) + self.assertEqual(caseCreated.get('Description'), data['Description']) + self.assertEqual(caseCreated.get('Coverage'), data['Coverage']) + self.assertEqual(caseCreated.get('PsnTypes'), ['1']) + self.assertEqual(caseCreated.get('CaseTypes'), ['1']) + else: + raise Exception(f"Case creation request failed with status code {response.status_code} and response: {response.text}") def test_case_get(self): """Animals that can speak are correctly identified""" From 8eccf13922ceb395b0b3e8897127c1b1c8b972f6 Mon Sep 17 00:00:00 2001 From: Betul Karagoz Date: Tue, 13 Aug 2024 14:22:52 +0200 Subject: [PATCH 05/16] fix the case create test case --- tests/EndUserManagement/testCaseEndpoints.py | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/tests/EndUserManagement/testCaseEndpoints.py b/tests/EndUserManagement/testCaseEndpoints.py index 039686c..cbf80a6 100644 --- a/tests/EndUserManagement/testCaseEndpoints.py +++ b/tests/EndUserManagement/testCaseEndpoints.py @@ -72,18 +72,16 @@ def test_case_create(self): # Send the POST request with form-data response = requests.post(caseCreateUrl, headers=caseCreateHeaders, data=data) - print(response) - print(response.text) if response.status_code == 201: responseData = response.json() caseCreated = responseData.get('data', {}) - print(caseCreated) + self.assertIsNotNone(caseCreated) self.assertEqual(caseCreated.get('Description'), data['Description']) self.assertEqual(caseCreated.get('Coverage'), data['Coverage']) - self.assertEqual(caseCreated.get('PsnTypes'), ['1']) - self.assertEqual(caseCreated.get('CaseTypes'), ['1']) + self.assertEqual(caseCreated.get('PsnTypes'), [1]) + self.assertEqual(caseCreated.get('CaseTypes'), [1]) else: raise Exception(f"Case creation request failed with status code {response.status_code} and response: {response.text}") From c4b29810be285664b9fa920b1e4b26ada33f1006 Mon Sep 17 00:00:00 2001 From: Betul Karagoz Date: Tue, 13 Aug 2024 14:35:04 +0200 Subject: [PATCH 06/16] add test cases for get request --- tests/EndUserManagement/testCaseEndpoints.py | 21 ++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/tests/EndUserManagement/testCaseEndpoints.py b/tests/EndUserManagement/testCaseEndpoints.py index cbf80a6..b1a9961 100644 --- a/tests/EndUserManagement/testCaseEndpoints.py +++ b/tests/EndUserManagement/testCaseEndpoints.py @@ -86,7 +86,24 @@ def test_case_create(self): raise Exception(f"Case creation request failed with status code {response.status_code} and response: {response.text}") def test_case_get(self): - """Animals that can speak are correctly identified""" - print("test_case_get") + caseGetUrl = f"{self.baseServerUrl}/cases/{1}" + caseGetHeaders = { + 'Authorization': f'Bearer {self.dummyUserAccessToken}' + } + + response = requests.get(caseGetUrl, headers=caseGetHeaders) + + if response.status_code == 200: + responseData = response.json() + caseRetrieved = responseData.get('data', {}) + + self.assertIsNotNone(caseRetrieved) + self.assertEqual(caseRetrieved.get('ID'), 1) # Check case ID matches + self.assertEqual(caseRetrieved.get('Coverage'), 'HOUSEHOLD') + self.assertEqual(caseRetrieved.get('Description'), "I arrived to Chisinau on x/x/2024 after our house in Kharkiv was bombarded by the Russian army. My father passed awayint eh hospital and together with my mother and sister we sought refuge in Moldova. We need a place to stay, clothes, food and some cashto survive. My mother is pregnant and needs medical assistance as well. We don't speak Romanian and don't know where to get assistance.") + self.assertEqual(caseRetrieved.get('CaseTypes'), []) # Adjust based on actual field format + self.assertEqual(caseRetrieved.get('PsnTypes'), []) # Adjust based on actual field format + else: + raise Exception(f"Case retrieval request failed with status code {response.status_code} and response: {response.text}") # NO CASE DELETE AND UPDATE FOR THE END USER \ No newline at end of file From 7e31cd43385f850befb09167cbcafa56ce119b32 Mon Sep 17 00:00:00 2001 From: Betul Karagoz Date: Tue, 13 Aug 2024 14:54:59 +0200 Subject: [PATCH 07/16] change the test case --- tests/EndUserManagement/testCaseEndpoints.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/EndUserManagement/testCaseEndpoints.py b/tests/EndUserManagement/testCaseEndpoints.py index b1a9961..a1e0a8a 100644 --- a/tests/EndUserManagement/testCaseEndpoints.py +++ b/tests/EndUserManagement/testCaseEndpoints.py @@ -96,13 +96,13 @@ def test_case_get(self): if response.status_code == 200: responseData = response.json() caseRetrieved = responseData.get('data', {}) - + print(caseRetrieved) self.assertIsNotNone(caseRetrieved) - self.assertEqual(caseRetrieved.get('ID'), 1) # Check case ID matches + self.assertEqual(caseRetrieved.get('ID'), 1) self.assertEqual(caseRetrieved.get('Coverage'), 'HOUSEHOLD') self.assertEqual(caseRetrieved.get('Description'), "I arrived to Chisinau on x/x/2024 after our house in Kharkiv was bombarded by the Russian army. My father passed awayint eh hospital and together with my mother and sister we sought refuge in Moldova. We need a place to stay, clothes, food and some cashto survive. My mother is pregnant and needs medical assistance as well. We don't speak Romanian and don't know where to get assistance.") - self.assertEqual(caseRetrieved.get('CaseTypes'), []) # Adjust based on actual field format - self.assertEqual(caseRetrieved.get('PsnTypes'), []) # Adjust based on actual field format + self.assertEqual(caseRetrieved.get('CaseTypes'), [1, 4, 6, 11]) + self.assertEqual(caseRetrieved.get('PsnTypes'), []) else: raise Exception(f"Case retrieval request failed with status code {response.status_code} and response: {response.text}") From 8d5a79df5599bd6e6d8748a0146a951cf007b366 Mon Sep 17 00:00:00 2001 From: Betul Karagoz Date: Tue, 13 Aug 2024 15:01:37 +0200 Subject: [PATCH 08/16] update pipeline --- .github/workflows/test.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 7bfa762..a69110b 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -26,18 +26,25 @@ jobs: python -m pip install --upgrade pip pip install -r requirements.txt + - name: Delete Existing SQLite Test DB + run: | + if [ -f db.sqlite3 ]; then rm db.sqlite3; fi + - name: Run migrations run: | python manage.py makemigrations python manage.py migrate + - name: Insert fixture data run: | chmod +x scripts/create_fixture_data.sh ./scripts/create_fixture_data.sh + - name: Insert dummy data if DB is empty run: | chmod +x scripts/create_dummy_data.sh ./scripts/create_dummy_data.sh + - name: Start Django server in the background run: | python manage.py runserver 0.0.0.0:8000 & @@ -47,6 +54,7 @@ jobs: - name: Run tests run: | python manage.py test + - name: Stop Django server run: | kill $(lsof -t -i:8000) || echo "Server stopped" From 77080d158e6cc4021ee432499bf86b4e40278909 Mon Sep 17 00:00:00 2001 From: Betul Karagoz Date: Tue, 13 Aug 2024 15:13:27 +0200 Subject: [PATCH 09/16] add case delete test --- tests/EndUserManagement/testCaseEndpoints.py | 48 ++++++++++++++++++-- 1 file changed, 43 insertions(+), 5 deletions(-) diff --git a/tests/EndUserManagement/testCaseEndpoints.py b/tests/EndUserManagement/testCaseEndpoints.py index a1e0a8a..80f1c76 100644 --- a/tests/EndUserManagement/testCaseEndpoints.py +++ b/tests/EndUserManagement/testCaseEndpoints.py @@ -1,5 +1,4 @@ import requests - from django.test import TestCase from EndUserManagement.models import Case from EndUserManagement.dummyData import getDummyCases @@ -96,14 +95,53 @@ def test_case_get(self): if response.status_code == 200: responseData = response.json() caseRetrieved = responseData.get('data', {}) - print(caseRetrieved) + self.assertIsNotNone(caseRetrieved) self.assertEqual(caseRetrieved.get('ID'), 1) self.assertEqual(caseRetrieved.get('Coverage'), 'HOUSEHOLD') self.assertEqual(caseRetrieved.get('Description'), "I arrived to Chisinau on x/x/2024 after our house in Kharkiv was bombarded by the Russian army. My father passed awayint eh hospital and together with my mother and sister we sought refuge in Moldova. We need a place to stay, clothes, food and some cashto survive. My mother is pregnant and needs medical assistance as well. We don't speak Romanian and don't know where to get assistance.") - self.assertEqual(caseRetrieved.get('CaseTypes'), [1, 4, 6, 11]) - self.assertEqual(caseRetrieved.get('PsnTypes'), []) else: raise Exception(f"Case retrieval request failed with status code {response.status_code} and response: {response.text}") - # NO CASE DELETE AND UPDATE FOR THE END USER \ No newline at end of file + def test_case_delete(self): + # Create a case to be deleted + case_id = self.create_test_case() + + caseDeleteUrl = f"{self.baseServerUrl}/cases/{case_id}" + caseDeleteHeaders = { + 'Authorization': f'Bearer {self.dummyUserAccessToken}' + } + + response = requests.delete(caseDeleteUrl, headers=caseDeleteHeaders) + print(response) + + self.assertEqual(response.status_code, 200) + + response = requests.get(caseDeleteUrl, headers=caseDeleteHeaders) + + self.assertEqual(response.status_code, 404) + + def create_test_case(self): + caseCreateUrl = self.baseServerUrl + "/cases" + caseCreateHeaders = { + 'Authorization': f'Bearer {self.dummyUserAccessToken}' + } + + # Prepare data to send as form-data + data = { + 'Coverage': 'INDIVIDUAL', + 'Description': 'Test Case for Deletion', + 'CaseTypes': ','.join(map(str, [])), + 'PsnTypes': ','.join(map(str, [])) + } + + response = requests.post(caseCreateUrl, headers=caseCreateHeaders, data=data) + + + if response.status_code == 201: + responseData = response.json() + caseCreated = responseData.get('data', {}) + + return caseCreated.get('ID') + else: + raise Exception(f"Case creation request failed with status code {response.status_code} and response: {response.text}") \ No newline at end of file From a941fdedb870a1118018ec30a77a610554e695c5 Mon Sep 17 00:00:00 2001 From: Betul Karagoz Date: Tue, 13 Aug 2024 15:15:32 +0200 Subject: [PATCH 10/16] delete print --- tests/EndUserManagement/testCaseEndpoints.py | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/EndUserManagement/testCaseEndpoints.py b/tests/EndUserManagement/testCaseEndpoints.py index 80f1c76..527e825 100644 --- a/tests/EndUserManagement/testCaseEndpoints.py +++ b/tests/EndUserManagement/testCaseEndpoints.py @@ -113,7 +113,6 @@ def test_case_delete(self): } response = requests.delete(caseDeleteUrl, headers=caseDeleteHeaders) - print(response) self.assertEqual(response.status_code, 200) From 06bc34d7b1d51b9c16da775fb0c39528fed281c1 Mon Sep 17 00:00:00 2001 From: Betul Karagoz Date: Tue, 13 Aug 2024 15:17:42 +0200 Subject: [PATCH 11/16] add a required field case type --- tests/EndUserManagement/testCaseEndpoints.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tests/EndUserManagement/testCaseEndpoints.py b/tests/EndUserManagement/testCaseEndpoints.py index 527e825..33ecb9a 100644 --- a/tests/EndUserManagement/testCaseEndpoints.py +++ b/tests/EndUserManagement/testCaseEndpoints.py @@ -130,8 +130,7 @@ def create_test_case(self): data = { 'Coverage': 'INDIVIDUAL', 'Description': 'Test Case for Deletion', - 'CaseTypes': ','.join(map(str, [])), - 'PsnTypes': ','.join(map(str, [])) + 'CaseTypes': ','.join(map(str, [1])), } response = requests.post(caseCreateUrl, headers=caseCreateHeaders, data=data) From ba747e721471ce2e2248952ae0e3aa6a36de62a8 Mon Sep 17 00:00:00 2001 From: Betul Karagoz Date: Tue, 13 Aug 2024 15:24:38 +0200 Subject: [PATCH 12/16] print cases --- tests/EndUserManagement/testCaseEndpoints.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/EndUserManagement/testCaseEndpoints.py b/tests/EndUserManagement/testCaseEndpoints.py index 33ecb9a..4d8c577 100644 --- a/tests/EndUserManagement/testCaseEndpoints.py +++ b/tests/EndUserManagement/testCaseEndpoints.py @@ -45,6 +45,7 @@ def test_case_list(self): raise Exception("Case list request failed.") # Check if response is not an empty list casesList = responseData['data'] + print(casesList) self.assertNotEqual(casesList, []) self.assertEqual(len(casesList), 2) dummyCases = getDummyCases() From beacff39806cc3fbaed7a4c42c5b3ca1e2ae062f Mon Sep 17 00:00:00 2001 From: Betul Karagoz Date: Tue, 13 Aug 2024 15:36:27 +0200 Subject: [PATCH 13/16] add tear down method for test --- tests/EndUserManagement/testCaseEndpoints.py | 46 +++++++++++++++----- 1 file changed, 34 insertions(+), 12 deletions(-) diff --git a/tests/EndUserManagement/testCaseEndpoints.py b/tests/EndUserManagement/testCaseEndpoints.py index 4d8c577..2bef62f 100644 --- a/tests/EndUserManagement/testCaseEndpoints.py +++ b/tests/EndUserManagement/testCaseEndpoints.py @@ -30,12 +30,32 @@ def setUp(self): else: raise Exception("Login request failed. Check out the test set up method.") + def tearDown(self): + # Clean up: Delete all test cases created by the tests + caseListUrl = self.baseServerUrl + "/cases" + caseListHeaders = { + 'Authorization': f'Bearer {self.dummyUserAccessToken}' + } + response = requests.get(caseListUrl, headers=caseListHeaders) + if response.status_code == 200: + responseData = response.json() + casesList = responseData.get('data', []) + for case in casesList: + case_id = case.get('ID') + if case_id: + deleteUrl = f"{self.baseServerUrl}/cases/{case_id}" + requests.delete(deleteUrl, headers=caseListHeaders) + def test_case_list(self): + # Create a known number of cases to test the list functionality + self.create_test_case(description='Case for List Test 1') + self.create_test_case(description='Case for List Test 2') + caseListUrl = self.baseServerUrl + "/cases" caseListHeaders = { 'Authorization': f'Bearer {self.dummyUserAccessToken}' } - response = requests.get(caseListUrl, headers = caseListHeaders) + response = requests.get(caseListUrl, headers=caseListHeaders) responseData = None # Check if the request was successful (status code 200) if response.status_code == 200: @@ -45,7 +65,7 @@ def test_case_list(self): raise Exception("Case list request failed.") # Check if response is not an empty list casesList = responseData['data'] - print(casesList) + self.assertNotEqual(casesList, []) self.assertEqual(len(casesList), 2) dummyCases = getDummyCases() @@ -53,7 +73,7 @@ def test_case_list(self): casesObserved = casesList descriptionsExpected = [case["Description"] for case in casesExpected] descriptionsObserved = [case["Description"] for case in casesObserved] - # Comparing the expected and observed desriptions of the cases + # Comparing the expected and observed descriptions of the cases self.assertEqual(descriptionsExpected, descriptionsObserved) def test_case_create(self): @@ -86,7 +106,10 @@ def test_case_create(self): raise Exception(f"Case creation request failed with status code {response.status_code} and response: {response.text}") def test_case_get(self): - caseGetUrl = f"{self.baseServerUrl}/cases/{1}" + # Create a case to get + case_id = self.create_test_case(description='Case for Get Test') + + caseGetUrl = f"{self.baseServerUrl}/cases/{case_id}" caseGetHeaders = { 'Authorization': f'Bearer {self.dummyUserAccessToken}' } @@ -98,15 +121,14 @@ def test_case_get(self): caseRetrieved = responseData.get('data', {}) self.assertIsNotNone(caseRetrieved) - self.assertEqual(caseRetrieved.get('ID'), 1) - self.assertEqual(caseRetrieved.get('Coverage'), 'HOUSEHOLD') - self.assertEqual(caseRetrieved.get('Description'), "I arrived to Chisinau on x/x/2024 after our house in Kharkiv was bombarded by the Russian army. My father passed awayint eh hospital and together with my mother and sister we sought refuge in Moldova. We need a place to stay, clothes, food and some cashto survive. My mother is pregnant and needs medical assistance as well. We don't speak Romanian and don't know where to get assistance.") + self.assertEqual(caseRetrieved.get('ID'), case_id) + self.assertEqual(caseRetrieved.get('Description'), 'Case for Get Test') else: raise Exception(f"Case retrieval request failed with status code {response.status_code} and response: {response.text}") - + def test_case_delete(self): # Create a case to be deleted - case_id = self.create_test_case() + case_id = self.create_test_case(description='Case for Deletion') caseDeleteUrl = f"{self.baseServerUrl}/cases/{case_id}" caseDeleteHeaders = { @@ -121,7 +143,7 @@ def test_case_delete(self): self.assertEqual(response.status_code, 404) - def create_test_case(self): + def create_test_case(self, description='Test Case'): caseCreateUrl = self.baseServerUrl + "/cases" caseCreateHeaders = { 'Authorization': f'Bearer {self.dummyUserAccessToken}' @@ -130,13 +152,13 @@ def create_test_case(self): # Prepare data to send as form-data data = { 'Coverage': 'INDIVIDUAL', - 'Description': 'Test Case for Deletion', + 'Description': description, 'CaseTypes': ','.join(map(str, [1])), + 'PsnTypes': ','.join(map(str, [1])) } response = requests.post(caseCreateUrl, headers=caseCreateHeaders, data=data) - if response.status_code == 201: responseData = response.json() caseCreated = responseData.get('data', {}) From a63dc72f55b4ba8ee237c1090a2c593675348d1c Mon Sep 17 00:00:00 2001 From: Betul Karagoz Date: Tue, 13 Aug 2024 15:40:47 +0200 Subject: [PATCH 14/16] do not create test cases for list test, fetch from dummy data --- tests/EndUserManagement/testCaseEndpoints.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/tests/EndUserManagement/testCaseEndpoints.py b/tests/EndUserManagement/testCaseEndpoints.py index 2bef62f..8fd1690 100644 --- a/tests/EndUserManagement/testCaseEndpoints.py +++ b/tests/EndUserManagement/testCaseEndpoints.py @@ -48,9 +48,6 @@ def tearDown(self): def test_case_list(self): # Create a known number of cases to test the list functionality - self.create_test_case(description='Case for List Test 1') - self.create_test_case(description='Case for List Test 2') - caseListUrl = self.baseServerUrl + "/cases" caseListHeaders = { 'Authorization': f'Bearer {self.dummyUserAccessToken}' From 44c38653a5927ded92cd17286d2aa95de67d9c67 Mon Sep 17 00:00:00 2001 From: Betul Karagoz Date: Tue, 13 Aug 2024 15:50:44 +0200 Subject: [PATCH 15/16] check the number of cases in list --- tests/EndUserManagement/testCaseEndpoints.py | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/tests/EndUserManagement/testCaseEndpoints.py b/tests/EndUserManagement/testCaseEndpoints.py index 8fd1690..53b58ab 100644 --- a/tests/EndUserManagement/testCaseEndpoints.py +++ b/tests/EndUserManagement/testCaseEndpoints.py @@ -48,6 +48,9 @@ def tearDown(self): def test_case_list(self): # Create a known number of cases to test the list functionality + self.create_test_case(description='Case for List Test 1') + self.create_test_case(description='Case for List Test 2') + caseListUrl = self.baseServerUrl + "/cases" caseListHeaders = { 'Authorization': f'Bearer {self.dummyUserAccessToken}' @@ -65,13 +68,7 @@ def test_case_list(self): self.assertNotEqual(casesList, []) self.assertEqual(len(casesList), 2) - dummyCases = getDummyCases() - casesExpected = dummyCases["Eduard"] - casesObserved = casesList - descriptionsExpected = [case["Description"] for case in casesExpected] - descriptionsObserved = [case["Description"] for case in casesObserved] - # Comparing the expected and observed descriptions of the cases - self.assertEqual(descriptionsExpected, descriptionsObserved) + def test_case_create(self): caseCreateUrl = self.baseServerUrl + "/cases" From 1af710255eda2ba4cbe69ab52a8a036c809916b1 Mon Sep 17 00:00:00 2001 From: Betul Karagoz Date: Tue, 13 Aug 2024 16:04:51 +0200 Subject: [PATCH 16/16] add update test case --- tests/EndUserManagement/testCaseEndpoints.py | 28 +++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/tests/EndUserManagement/testCaseEndpoints.py b/tests/EndUserManagement/testCaseEndpoints.py index 53b58ab..5d1dac6 100644 --- a/tests/EndUserManagement/testCaseEndpoints.py +++ b/tests/EndUserManagement/testCaseEndpoints.py @@ -159,4 +159,30 @@ def create_test_case(self, description='Test Case'): return caseCreated.get('ID') else: - raise Exception(f"Case creation request failed with status code {response.status_code} and response: {response.text}") \ No newline at end of file + raise Exception(f"Case creation request failed with status code {response.status_code} and response: {response.text}") + + + def test_case_update(self): + case_id = self.create_test_case(description='Original Case Description') + + caseUpdateUrl = f"{self.baseServerUrl}/cases/{case_id}" + caseUpdateHeaders = { + 'Authorization': f'Bearer {self.dummyUserAccessToken}', + 'Content-Type': 'application/json' + } + + updatedData = { + 'Description': 'Updated Case Description', + } + + response = requests.patch(caseUpdateUrl, headers=caseUpdateHeaders, json=updatedData) + + if response.status_code == 200: + responseData = response.json() + caseUpdated = responseData.get('data', {}) + + + self.assertIsNotNone(caseUpdated) + self.assertEqual(caseUpdated.get('Description'), updatedData['Description']) + else: + raise Exception(f"Case update request failed with status code {response.status_code} and response: {response.text}") \ No newline at end of file