17
17
18
18
import { expect , use } from 'chai' ;
19
19
import * as chaiAsPromised from 'chai-as-promised' ;
20
+ import * as sinon from 'sinon' ;
20
21
21
22
import { OperationType , ProviderId } from '@firebase/auth-types-exp' ;
22
23
import { FirebaseError } from '@firebase/util' ;
@@ -36,16 +37,20 @@ import { PhoneMultiFactorAssertion } from '../platform_browser/mfa/assertions/ph
36
37
import { MultiFactorError } from './mfa_error' ;
37
38
import { getMultiFactorResolver , MultiFactorResolver } from './mfa_resolver' ;
38
39
import { _createError } from '../core/util/assert' ;
40
+ import { makeJWT } from '../../test/helpers/jwt' ;
39
41
40
42
use ( chaiAsPromised ) ;
41
43
42
44
describe ( 'core/mfa/mfa_resolver/MultiFactorResolver' , ( ) => {
45
+ const finalIdToken = makeJWT ( { 'exp' : '3600' , 'iat' : '1200' } ) ;
43
46
let auth : TestAuth ;
44
47
let underlyingError : FirebaseError ;
45
48
let error : MultiFactorError ;
46
49
let primaryFactorCredential : AuthCredential ;
50
+ let clock : sinon . SinonFakeTimers ;
47
51
48
52
beforeEach ( async ( ) => {
53
+ clock = sinon . useFakeTimers ( ) ;
49
54
auth = await testAuth ( ) ;
50
55
auth . tenantId = 'tenant-id' ;
51
56
primaryFactorCredential = EmailAuthProvider . credential (
@@ -55,19 +60,23 @@ describe('core/mfa/mfa_resolver/MultiFactorResolver', () => {
55
60
underlyingError = _createError ( auth , AuthErrorCode . MFA_REQUIRED , {
56
61
serverResponse : {
57
62
localId : 'local-id' ,
58
- expiresIn : '3600' ,
59
63
mfaPendingCredential : 'mfa-pending-credential' ,
60
64
mfaInfo : [
61
65
{
62
66
mfaEnrollmentId : 'mfa-enrollment-id' ,
63
67
enrolledAt : Date . now ( ) ,
64
- phoneInfo : 'phone-info'
68
+ phoneInfo : '+*******1234' ,
69
+ displayName : ''
65
70
}
66
71
]
67
72
}
68
73
} ) ;
69
74
} ) ;
70
75
76
+ afterEach ( ( ) => {
77
+ sinon . restore ( ) ;
78
+ } ) ;
79
+
71
80
describe ( 'MultiFactorResolver' , ( ) => {
72
81
let assertion : MultiFactorAssertion ;
73
82
let secondFactorCredential : PhoneAuthCredential ;
@@ -110,7 +119,7 @@ describe('core/mfa/mfa_resolver/MultiFactorResolver', () => {
110
119
111
120
beforeEach ( ( ) => {
112
121
mock = mockEndpoint ( Endpoint . FINALIZE_PHONE_MFA_SIGN_IN , {
113
- idToken : 'final-id-token' ,
122
+ idToken : finalIdToken ,
114
123
refreshToken : 'final-refresh-token'
115
124
} ) ;
116
125
@@ -135,13 +144,13 @@ describe('core/mfa/mfa_resolver/MultiFactorResolver', () => {
135
144
assertion
136
145
) ) as UserCredential ;
137
146
expect ( userCredential . user . uid ) . to . eq ( 'local-id' ) ;
138
- expect ( await userCredential . user . getIdToken ( ) ) . to . eq (
139
- 'final-id-token'
147
+ expect ( await userCredential . user . getIdToken ( ) ) . to . eq ( finalIdToken ) ;
148
+ expect ( userCredential . user . stsTokenManager . expirationTime ) . to . eq (
149
+ clock . now + 2400 * 1000
140
150
) ;
141
151
expect ( userCredential . _tokenResponse ) . to . eql ( {
142
152
localId : 'local-id' ,
143
- expiresIn : '3600' ,
144
- idToken : 'final-id-token' ,
153
+ idToken : finalIdToken ,
145
154
refreshToken : 'final-refresh-token'
146
155
} ) ;
147
156
expect ( mock . calls [ 0 ] . request ) . to . eql ( {
@@ -175,13 +184,13 @@ describe('core/mfa/mfa_resolver/MultiFactorResolver', () => {
175
184
assertion
176
185
) ) as UserCredential ;
177
186
expect ( userCredential . user ) . to . eq ( user ) ;
178
- expect ( await userCredential . user . getIdToken ( ) ) . to . eq (
179
- 'final-id-token'
187
+ expect ( await userCredential . user . getIdToken ( ) ) . to . eq ( finalIdToken ) ;
188
+ expect ( userCredential . user . stsTokenManager . expirationTime ) . to . eq (
189
+ clock . now + 2400 * 1000
180
190
) ;
181
191
expect ( userCredential . _tokenResponse ) . to . eql ( {
182
192
localId : 'local-id' ,
183
- expiresIn : '3600' ,
184
- idToken : 'final-id-token' ,
193
+ idToken : finalIdToken ,
185
194
refreshToken : 'final-refresh-token'
186
195
} ) ;
187
196
expect ( mock . calls [ 0 ] . request ) . to . eql ( {
0 commit comments