Skip to content

Commit 10a0b94

Browse files
authored
Merge pull request #122 from browserstack/test-get_access_request
tests: adding bdd tests for get_request_access in accessrequest_helpe…
2 parents 87738be + 1746b43 commit 10a0b94

File tree

2 files changed

+330
-0
lines changed

2 files changed

+330
-0
lines changed
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
Feature: Get Request Access
2+
3+
Scenario: verify generic form key
4+
Given empty configured access_modules are There
5+
And get_request has zero modules
6+
When get_request_access function is called
7+
Then Return value should be empty access list
8+
9+
Scenario: get_access_request returns correct response
10+
Given four configured access_modules are There
11+
And get_request has four modules
12+
When get_request_access function is called
13+
Then Return value should return all four access list with all seven present keynames
14+
15+
Scenario: get_access_request returns correct response with extra fields
16+
Given four configured access_modules are There
17+
And two with extra fields and two without extra fields
18+
When get_request_access function is called
19+
Then Return value should return all four access with extra fields
20+
21+
Scenario: get_access_request returns correct response with notice/alert
22+
Given four configured access_modules are There
23+
And two with extra notice/alert and two without notice/alert
24+
When get_request_access function is called
25+
Then Return value should return all four access with notice/alert
26+
27+
Scenario: verify response with array of access list with two elements
28+
Given four configured access_modules are There
29+
And get_request has two modules
30+
When get_request_access function is called
31+
Then Return value should be access list with two modules
32+
33+
Scenario: verify response with array of access list with empty elements
34+
Given four configured access_modules are There
35+
And get_request has zero modules
36+
When get_request_access function is called
37+
Then Return value should be empty access list
38+
39+
Scenario: verify response with array of access list with all elements
40+
Given four configured access_modules are There
41+
And get_request has four modules
42+
When get_request_access function is called
43+
Then Return value should return all four access list with all seven present keynames
44+
45+
Scenario: get_request_access is called with invalid parameters
46+
Given four configured access_modules are There
47+
And get_request does not have accesses key
48+
When get_request_access function is called
49+
Then Return value should be error json
50+
51+
Scenario: get_request_access is called with invalid request type
52+
Given request is post request
53+
When get_request_access function is called for invalid request type
54+
Then Return value should be error json
55+
Lines changed: 275 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,275 @@
1+
"""Get Request Access feature tests."""
2+
3+
from pytest_bdd import (
4+
given,
5+
scenario,
6+
then,
7+
when,
8+
)
9+
import pytest
10+
from .. import accessrequest_helper
11+
from Access import helpers
12+
13+
14+
@pytest.fixture
15+
def user(mocker):
16+
user = mocker.MagicMock()
17+
user.email = "[email protected]"
18+
user.user.username = "test-user"
19+
return user
20+
21+
22+
@pytest.fixture
23+
def context(mocker):
24+
context = mocker.MagicMock()
25+
return context
26+
27+
28+
@scenario(
29+
"features/get_request_access.feature", "get_access_request returns correct response"
30+
)
31+
def test_get_access_request_returns_correct_response():
32+
"""get_access_request returns correct response."""
33+
pass
34+
35+
36+
@scenario(
37+
"features/get_request_access.feature",
38+
"get_access_request returns correct response with extra fields",
39+
)
40+
def test_get_access_request_returns_correct_response_with_extra_fields():
41+
"""get_access_request returns correct response with extra fields."""
42+
pass
43+
44+
45+
@scenario(
46+
"features/get_request_access.feature",
47+
"get_access_request returns correct response with notice/alert",
48+
)
49+
def test_get_access_request_returns_correct_response_with_noticealert():
50+
"""get_access_request returns correct response with notice/alert."""
51+
pass
52+
53+
54+
@scenario(
55+
"features/get_request_access.feature",
56+
"get_request_access is called with invalid parameters",
57+
)
58+
def test_get_request_access_is_called_with_invalid_parameters():
59+
"""get_request_access is called with invalid parameters."""
60+
pass
61+
62+
63+
@scenario(
64+
"features/get_request_access.feature",
65+
"get_request_access is called with invalid request type",
66+
)
67+
def test_get_request_access_is_called_with_invalid_request_type():
68+
"""get_request_access is called with invalid request type."""
69+
pass
70+
71+
72+
@scenario("features/get_request_access.feature", "verify generic form key")
73+
def test_verify_generic_form_key():
74+
"""verify generic form key."""
75+
pass
76+
77+
78+
@scenario(
79+
"features/get_request_access.feature",
80+
"verify response with array of access list with all elements",
81+
)
82+
def test_verify_response_with_array_of_access_list_with_all_elements():
83+
"""verify response with array of access list with all elements."""
84+
pass
85+
86+
87+
@scenario(
88+
"features/get_request_access.feature",
89+
"verify response with array of access list with empty elements",
90+
)
91+
def test_verify_response_with_array_of_access_list_with_empty_elements():
92+
"""verify response with array of access list with empty elements."""
93+
pass
94+
95+
96+
@scenario(
97+
"features/get_request_access.feature",
98+
"verify response with array of access list with two elements",
99+
)
100+
def test_verify_response_with_array_of_access_list_with_two_elements():
101+
"""verify response with array of access list with two elements."""
102+
pass
103+
104+
105+
@given("empty configured access_modules are There")
106+
def step_impl(context, mocker):
107+
get_available_access_modules = mocker.MagicMock(return_value={})
108+
context.get_available_access_modules = get_available_access_modules
109+
110+
111+
@given("four configured access_modules are There")
112+
def step_impl(mocker, context):
113+
mocked_modules = {
114+
"access_tag1": mocker.MagicMock(),
115+
"access_tag2": mocker.MagicMock(),
116+
"access_tag3": mocker.MagicMock(),
117+
"access_tag4": mocker.MagicMock(),
118+
}
119+
mocker.patch(
120+
"Access.helpers.get_available_access_modules", return_value=mocked_modules
121+
)
122+
123+
124+
@given("get_request does not have accesses key")
125+
def step_impl(mocker, context):
126+
"""get_request does ot have accesses key."""
127+
context.request = mocker.MagicMock()
128+
context.request.GET.getlist.side_effect = KeyError("accesses")
129+
130+
131+
@given("get_request has four modules")
132+
def step_impl(context, mocker):
133+
context.request = mocker.MagicMock()
134+
context.request.GET.getlist.return_value = [
135+
"access_access_tag1",
136+
"access_access_tag2",
137+
"access_access_tag3",
138+
"access_access_tag4",
139+
]
140+
141+
142+
@given("get_request has two modules")
143+
def step_impl(context, mocker):
144+
context.request = mocker.MagicMock()
145+
context.request.GET.getlist.return_value = [
146+
"access_access_tag1",
147+
"access_access_tag2",
148+
]
149+
150+
151+
@given("get_request has zero modules")
152+
def step_impl(context, mocker):
153+
context.request = mocker.MagicMock()
154+
context.request.GET.getlist.return_value = []
155+
156+
157+
@given("request is post request")
158+
def step_impl(context, mocker):
159+
context.request = mocker.MagicMock()
160+
context.request.method = "POST"
161+
162+
163+
@given("two with extra fields and two without extra fields")
164+
def step_impl(context, mocker):
165+
context.request = mocker.MagicMock()
166+
context.request.GET.getlist.return_value = [
167+
"access_access_tag1",
168+
"access_access_tag2",
169+
"access_access_tag3",
170+
"access_access_tag4",
171+
]
172+
access_tag1 = mocker.MagicMock()
173+
access_tag2 = mocker.MagicMock()
174+
access_tag3 = mocker.MagicMock()
175+
access_tag4 = mocker.MagicMock()
176+
each_module = [access_tag1, access_tag2, access_tag3, access_tag4]
177+
mocker.patch.object(
178+
each_module[0], "get_extra_fields", return_value="mocked_extra_fields1"
179+
)
180+
mocker.patch.object(
181+
each_module[1], "get_extra_fields", return_value="mocked_extra_fields2"
182+
)
183+
184+
185+
@given("two with extra notice/alert and two without notice/alert")
186+
def step_impl(context, mocker):
187+
context.request = mocker.MagicMock()
188+
context.request.GET.getlist.return_value = [
189+
"access_access_tag1",
190+
"access_access_tag2",
191+
"access_access_tag3",
192+
"access_access_tag4",
193+
]
194+
access_tag1 = mocker.MagicMock()
195+
access_tag2 = mocker.MagicMock()
196+
access_tag3 = mocker.MagicMock()
197+
access_tag4 = mocker.MagicMock()
198+
each_module = [access_tag1, access_tag2, access_tag3, access_tag4]
199+
mocker.patch.object(each_module[0], "get_notice", return_value="mocked_notice1")
200+
mocker.patch.object(each_module[1], "get_notice", return_value="mocked_notice2")
201+
202+
203+
@when("get_request_access function is called")
204+
def step_impl(context, mocker):
205+
context.response = accessrequest_helper.get_request_access(context.request)
206+
207+
208+
@when("get_request_access function is called for invalid request type")
209+
def step_impl(context, mocker):
210+
context.request.GET.getlist.side_effect = KeyError("accesses")
211+
context.response = accessrequest_helper.get_request_access(context.request)
212+
213+
214+
@then("Return value should be access list with two modules")
215+
def step_impl(context):
216+
assert context.response["accesses"] is not None
217+
assert len(context.response["accesses"]) == 2
218+
for access in context.response["accesses"]:
219+
assert "formDesc" in access
220+
assert "accessTag" in access
221+
assert "accessTypes" in access
222+
assert "accessRequestData" in access
223+
assert "extraFields" in access
224+
assert "notice" in access
225+
assert "accessRequestPath" in access
226+
assert helpers.get_available_access_modules.call_count==1
227+
228+
229+
@then("Return value should be empty access list")
230+
def step_impl(context):
231+
assert context.response == {}
232+
233+
234+
@then("Return value should be error json")
235+
def step_impl(context):
236+
assert context.response["status"] == {
237+
"title": "Error Occured",
238+
"msg": (
239+
"There was an error in getting the requested access resources. Please"
240+
" contact Admin"
241+
),
242+
}
243+
244+
245+
@then("Return value should return all four access list with all seven present keynames")
246+
def step_impl(context):
247+
assert context.response["accesses"] is not None
248+
assert len(context.response["accesses"]) == 4
249+
for access in context.response["accesses"]:
250+
assert "formDesc" in access
251+
assert "accessTag" in access
252+
assert "accessTypes" in access
253+
assert "accessRequestData" in access
254+
assert "extraFields" in access
255+
assert "notice" in access
256+
assert "accessRequestPath" in access
257+
assert helpers.get_available_access_modules.call_count==1
258+
259+
260+
@then("Return value should return all four access with extra fields")
261+
def step_impl(context):
262+
assert context.response["accesses"] is not None
263+
assert len(context.response["accesses"]) == 4
264+
for access in context.response["accesses"]:
265+
assert "extraFields" in access
266+
assert helpers.get_available_access_modules.call_count==1
267+
268+
269+
@then("Return value should return all four access with notice/alert")
270+
def step_impl(context):
271+
assert context.response["accesses"] is not None
272+
assert len(context.response["accesses"]) == 4
273+
for access in context.response["accesses"]:
274+
assert "notice" in access
275+
assert helpers.get_available_access_modules.call_count==1

0 commit comments

Comments
 (0)