@@ -6,6 +6,7 @@ import { BrowserCacheUtils } from "../../../../../e2eTestUtils/BrowserCacheTestU
6
6
import { LabApiQueryParams } from "../../../../../e2eTestUtils/LabApiQueryParams" ;
7
7
import { AzureEnvironments , AppTypes } from "../../../../../e2eTestUtils/Constants" ;
8
8
import { LabClient } from "../../../../../e2eTestUtils/LabClient" ;
9
+ import { JWK , JWT } from "jose" ;
9
10
10
11
const SCREENSHOT_BASE_FOLDER_NAME = `${ __dirname } /screenshots` ;
11
12
const SAMPLE_HOME_URL = "http://localhost:30662/" ;
@@ -74,4 +75,40 @@ describe("Browser tests", function () {
74
75
await context . close ( ) ;
75
76
await browser . close ( ) ;
76
77
} ) ;
78
+
79
+ it ( "Performs loginRedirect" , async ( ) => {
80
+ const testName = "redirectBaseCase" ;
81
+ const screenshot = new Screenshot ( `${ SCREENSHOT_BASE_FOLDER_NAME } /${ testName } ` ) ;
82
+ // Home Page
83
+ await screenshot . takeScreenshot ( page , "samplePageInit" ) ;
84
+ // Click Sign In
85
+ await page . click ( "#SignIn" ) ;
86
+ await screenshot . takeScreenshot ( page , "signInClicked" ) ;
87
+ // Click Sign In With Redirect
88
+ await page . click ( "#loginRedirect" ) ;
89
+ // Enter credentials
90
+ await enterCredentials ( page , screenshot ) ;
91
+ // Wait for return to page
92
+ await page . waitForNavigation ( { waitUntil : "networkidle0" } ) ;
93
+ await screenshot . takeScreenshot ( page , "samplePageLoggedIn" ) ;
94
+ await page . click ( "#popRequest" ) ;
95
+ const tokenStore = await BrowserCache . getTokens ( ) ;
96
+ expect ( tokenStore . idTokens ) . to . be . length ( 1 ) ;
97
+ expect ( tokenStore . accessTokens ) . to . be . length ( 1 ) ;
98
+ expect ( tokenStore . refreshTokens ) . to . be . length ( 1 ) ;
99
+ const cachedAccount = await BrowserCache . getAccountFromCache ( tokenStore . idTokens [ 0 ] ) ;
100
+ const defaultCachedToken = await BrowserCache . accessTokenForScopesExists ( tokenStore . accessTokens , [ "openid" , "profile" , "user.read" ] ) ;
101
+ expect ( cachedAccount ) . to . not . be . null ;
102
+ expect ( defaultCachedToken ) . to . be . true ;
103
+ // Check pop token
104
+ const token : string = await page . evaluate ( ( ) => window . eval ( "popToken" ) ) ;
105
+ const decodedToken : any = JWT . decode ( token ) ;
106
+ const pubKey = decodedToken . cnf . jwk ;
107
+ const pubKeyJwk = JWK . asKey ( pubKey ) ;
108
+ expect ( JWT . verify ( token , pubKeyJwk ) ) . to . deep . eq ( decodedToken ) ;
109
+
110
+ // Expected 5 since the pop request will fail
111
+ const storage = await BrowserCache . getWindowStorage ( ) ;
112
+ expect ( Object . keys ( storage ) . length ) . to . be . eq ( 5 ) ;
113
+ } ) ;
77
114
} ) ;
0 commit comments