Skip to content

Commit 2aae6af

Browse files
CCM-12065: Tests
1 parent 4d10378 commit 2aae6af

6 files changed

+188
-0
lines changed

tests/test-team/template-mgmt-component-tests/email/template-mgmt-create-email-page.component.spec.ts

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -338,5 +338,36 @@ test.describe('Create Email message template Page', () => {
338338

339339
await expect(createEmailTemplatePage.messageTextArea).toBeFocused();
340340
});
341+
342+
test('when user submits form with an http link, then an error is displayed', async ({
343+
page,
344+
}) => {
345+
const errorMessage = 'The message includes an insecure http:// link. All links must use https://';
346+
347+
const createEmailTemplatePage = new TemplateMgmtCreateEmailPage(page);
348+
349+
await createEmailTemplatePage.loadPage();
350+
351+
await createEmailTemplatePage.nameInput.fill('template-name');
352+
353+
await createEmailTemplatePage.subjectLineInput.fill(
354+
'template-subject-line'
355+
);
356+
357+
await createEmailTemplatePage.messageTextArea.fill('http://www.example.com');
358+
359+
await createEmailTemplatePage.clickSaveAndPreviewButton();
360+
361+
const emailMessageErrorLink =
362+
createEmailTemplatePage.errorSummary.locator(
363+
'[href="#emailTemplateMessage"]'
364+
);
365+
366+
await expect(emailMessageErrorLink).toHaveText(errorMessage);
367+
368+
await emailMessageErrorLink.click();
369+
370+
await expect(createEmailTemplatePage.messageTextArea).toBeFocused();
371+
});
341372
});
342373
});

tests/test-team/template-mgmt-component-tests/email/template-mgmt-edit-email-page.component.spec.ts

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -419,5 +419,36 @@ test.describe('Edit Email message template Page', () => {
419419

420420
await expect(editEmailTemplatePage.messageTextArea).toBeFocused();
421421
});
422+
423+
test('when user submits form with an http link, then an error is displayed', async ({
424+
page,
425+
}) => {
426+
const errorMessage = 'The message includes an insecure http:// link. All links must use https://';
427+
428+
const createEmailTemplatePage = new TemplateMgmtEditEmailPage(page);
429+
430+
await createEmailTemplatePage.loadPage(templates.valid.id);
431+
432+
await createEmailTemplatePage.nameInput.fill('template-name');
433+
434+
await createEmailTemplatePage.subjectLineInput.fill(
435+
'template-subject-line'
436+
);
437+
438+
await createEmailTemplatePage.messageTextArea.fill('http://www.example.com');
439+
440+
await createEmailTemplatePage.clickSaveAndPreviewButton();
441+
442+
const emailMessageErrorLink =
443+
createEmailTemplatePage.errorSummary.locator(
444+
'[href="#emailTemplateMessage"]'
445+
);
446+
447+
await expect(emailMessageErrorLink).toHaveText(errorMessage);
448+
449+
await emailMessageErrorLink.click();
450+
451+
await expect(createEmailTemplatePage.messageTextArea).toBeFocused();
452+
});
422453
});
423454
});

tests/test-team/template-mgmt-component-tests/nhs-app/template-mgmt-create-nhs-app-template-page.component.spec.ts

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,44 @@ test.describe('Create NHS App Template Page', () => {
156156
expect(messageContent).toHaveLength(5000);
157157
});
158158

159+
test('Validate error messages on the create NHS App message template page with http url in message', async ({
160+
page,
161+
}) => {
162+
const createTemplatePage = new TemplateMgmtCreateNhsAppPage(page);
163+
164+
await createTemplatePage.loadPage();
165+
await expect(createTemplatePage.pageHeading).toHaveText(
166+
'Create NHS App message template'
167+
);
168+
await page.locator('[id="nhsAppTemplateName"]').fill('template-name');
169+
await page.locator('[id="nhsAppTemplateMessage"]').fill('http://www.example.com');
170+
await createTemplatePage.clickSaveAndPreviewButton();
171+
await expect(page.locator('.nhsuk-error-summary')).toBeVisible();
172+
173+
await expect(
174+
page.locator('ul[class="nhsuk-list nhsuk-error-summary__list"] > li')
175+
).toHaveText(['The message includes an insecure http:// link. All links must use https://']);
176+
});
177+
178+
test('Validate error messages on the create NHS App message template page with angle brackets in linked url', async ({
179+
page,
180+
}) => {
181+
const createTemplatePage = new TemplateMgmtCreateNhsAppPage(page);
182+
183+
await createTemplatePage.loadPage();
184+
await expect(createTemplatePage.pageHeading).toHaveText(
185+
'Create NHS App message template'
186+
);
187+
await page.locator('[id="nhsAppTemplateName"]').fill('template-name');
188+
await page.locator('[id="nhsAppTemplateMessage"]').fill('[example](http://www.example.com/<>)');
189+
await createTemplatePage.clickSaveAndPreviewButton();
190+
await expect(page.locator('.nhsuk-error-summary')).toBeVisible();
191+
192+
await expect(
193+
page.locator('ul[class="nhsuk-list nhsuk-error-summary__list"] > li')
194+
).toHaveText(['The message includes a link that contains an angle bracket character. They must be removed or URL encoded']);
195+
});
196+
159197
const detailsSections = [
160198
'pds-personalisation-fields',
161199
'custom-personalisation-fields',

tests/test-team/template-mgmt-component-tests/nhs-app/template-mgmt-edit-nhs-app-template-page.component.spec.ts

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,44 @@ test.describe('Edit NHS App Template Page', () => {
217217
expect(messageContent).toHaveLength(5000);
218218
});
219219

220+
test('Validate error messages on the edit NHS App message template page with http url in message', async ({
221+
page,
222+
}) => {
223+
const createTemplatePage = new TemplateMgmtEditNhsAppPage(page);
224+
225+
await createTemplatePage.loadPage(templates.valid.id);
226+
await expect(createTemplatePage.pageHeading).toHaveText(
227+
'Create NHS App message template'
228+
);
229+
await page.locator('[id="nhsAppTemplateName"]').fill('template-name');
230+
await page.locator('[id="nhsAppTemplateMessage"]').fill('http://www.example.com');
231+
await createTemplatePage.clickSaveAndPreviewButton();
232+
await expect(page.locator('.nhsuk-error-summary')).toBeVisible();
233+
234+
await expect(
235+
page.locator('ul[class="nhsuk-list nhsuk-error-summary__list"] > li')
236+
).toHaveText(['The message includes an insecure http:// link. All links must use https://']);
237+
});
238+
239+
test('Validate error messages on the edit NHS App message template page with angle brackets in linked url', async ({
240+
page,
241+
}) => {
242+
const createTemplatePage = new TemplateMgmtEditNhsAppPage(page);
243+
244+
await createTemplatePage.loadPage(templates.valid.id);
245+
await expect(createTemplatePage.pageHeading).toHaveText(
246+
'Create NHS App message template'
247+
);
248+
await page.locator('[id="nhsAppTemplateName"]').fill('template-name');
249+
await page.locator('[id="nhsAppTemplateMessage"]').fill('[example](http://www.example.com/<>)');
250+
await createTemplatePage.clickSaveAndPreviewButton();
251+
await expect(page.locator('.nhsuk-error-summary')).toBeVisible();
252+
253+
await expect(
254+
page.locator('ul[class="nhsuk-list nhsuk-error-summary__list"] > li')
255+
).toHaveText(['The message includes a link that contains an angle bracket character. They must be removed or URL encoded']);
256+
});
257+
220258
const detailsSections = [
221259
'pds-personalisation-fields',
222260
'custom-personalisation-fields',

tests/test-team/template-mgmt-component-tests/sms/template-mgmt-create-sms-page.component.spec.ts

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -311,5 +311,30 @@ test.describe('Create SMS message template Page', () => {
311311

312312
await expect(createSmsTemplatePage.messageTextArea).toBeFocused();
313313
});
314+
315+
test('when user submits form with an http link, then an error is displayed', async ({
316+
page,
317+
}) => {
318+
const errorMessage = 'The message includes an insecure http:// link. All links must use https://';
319+
320+
const createSmsTemplatePage = new TemplateMgmtCreateSmsPage(page);
321+
322+
await createSmsTemplatePage.loadPage();
323+
324+
await createSmsTemplatePage.nameInput.fill('template-name');
325+
await createSmsTemplatePage.messageTextArea.fill('http://www.example.com')
326+
327+
await createSmsTemplatePage.clickSaveAndPreviewButton();
328+
329+
const smsMessageErrorLink = createSmsTemplatePage.errorSummary.locator(
330+
'[href="#smsTemplateMessage"]'
331+
);
332+
333+
await expect(smsMessageErrorLink).toHaveText(errorMessage);
334+
335+
await smsMessageErrorLink.click();
336+
337+
await expect(createSmsTemplatePage.messageTextArea).toBeFocused();
338+
});
314339
});
315340
});

tests/test-team/template-mgmt-component-tests/sms/template-mgmt-edit-sms-page.component.spec.ts

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -387,5 +387,30 @@ test.describe('Edit SMS message template Page', () => {
387387

388388
await expect(editSmsTemplatePage.messageTextArea).toBeFocused();
389389
});
390+
391+
test('when user submits form with an http link, then an error is displayed', async ({
392+
page,
393+
}) => {
394+
const errorMessage = 'The message includes an insecure http:// link. All links must use https://';
395+
396+
const createSmsTemplatePage = new TemplateMgmtEditSmsPage(page);
397+
398+
await createSmsTemplatePage.loadPage(templates.valid.id);
399+
400+
await createSmsTemplatePage.nameInput.fill('template-name');
401+
await createSmsTemplatePage.messageTextArea.fill('http://www.example.com')
402+
403+
await createSmsTemplatePage.clickSaveAndPreviewButton();
404+
405+
const smsMessageErrorLink = createSmsTemplatePage.errorSummary.locator(
406+
'[href="#smsTemplateMessage"]'
407+
);
408+
409+
await expect(smsMessageErrorLink).toHaveText(errorMessage);
410+
411+
await smsMessageErrorLink.click();
412+
413+
await expect(createSmsTemplatePage.messageTextArea).toBeFocused();
414+
});
390415
});
391416
});

0 commit comments

Comments
 (0)