generated from ministryofjustice/hmpps-template-typescript
-
Notifications
You must be signed in to change notification settings - Fork 0
/
add-base-client.cy.ts
124 lines (100 loc) · 4.62 KB
/
add-base-client.cy.ts
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
112
113
114
115
116
117
118
119
120
121
122
123
124
import Page from '../pages/page'
import AddBaseClientGrantPage from '../pages/addBaseClientGrant'
import AddBaseClientDetailsPage from '../pages/addBaseClientDetails'
import ViewBaseClientListPage from '../pages/viewBaseClientList'
const visitAddBaseClientPage = (): AddBaseClientGrantPage => {
cy.signIn({ failOnStatusCode: true, redirectPath: '/base-clients/new' })
return Page.verifyOnPage(AddBaseClientGrantPage)
}
const visitAddWithClientCredentialsPage = (): AddBaseClientDetailsPage => {
cy.signIn({ failOnStatusCode: true, redirectPath: '/base-clients/new?grant=client-credentials' })
return Page.verifyOnPage(AddBaseClientDetailsPage)
}
context('Add client page', () => {
beforeEach(() => {
cy.task('reset')
cy.task('stubSignIn')
cy.task('stubManageUser')
cy.task('stubListBaseClients')
})
context('Add base client choose grant screen', () => {
let addBaseClientGrantPage: AddBaseClientGrantPage
beforeEach(() => {
addBaseClientGrantPage = visitAddBaseClientPage()
})
it('User can see select a grant type radio buttons', () => {
addBaseClientGrantPage.grantTypeRadioGroup().should('be.visible')
})
it('Client credentials is selected by default', () => {
addBaseClientGrantPage.clientCredentialsRadio().should('have.attr', 'checked')
})
it('Authorization code is disabled (for now)', () => {
addBaseClientGrantPage.authorizationCodeRadio().should('have.attr', 'disabled')
})
it('User clicks cancel to return to home screen', () => {
addBaseClientGrantPage.cancelLink().click()
Page.verifyOnPage(ViewBaseClientListPage)
})
it('User clicks continue to got to add base client details screen', () => {
addBaseClientGrantPage.continueButton().click()
Page.verifyOnPage(AddBaseClientDetailsPage)
})
})
context('Add base client enter details screen - client credentials', () => {
let addBaseClientDetailsPage: AddBaseClientDetailsPage
beforeEach(() => {
addBaseClientDetailsPage = visitAddWithClientCredentialsPage()
})
it('User can see base-client form inputs', () => {
addBaseClientDetailsPage.baseClientIdInput().should('be.visible')
addBaseClientDetailsPage.baseClientServiceRadioButton().should('exist')
addBaseClientDetailsPage.baseClientPersonalRadioButton().should('exist')
addBaseClientDetailsPage.baseClientAccessTokenValidityDropdown().should('be.visible')
addBaseClientDetailsPage.baseClientApprovedScopesInput().should('be.visible')
})
it('User can see audit trail form inputs', () => {
addBaseClientDetailsPage.auditTrailDetailsInput().should('be.visible')
})
it('User can see grant details form inputs', () => {
addBaseClientDetailsPage.grantTypeInput().should('be.visible')
addBaseClientDetailsPage.grantAuthoritiesInput().should('be.visible')
addBaseClientDetailsPage.grantDatabaseUsernameInput().should('be.visible')
})
it('User can see config form inputs', () => {
addBaseClientDetailsPage.configDoesExpireCheckbox().should('exist')
addBaseClientDetailsPage.configAllowedIpsInput().should('be.visible')
})
context('Access token validity dropdown', () => {
it('Custom input is initially hidden', () => {
addBaseClientDetailsPage.baseClientAccessTokenValidityInput().should('not.be.visible')
})
it('Custom input is shown when custom option is selected', () => {
addBaseClientDetailsPage.baseClientAccessTokenValidityDropdown().select('Custom')
addBaseClientDetailsPage.baseClientAccessTokenValidityInput().should('be.visible')
})
})
context('Allow client to expire ', () => {
it('Does expire checkbox is unchecked by default', () => {
addBaseClientDetailsPage.configDoesExpireCheckbox().should('not.be.checked')
})
it('Expiry days input is shown if checkbox is selected', () => {
addBaseClientDetailsPage.configDoesExpireCheckbox().click()
addBaseClientDetailsPage.configExpiryDaysInput().should('be.visible')
})
})
it('User clicks cancel to return to home screen', () => {
addBaseClientDetailsPage.cancelLink().click()
Page.verifyOnPage(ViewBaseClientListPage)
})
it('User clicks continue to post new client details screen', () => {
// enter a base client id
addBaseClientDetailsPage.baseClientIdInput().type('new-client-id')
// set up to check the POST request
cy.intercept('POST', '/base-clients/new', req => {
const { body } = req
expect(body).to.contain('baseClientId=new-client-id')
})
addBaseClientDetailsPage.saveButton().click()
})
})
})