Skip to content

Commit e3e44ea

Browse files
authored
Merge pull request #45 from NHSDigital/APM-2861-update-userrole-tests
APM-2861 Add cis2 token exchange tests
2 parents be9d6d2 + a83b6d3 commit e3e44ea

File tree

2 files changed

+62
-4
lines changed

2 files changed

+62
-4
lines changed

tests/conftest.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,8 @@ async def get_token_cis2_token_exchange(test_app_and_product):
151151
'realm': '/NHSIdentity/Healthcare',
152152
'exp': int(time()) + 6000,
153153
'tokenType': 'JWTToken',
154-
'iat': int(time()) - 100
154+
'iat': int(time()) - 100,
155+
'selected_roleid': '555254242105'
155156
}
156157

157158
with open(config.ID_TOKEN_PRIVATE_KEY_ABSOLUTE_PATH, "r") as f:
@@ -171,6 +172,7 @@ async def get_token_cis2_token_exchange(test_app_and_product):
171172
"client_assertion": client_assertion_jwt,
172173
},
173174
)
175+
174176
assert token_resp["status_code"] == 200
175177
return token_resp["body"]
176178

tests/test_endpoints.py

Lines changed: 59 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -102,15 +102,71 @@ async def test_user_role_unhappy_path(self, test_app_and_product,
102102

103103
@pytest.mark.mock_auth
104104
@pytest.mark.asyncio
105+
@pytest.mark.parametrize("additional_headers,error_description", [
106+
(
107+
{},
108+
"selected_roleid is missing in your token"
109+
),
110+
(
111+
{"NHSD-Session-URID": "656014452101"},
112+
"unable to retrieve user info"
113+
)
114+
])
105115
async def test_nhs_login_exchanged_token_no_role_provided(
106-
self, get_token_nhs_login_token_exchange
116+
self,
117+
get_token_nhs_login_token_exchange,
118+
additional_headers,
119+
error_description
107120
):
108121
token = get_token_nhs_login_token_exchange["access_token"]
122+
headers = {
123+
"Authorization": f"Bearer {token}",
124+
}
125+
for key, value in additional_headers.items():
126+
headers[key] = value
109127

110128
response = requests.get(
111129
url=f"https://internal-dev.api.service.nhs.uk/{config.SERVICE_BASE_PATH}/user-role-service",
112-
headers={"Authorization": f"Bearer {token}"},
130+
headers=headers
131+
)
132+
133+
assert response.status_code == 400
134+
assert response.json()["issue"][0]["diagnostics"] == error_description
135+
136+
@pytest.mark.simulated_auth
137+
@pytest.mark.asyncio
138+
async def test_cis2_exchanged_token_happy_path(
139+
self,
140+
get_token_cis2_token_exchange
141+
):
142+
token = get_token_cis2_token_exchange["access_token"]
143+
headers = {
144+
"Authorization": f"Bearer {token}",
145+
}
146+
147+
response = requests.get(
148+
url=f"https://internal-dev.api.service.nhs.uk/{config.SERVICE_BASE_PATH}/user-role-service",
149+
headers=headers
150+
)
151+
152+
assert response.status_code == 200
153+
154+
@pytest.mark.simulated_auth
155+
@pytest.mark.asyncio
156+
async def test_cis2_exchanged_token_no_role_provided(
157+
self,
158+
get_token_cis2_token_exchange
159+
):
160+
token = get_token_cis2_token_exchange["access_token"]
161+
headers = {
162+
"Authorization": f"Bearer {token}",
163+
"NHSD-Session-URID": "656014452101"
164+
}
165+
166+
response = requests.get(
167+
url=f"https://internal-dev.api.service.nhs.uk/{config.SERVICE_BASE_PATH}/user-role-service",
168+
headers=headers
113169
)
114170

115171
assert response.status_code == 400
116-
assert response.json()["issue"][0]["diagnostics"] == "selected_roleid is missing in your token"
172+
assert response.json()["issue"][0]["diagnostics"] == "unable to retrieve user info"

0 commit comments

Comments
 (0)