Skip to content

Commit 1df59cd

Browse files
committed
test(resources): resource list scoping
1 parent eda7daa commit 1df59cd

File tree

2 files changed

+39
-0
lines changed

2 files changed

+39
-0
lines changed

chord_metadata_service/chord/tests/constants.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
__all__ = [
44
"VALID_DATA_USE_1",
55
"VALID_PROJECT_1",
6+
"VALID_PROJECT_2",
67
"VALID_DATS_CREATORS",
78
"INVALID_DATS_CREATORS",
89
"valid_dataset_1",
@@ -42,6 +43,11 @@
4243
"description": "Some description",
4344
}
4445

46+
VALID_PROJECT_2 = {
47+
"title": "Project 2",
48+
"description": "Some description too",
49+
}
50+
4551
VALID_DATS_CREATORS = [
4652
{
4753
"name": "1000 Genomes Project"

chord_metadata_service/resources/tests/test_api.py

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
from rest_framework.reverse import reverse
55

66
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
79
from chord_metadata_service.chord.tests.helpers import AuthzAPITestCaseWithProjectJSON
810
from ..models import Resource
911
from ..serializers import ResourceSerializer
@@ -38,6 +40,14 @@ def setUp(self):
3840
self.url = reverse("resource-list")
3941
self.url_with_proj = f"{self.url}?project={self.project['identifier']}"
4042

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+
4151
def test_list_resources_basic(self):
4252
self.one_authz_post(self.url, json=VALID_RESOURCE_1)
4353
self.one_authz_post(self.url, json=VALID_RESOURCE_2)
@@ -66,3 +76,26 @@ def test_list_resources_forbidden(self):
6676

6777
response = self.one_no_authz_get(self.url_with_proj)
6878
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

Comments
 (0)