@@ -32,6 +32,22 @@ class TestJWTResponse: XCTestCase {
3232 XCTAssertEqual ( " qux " , authResponse. refreshToken. entityId)
3333 }
3434
35+ func testExternalToken( ) async throws {
36+ // with external token
37+ var data = Data ( externalTokenPayload. utf8)
38+ var jwtResponse = try JSONDecoder ( ) . decode ( DescopeClient . JWTResponse. self, from: data)
39+ try jwtResponse. setValues ( from: data, cookies: [ ] , refreshCookieName: nil )
40+ var authResponse : AuthenticationResponse = try jwtResponse. convert ( )
41+ XCTAssertEqual ( " ext-token-value " , authResponse. externalToken)
42+
43+ // no external token
44+ data = Data ( noExternalTokenPayload. utf8)
45+ jwtResponse = try JSONDecoder ( ) . decode ( DescopeClient . JWTResponse. self, from: data)
46+ try jwtResponse. setValues ( from: data, cookies: [ ] , refreshCookieName: nil )
47+ authResponse = try jwtResponse. convert ( )
48+ XCTAssertNil ( authResponse. externalToken)
49+ }
50+
3551 func testPageCookie( ) async throws {
3652 let data = Data ( authPayload. utf8)
3753
@@ -92,6 +108,25 @@ private let authPayload = """
92108}
93109"""
94110
111+ private let externalTokenPayload = """
112+ {
113+ " sessionJwt " : " \( sessionJwt) " ,
114+ " refreshJwt " : " \( refreshJwt) " ,
115+ " user " : \( userPayload) ,
116+ " firstSeen " : true,
117+ " externalToken " : " ext-token-value "
118+ }
119+ """
120+
121+ private let noExternalTokenPayload = """
122+ {
123+ " sessionJwt " : " \( sessionJwt) " ,
124+ " refreshJwt " : " \( refreshJwt) " ,
125+ " user " : \( userPayload) ,
126+ " firstSeen " : true
127+ }
128+ """
129+
95130private let userPayload = """
96131{
97132 " userId " : " userId " ,
0 commit comments