Skip to content

Commit 9b2236e

Browse files
authored
Merge pull request #173 from NHSDigital/PPHA-475-nhs-login
PPHA-475: Add basic NHS Login backend
2 parents 9e0bb14 + 8063116 commit 9b2236e

File tree

99 files changed

+3149
-1056
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

99 files changed

+3149
-1056
lines changed

.env.example

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,3 +11,7 @@ DATABASE_PASSWORD=password
1111
POSTGRES_DB=lung_cancer_screening
1212
POSTGRES_USER=lung_cancer_screening
1313
POSTGRES_PASSWORD=password
14+
15+
OIDC_RP_CLIENT_PRIVATE_KEY="MYSUPERSECRETPRIVATEKEY"
16+
OIDC_RP_CLIENT_ID="lcrc"
17+
OIDC_OP_FQDN="https://example.com"

infrastructure/environments/poc/variables.sh

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,5 @@ STORAGE_ACCOUNT_RG=rg-tfstate-poc-uks
66
TERRAFORM_MODULES_REF=main
77
ENABLE_SOFT_DELETE=false
88
DOCKER_IMAGE=ghcr.io/nhsdigital/lung_cancer_screening
9+
OIDC_RP_CLIENT_ID="lcrc"
10+
OIDC_OP_FQDN="https://auth.sandpit.signin.nhs.uk"
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+

lung_cancer_screening/core/tests/acceptance/helpers/user_interaction_helpers.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
from playwright.sync_api import expect
22
from .test_helpers import check_labels
33

4-
def setup_participant(page, live_server_url):
5-
participant_id = 'abc123'
4+
def setup_user(page, live_server_url):
5+
user_id = 'abc123'
66
page.goto(f"{live_server_url}/start")
7-
fill_in_and_submit_participant_id(page, participant_id)
7+
fill_in_and_submit_user_id(page, user_id)
88

9-
def fill_in_and_submit_participant_id(page, participant_id):
10-
page.fill("input[name='participant_id']", participant_id)
9+
def fill_in_and_submit_user_id(page, user_id):
10+
page.fill("input[name='user_id']", user_id)
1111
page.click('text=Start now')
1212

1313

Lines changed: 97 additions & 114 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
import os
22

3+
from django.conf import settings
34
from django.contrib.staticfiles.testing import StaticLiveServerTestCase
4-
from django.test import tag
5+
from django.test import tag, Client
56
from playwright.sync_api import sync_playwright
7+
from urllib.parse import urlparse
68

9+
from lung_cancer_screening.questions.tests.factories.user_factory import UserFactory
710
from .helpers.assertion_helpers import expect_no_accessibility_violations
8-
from .helpers.user_interaction_helpers import setup_participant
911

1012
@tag('accessibility')
1113
class TestQuestionnaireAccessibility(StaticLiveServerTestCase):
@@ -17,178 +19,159 @@ def setUpClass(cls):
1719
cls.playwright = sync_playwright().start()
1820
cls.browser = cls.playwright.chromium.launch()
1921

22+
def setUp(self):
23+
self.page = self.browser.new_page()
24+
25+
current_user = UserFactory()
26+
current_user.responseset_set.create()
27+
28+
client = Client()
29+
client.force_login(current_user)
30+
31+
# Extract the session cookie from the test client
32+
session_cookie_name = getattr(
33+
settings, 'SESSION_COOKIE_NAME', 'sessionid'
34+
)
35+
session_cookie = client.cookies.get(session_cookie_name)
36+
37+
parsed_url = urlparse(self.live_server_url)
38+
domain = parsed_url.hostname
39+
self.page.context.add_cookies([{
40+
'name': session_cookie.key,
41+
'value': session_cookie.value,
42+
'domain': domain,
43+
'path': '/',
44+
}])
45+
46+
2047
@classmethod
2148
def tearDownClass(cls):
2249
super().tearDownClass()
2350
cls.browser.close()
2451
cls.playwright.stop()
2552

2653
def test_start_page_accessibility(self):
27-
page = self.browser.new_page()
28-
page.goto(f"{self.live_server_url}/start")
29-
expect_no_accessibility_violations(page)
54+
self.page.goto(f"{self.live_server_url}/start")
55+
expect_no_accessibility_violations(self.page)
3056

3157
def test_start_page_errors_accessibility(self):
32-
page = self.browser.new_page()
33-
page.goto(f"{self.live_server_url}/start")
34-
page.click("text=Start now")
35-
expect_no_accessibility_violations(page)
58+
self.page.goto(f"{self.live_server_url}/start")
59+
self.page.click("text=Start now")
60+
expect_no_accessibility_violations(self.page)
3661

3762
def test_have_you_ever_smoked_page_accessibility(self):
38-
page = self.browser.new_page()
39-
setup_participant(page, self.live_server_url)
40-
page.goto(f"{self.live_server_url}/have-you-ever-smoked")
41-
expect_no_accessibility_violations(page)
63+
self.page.goto(f"{self.live_server_url}/have-you-ever-smoked")
64+
expect_no_accessibility_violations(self.page)
4265

4366
def test_have_you_ever_smoked_page_errors_accessibility(self):
44-
page = self.browser.new_page()
45-
setup_participant(page, self.live_server_url)
46-
page.goto(f"{self.live_server_url}/have-you-ever-smoked")
47-
page.click("text=Continue")
48-
expect_no_accessibility_violations(page)
67+
self.page.goto(f"{self.live_server_url}/have-you-ever-smoked")
68+
self.page.click("text=Continue")
69+
expect_no_accessibility_violations(self.page)
4970

5071
def test_date_of_birth_page_accessibility(self):
51-
page = self.browser.new_page()
52-
setup_participant(page, self.live_server_url)
53-
page.goto(f"{self.live_server_url}/date-of-birth")
54-
expect_no_accessibility_violations(page)
72+
self.page.goto(f"{self.live_server_url}/date-of-birth")
73+
expect_no_accessibility_violations(self.page)
5574

5675
def test_date_of_birth_page_errors_accessibility(self):
57-
page = self.browser.new_page()
58-
setup_participant(page, self.live_server_url)
59-
page.goto(f"{self.live_server_url}/date-of-birth")
60-
page.click("text=Continue")
61-
expect_no_accessibility_violations(page)
76+
self.page.goto(f"{self.live_server_url}/date-of-birth")
77+
self.page.click("text=Continue")
78+
expect_no_accessibility_violations(self.page)
6279

6380
def test_height_page_accessibility(self):
64-
page = self.browser.new_page()
65-
setup_participant(page, self.live_server_url)
66-
page.goto(f"{self.live_server_url}/height")
67-
expect_no_accessibility_violations(page)
81+
self.page.goto(f"{self.live_server_url}/height")
82+
expect_no_accessibility_violations(self.page)
6883

6984
def test_height_page_errors_accessibility(self):
70-
page = self.browser.new_page()
71-
setup_participant(page, self.live_server_url)
72-
page.goto(f"{self.live_server_url}/height")
73-
page.click("text=Continue")
74-
expect_no_accessibility_violations(page)
85+
self.page.goto(f"{self.live_server_url}/height")
86+
self.page.click("text=Continue")
87+
expect_no_accessibility_violations(self.page)
7588

7689
def test_height_imperial_page_accessibility(self):
77-
page = self.browser.new_page()
78-
setup_participant(page, self.live_server_url)
79-
page.goto(f"{self.live_server_url}/height?unit=imperial")
80-
expect_no_accessibility_violations(page)
90+
self.page.goto(f"{self.live_server_url}/height?unit=imperial")
91+
expect_no_accessibility_violations(self.page)
8192

8293
def test_weight_page_accessibility(self):
83-
page = self.browser.new_page()
84-
setup_participant(page, self.live_server_url)
85-
page.goto(f"{self.live_server_url}/weight")
86-
expect_no_accessibility_violations(page)
94+
self.page.goto(f"{self.live_server_url}/weight")
95+
expect_no_accessibility_violations(self.page)
8796

8897
def test_weight_page_errors_accessibility(self):
89-
page = self.browser.new_page()
90-
setup_participant(page, self.live_server_url)
91-
page.goto(f"{self.live_server_url}/weight")
92-
page.click("text=Continue")
93-
expect_no_accessibility_violations(page)
98+
self.page.goto(f"{self.live_server_url}/weight")
99+
self.page.click("text=Continue")
100+
expect_no_accessibility_violations(self.page)
94101

95102
def test_weight_imperial_page_accessibility(self):
96-
page = self.browser.new_page()
97-
setup_participant(page, self.live_server_url)
98-
page.goto(f"{self.live_server_url}/weight?unit=imperial")
99-
expect_no_accessibility_violations(page)
103+
self.page.goto(f"{self.live_server_url}/weight?unit=imperial")
104+
expect_no_accessibility_violations(self.page)
100105

101106
def test_weight_imperial_page_errors_accessibility(self):
102-
page = self.browser.new_page()
103-
setup_participant(page, self.live_server_url)
104-
page.goto(f"{self.live_server_url}/weight?unit=imperial")
105-
page.click("text=Continue")
106-
expect_no_accessibility_violations(page)
107+
self.page.goto(f"{self.live_server_url}/weight?unit=imperial")
108+
self.page.click("text=Continue")
109+
expect_no_accessibility_violations(self.page)
107110

108111
def test_sex_at_birth_page_accessibility(self):
109-
page = self.browser.new_page()
110-
setup_participant(page, self.live_server_url)
111-
page.goto(f"{self.live_server_url}/sex-at-birth")
112-
expect_no_accessibility_violations(page)
112+
self.page.goto(f"{self.live_server_url}/sex-at-birth")
113+
expect_no_accessibility_violations(self.page)
113114

114115
def test_sex_at_birth_page_errors_accessibility(self):
115-
page = self.browser.new_page()
116-
setup_participant(page, self.live_server_url)
117-
page.goto(f"{self.live_server_url}/sex-at-birth")
118-
page.click("text=Continue")
119-
expect_no_accessibility_violations(page)
116+
self.page.goto(f"{self.live_server_url}/sex-at-birth")
117+
self.page.click("text=Continue")
118+
expect_no_accessibility_violations(self.page)
120119

121120
def test_gender_page_accessibility(self):
122-
page = self.browser.new_page()
123-
setup_participant(page, self.live_server_url)
124-
page.goto(f"{self.live_server_url}/gender")
125-
expect_no_accessibility_violations(page)
121+
self.page.goto(f"{self.live_server_url}/gender")
122+
expect_no_accessibility_violations(self.page)
126123

127124
def test_gender_page_errors_accessibility(self):
128-
page = self.browser.new_page()
129-
setup_participant(page, self.live_server_url)
130-
page.goto(f"{self.live_server_url}/gender")
131-
page.click("text=Continue")
132-
expect_no_accessibility_violations(page)
125+
self.page.goto(f"{self.live_server_url}/gender")
126+
self.page.click("text=Continue")
127+
expect_no_accessibility_violations(self.page)
133128

134129
def test_ethnicity_page_accessibility(self):
135-
page = self.browser.new_page()
136-
setup_participant(page, self.live_server_url)
137-
page.goto(f"{self.live_server_url}/ethnicity")
138-
expect_no_accessibility_violations(page)
130+
self.page.goto(f"{self.live_server_url}/ethnicity")
131+
expect_no_accessibility_violations(self.page)
139132

140133
def test_ethnicity_page_errors_accessibility(self):
141-
page = self.browser.new_page()
142-
setup_participant(page, self.live_server_url)
143-
page.goto(f"{self.live_server_url}/ethnicity")
144-
page.click("text=Continue")
145-
expect_no_accessibility_violations(page)
134+
self.page.goto(f"{self.live_server_url}/ethnicity")
135+
self.page.click("text=Continue")
136+
expect_no_accessibility_violations(self.page)
146137

147138
# def test_education_page_accessibility(self):
148-
# page = self.browser.new_page()
149-
# setup_participant(page, self.live_server_url)
150-
# page.goto(f"{self.live_server_url}/education")
139+
#
140+
# setup_user(self.page, self.live_server_url)
141+
# self.page.goto(f"{self.live_server_url}/education")
151142
# expect_no_accessibility_violations(page)
152143

153144
# def test_respiratory_conditions_page_accessibility(self):
154-
# page = self.browser.new_page()
155-
# setup_participant(page, self.live_server_url)
156-
# page.goto(f"{self.live_server_url}/respiratory-conditions")
145+
#
146+
# setup_user(self.page, self.live_server_url)
147+
# self.page.goto(f"{self.live_server_url}/respiratory-conditions")
157148
# expect_no_accessibility_violations(page)
158149

159150
def test_asbestos_exposure_page_errors_accessibility(self):
160-
page = self.browser.new_page()
161-
setup_participant(page, self.live_server_url)
162-
page.goto(f"{self.live_server_url}/asbestos-exposure")
163-
page.click("text=Continue")
164-
expect_no_accessibility_violations(page)
151+
self.page.goto(f"{self.live_server_url}/asbestos-exposure")
152+
self.page.click("text=Continue")
153+
expect_no_accessibility_violations(self.page)
165154

166155
def test_asbestos_exposure_page_accessibility(self):
167-
page = self.browser.new_page()
168-
setup_participant(page, self.live_server_url)
169-
page.goto(f"{self.live_server_url}/asbestos-exposure")
170-
expect_no_accessibility_violations(page)
156+
self.page.goto(f"{self.live_server_url}/asbestos-exposure")
157+
expect_no_accessibility_violations(self.page)
171158

172159
# def test_cancer_diagnosis_page_accessibility(self):
173-
# page = self.browser.new_page()
174-
# setup_participant(page, self.live_server_url)
175-
# page.goto(f"{self.live_server_url}/cancer-diagnosis")
160+
#
161+
# setup_user(self.page, self.live_server_url)
162+
# self.page.goto(f"{self.live_server_url}/cancer-diagnosis")
176163
# expect_no_accessibility_violations(page)
177164

178165
# def test_family_history_lung_cancer_page_accessibility(self):
179-
# page = self.browser.new_page()
180-
# setup_participant(page, self.live_server_url)
181-
# page.goto(f"{self.live_server_url}/family-history-lung-cancer")
166+
#
167+
# setup_user(self.page, self.live_server_url)
168+
# self.page.goto(f"{self.live_server_url}/family-history-lung-cancer")
182169
# expect_no_accessibility_violations(page)
183170

184171
def test_responses_page_accessibility(self):
185-
page = self.browser.new_page()
186-
setup_participant(page, self.live_server_url)
187-
page.goto(f"{self.live_server_url}/responses")
188-
expect_no_accessibility_violations(page)
172+
self.page.goto(f"{self.live_server_url}/responses")
173+
expect_no_accessibility_violations(self.page)
189174

190175
def test_your_results_page_accessibility(self):
191-
page = self.browser.new_page()
192-
setup_participant(page, self.live_server_url)
193-
page.goto(f"{self.live_server_url}/your-results")
194-
expect_no_accessibility_violations(page)
176+
self.page.goto(f"{self.live_server_url}/your-results")
177+
expect_no_accessibility_violations(self.page)

0 commit comments

Comments
 (0)