@@ -34,6 +34,7 @@ import {
34
34
DEFAULT_CLIENT_POLICY_URI ,
35
35
DEFAULT_CLIENT_TOS_URI ,
36
36
DEFAULT_CLIENT_EMAIL ,
37
+ DEFAULT_MAX_AGE ,
37
38
} from "./constants" ;
38
39
39
40
async function openAccordion ( page : Page , selector : string ) {
@@ -79,6 +80,21 @@ async function fillUserFacingFieldsWithDefaults(page: Page) {
79
80
await page . locator ( 'input[name="contacts.0"]' ) . fill ( DEFAULT_CLIENT_EMAIL ) ;
80
81
}
81
82
83
+ async function expectUserFacingFieldsDefaults ( page : Page ) {
84
+ await expect ( page . locator ( 'input[name="logoUri"]' ) ) . toHaveValue (
85
+ DEFAULT_CLIENT_LOGO_URI
86
+ ) ;
87
+ await expect ( page . locator ( 'input[name="policyUri"]' ) ) . toHaveValue (
88
+ DEFAULT_CLIENT_POLICY_URI
89
+ ) ;
90
+ await expect ( page . locator ( 'input[name="tosUri"]' ) ) . toHaveValue (
91
+ DEFAULT_CLIENT_TOS_URI
92
+ ) ;
93
+ await expect ( page . locator ( 'input[name="contacts.0"]' ) ) . toHaveValue (
94
+ DEFAULT_CLIENT_EMAIL
95
+ ) ;
96
+ }
97
+
82
98
async function fillTechnicalFields ( page : Page ) {
83
99
await openAccordion ( page , ".AdvancedFieldsAccordion" ) ;
84
100
@@ -90,12 +106,22 @@ async function fillTechnicalFields(page: Page) {
90
106
91
107
// Set default max age.
92
108
await page . locator ( 'input[name="defaultMaxAge"]' ) . click ( ) ;
93
- await page . locator ( 'input[name="defaultMaxAge"]' ) . fill ( "3600" ) ;
109
+ await page
110
+ . locator ( 'input[name="defaultMaxAge"]' )
111
+ . fill ( DEFAULT_MAX_AGE . toString ( ) ) ;
94
112
95
113
// Request a time of authentication claim.
96
114
await page . locator ( "text=Request a time of authentication claim" ) . click ( ) ;
97
115
}
98
116
117
+ async function expectTechnicalFieldsDefaults ( page : Page ) {
118
+ await expect ( page . locator ( "input[name='applicationType']" ) ) . toHaveValue (
119
+ "native"
120
+ ) ;
121
+ await expect ( page . locator ( 'input[name="defaultMaxAge"]' ) ) . toHaveValue ( "3600" ) ;
122
+ await expect ( page . locator ( "input[name='requireAuthTime']" ) ) . toBeChecked ( ) ;
123
+ }
124
+
99
125
test . describe ( "Generator page functionality" , ( ) => {
100
126
it ( "has title Client Identifier Helper" , async ( { page } ) => {
101
127
await page . goto ( "/generator" ) ;
@@ -168,7 +194,7 @@ test.describe("Generator page functionality", () => {
168
194
169
195
const clientIdentifierDocument = await clickAndGenerateDocument ( page ) ;
170
196
expect ( clientIdentifierDocument . application_type ) . toBe ( "native" ) ;
171
- expect ( clientIdentifierDocument . default_max_age ) . toBe ( 3600 ) ;
197
+ expect ( clientIdentifierDocument . default_max_age ) . toBe ( DEFAULT_MAX_AGE ) ;
172
198
expect ( clientIdentifierDocument . require_auth_time ) . toBe ( true ) ;
173
199
} ) ;
174
200
@@ -190,7 +216,7 @@ test.describe("Generator page functionality", () => {
190
216
expect ( clientIdentifierDocument ?. contacts [ 0 ] ) . toBe ( DEFAULT_CLIENT_EMAIL ) ;
191
217
192
218
expect ( clientIdentifierDocument . application_type ) . toBe ( "native" ) ;
193
- expect ( clientIdentifierDocument . default_max_age ) . toBe ( 3600 ) ;
219
+ expect ( clientIdentifierDocument . default_max_age ) . toBe ( DEFAULT_MAX_AGE ) ;
194
220
expect ( clientIdentifierDocument . require_auth_time ) . toBe ( true ) ;
195
221
} ) ;
196
222
@@ -228,4 +254,41 @@ test.describe("Generator page functionality", () => {
228
254
229
255
await expect ( page . locator ( "[name=generatedJson]" ) ) . not . toBeVisible ( ) ;
230
256
} ) ;
257
+
258
+ it ( "Remembers states and values" , async ( { page } ) => {
259
+ await page . goto ( "/generator" ) ;
260
+ await fillEssentialFieldsWithDefaults ( page ) ;
261
+ await fillUserFacingFieldsWithDefaults ( page ) ;
262
+ await fillTechnicalFields ( page ) ;
263
+
264
+ // Cause field error state for empty clientId.
265
+ await page . locator ( "[name=clientId]" ) . fill ( "" ) ;
266
+
267
+ // Switch page and go back.
268
+ await page . locator ( ".openValidatorPage" ) . click ( ) ;
269
+ await page . locator ( ".openGeneratorPage" ) . click ( ) ;
270
+
271
+ // Expect values to have remained the same.
272
+ await expect ( page . locator ( "[name=clientId]" ) ) . toHaveValue ( "" ) ;
273
+ await expect ( page . locator ( "[name=clientName]" ) ) . toHaveValue (
274
+ DEFAULT_CLIENT_NAME
275
+ ) ;
276
+ await expect ( page . locator ( "[name=clientUri]" ) ) . toHaveValue (
277
+ DEFAULT_CLIENT_HOMEPAGE
278
+ ) ;
279
+ await expect ( page . locator ( `[name="redirectUris.0"]` ) ) . toHaveValue (
280
+ `${ DEFAULT_CLIENT_REDIRECT_URI } 1`
281
+ ) ;
282
+ await expectUserFacingFieldsDefaults ( page ) ;
283
+ await expectTechnicalFieldsDefaults ( page ) ;
284
+
285
+ // Expect clientId error state to have remained.
286
+ expect (
287
+ await page . locator ( `.MuiFormHelperText-root.Mui-error` ) . count ( )
288
+ ) . toBe ( 1 ) ;
289
+ const errorDescriptions = page . locator ( `.MuiFormHelperText-root.Mui-error` ) ;
290
+ await expect ( errorDescriptions ) . toHaveText (
291
+ / T h e g i v e n U R I f i e l d i s n o t p r e s e n t ./
292
+ ) ;
293
+ } ) ;
231
294
} ) ;
0 commit comments