|
4 | 4 | from rest_framework.reverse import reverse |
5 | 5 |
|
6 | 6 | from chord_metadata_service.authz.tests.helpers import AuthzAPITestCase |
| 7 | +from chord_metadata_service.chord.models import Dataset |
| 8 | +from chord_metadata_service.chord.tests.constants import valid_dataset_1, VALID_PROJECT_2 |
7 | 9 | from chord_metadata_service.chord.tests.helpers import AuthzAPITestCaseWithProjectJSON |
8 | 10 | from ..models import Resource |
9 | 11 | from ..serializers import ResourceSerializer |
@@ -38,6 +40,14 @@ def setUp(self): |
38 | 40 | self.url = reverse("resource-list") |
39 | 41 | self.url_with_proj = f"{self.url}?project={self.project['identifier']}" |
40 | 42 |
|
| 43 | + r = self.one_authz_post(reverse("project-list"), json=VALID_PROJECT_2) |
| 44 | + self.project_2 = r.json() |
| 45 | + |
| 46 | + r = self.one_authz_post(reverse("dataset-list"), json=valid_dataset_1(self.project['identifier'])) |
| 47 | + self.dataset = r.json() |
| 48 | + |
| 49 | + self.url_with_proj_ds = f"{self.url}?project={self.project['identifier']}&dataset={self.dataset['identifier']}" |
| 50 | + |
41 | 51 | def test_list_resources_basic(self): |
42 | 52 | self.one_authz_post(self.url, json=VALID_RESOURCE_1) |
43 | 53 | self.one_authz_post(self.url, json=VALID_RESOURCE_2) |
@@ -66,3 +76,26 @@ def test_list_resources_forbidden(self): |
66 | 76 |
|
67 | 77 | response = self.one_no_authz_get(self.url_with_proj) |
68 | 78 | self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) |
| 79 | + |
| 80 | + def test_list_resources_project_dataset(self): |
| 81 | + r = Resource.objects.create(**VALID_RESOURCE_1) |
| 82 | + Resource.objects.create(**VALID_RESOURCE_2) # r2 |
| 83 | + |
| 84 | + ds = Dataset.objects.get(pk=self.dataset["identifier"]) |
| 85 | + ds.additional_resources.add(r) |
| 86 | + |
| 87 | + res = self.one_authz_get(self.url) |
| 88 | + self.assertEqual(res.status_code, status.HTTP_200_OK) |
| 89 | + self.assertEqual(len(res.json()["results"]), 2) |
| 90 | + |
| 91 | + res = self.one_authz_get(self.url_with_proj) |
| 92 | + self.assertEqual(res.status_code, status.HTTP_200_OK) |
| 93 | + self.assertEqual(len(res.json()["results"]), 1) |
| 94 | + |
| 95 | + res = self.one_authz_get(f"{self.url}?project={self.project_2['identifier']}") |
| 96 | + self.assertEqual(res.status_code, status.HTTP_200_OK) |
| 97 | + self.assertEqual(len(res.json()["results"]), 0) |
| 98 | + |
| 99 | + res = self.one_authz_get(self.url_with_proj_ds) |
| 100 | + self.assertEqual(res.status_code, status.HTTP_200_OK) |
| 101 | + self.assertEqual(len(res.json()["results"]), 1) |
0 commit comments