-
Notifications
You must be signed in to change notification settings - Fork 11
/
test_views_api.py
88 lines (80 loc) · 3.38 KB
/
test_views_api.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
import cattr
from django.shortcuts import reverse
from projectroles.tests.test_views_api import TestAPIViewsBase
from variants.tests.factories import SmallVariantFactory
from .test_permissions_api import AcceptHeaderMixin
from ..models import Site
from .factories import ConsortiumWithLocalAndRemoteSiteFactory, ConsortiumAssignmentFactory
from ..models_api import BeaconAlleleRequest
class TestBeaconInfoApiView(AcceptHeaderMixin, TestAPIViewsBase):
def setUp(self):
super().setUp()
self.consortium = ConsortiumWithLocalAndRemoteSiteFactory()
self.local_site = Site.objects.get(role=Site.LOCAL)
self.remote_site = Site.objects.get(role=Site.REMOTE)
ConsortiumAssignmentFactory(
consortium=self.consortium, project=self.project,
)
def test_get_info(self):
with self.login(self.user):
extra = self.get_accept_header(None, None)
response = self.client.get(reverse("beaconsite:beacon-api-info"), **extra)
self.assertEqual(response.status_code, 200)
self.assertEqual(
response.json(),
{
"id": self.local_site.identifier,
"name": self.local_site.title,
"apiVersion": "v1.0.0",
"organisation": {
"id": str(self.local_site.sodar_uuid),
"name": self.local_site.title,
"description": self.local_site.description,
},
"datasets": [
{
"id": str(self.project.sodar_uuid),
"name": self.project.title,
"assembly": "GRCh37",
"description": str(self.project.description),
}
],
},
)
class TestBeaconQueryApiView(AcceptHeaderMixin, TestAPIViewsBase):
def setUp(self):
super().setUp()
self.consortium = ConsortiumWithLocalAndRemoteSiteFactory()
self.local_site = Site.objects.get(role=Site.LOCAL)
self.remote_site = Site.objects.get(role=Site.REMOTE)
ConsortiumAssignmentFactory(
consortium=self.consortium, project=self.project,
)
self.small_variant = SmallVariantFactory(case__project=self.project)
self.beacon_allele_request = BeaconAlleleRequest(
assemblyId=self.small_variant.release,
referenceName=self.small_variant.chromosome,
start=self.small_variant.start,
referenceBases=self.small_variant.reference,
alternateBases=self.small_variant.alternative,
)
def test_query(self):
url = reverse("beaconsite:beacon-api-query")
url += "?" + "&".join(
"%s=%s" % (k, v) for k, v in cattr.unstructure(self.beacon_allele_request).items()
)
with self.login(self.user):
extra = self.get_accept_header(None, None)
response = self.client.get(url, **extra)
self.assertEqual(response.status_code, 200)
self.assertEqual(
response.json(),
{
"alleleRequest": cattr.unstructure(self.beacon_allele_request),
"apiVersion": "v1.0.0",
"beaconId": self.local_site.identifier,
"datasetAlleleResponse": None,
"error": None,
"exists": False,
},
)