/
test_permissions_ajax.py
111 lines (99 loc) · 3.51 KB
/
test_permissions_ajax.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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
from unittest import skip
import cattr
from django.urls import reverse
from projectroles.tests.test_permissions_api import TestProjectAPIPermissionBase
import requests_mock
from .factories import SiteFactory
from ..models import Site
from ..models_api import BeaconAlleleRequest
class TestOrganisationAjaxViews(TestProjectAPIPermissionBase):
@requests_mock.Mocker()
def test_get(self, r_mock):
_local_site = SiteFactory(role=Site.LOCAL)
remote_site = SiteFactory()
url = reverse("beaconsite:ajax-beacon-info", kwargs={"site": remote_site.sodar_uuid},)
good_users = [
self.superuser,
]
bad_users = [
self.owner_as.user,
self.delegate_as.user,
self.contributor_as.user,
self.guest_as.user,
self.anonymous,
self.user_no_roles,
]
r_mock.get(
remote_site.entrypoint_url,
status_code=200,
json={
"id": "com.example.beacon",
"name": "Example Beacon Site",
"apiVersion": "v1.0.0",
"organisation": {
"id": "com.example",
"name": "Example Org",
"description": "Just for example...",
},
"datasets": [
{
"id": "com.example.beacon.ds-1",
"name": "Dataset",
"assembly": "GRCh37",
"description": None,
}
],
},
)
self.assert_response(url, good_users, 200, method="GET")
self.assert_response(url, bad_users, 302, method="GET") # redirect to login
class TestBeaconQueryAjaxView(TestProjectAPIPermissionBase):
@requests_mock.Mocker()
def test_get(self, r_mock):
_local_site = SiteFactory(role=Site.LOCAL)
remote_site = SiteFactory()
beacon_allele_request = BeaconAlleleRequest(
assemblyId="GRCh37",
referenceName="1",
start=123,
referenceBases="C",
alternateBases="T",
)
url_params = "&".join(
"%s=%s" % (k, v) for k, v in cattr.unstructure(beacon_allele_request).items()
)
url = reverse("beaconsite:ajax-beacon-query", kwargs={"site": remote_site.sodar_uuid},)
good_users = [
self.superuser,
]
bad_users = [
self.owner_as.user,
self.delegate_as.user,
self.contributor_as.user,
self.guest_as.user,
self.anonymous,
self.user_no_roles,
]
r_mock.get(
"%s/query?%s" % (remote_site.entrypoint_url, url_params),
status_code=200,
json={
"beaconId": "com.example.beacon",
"apiVersion": "v1.0.0",
"exists": True,
"alleleRequest": {
"referenceName": "1",
"referenceBases": "G",
"start": 16977,
"alternateBases": "A",
"assemblyId": "GRCh37",
},
"datasetAlleleResponse": None,
"error": None,
},
)
self.maxDiff = None
self.assert_response("%s?%s" % (url, url_params), good_users, 200, method="GET")
self.assert_response(
"%s?%s" % (url, url_params), bad_users, 302, method="GET"
) # redirect to login