Skip to content

Commit 23a0a7a

Browse files
committed
Add updatePhoneNumber to auth-next (#3392)
1 parent dd78598 commit 23a0a7a

File tree

2 files changed

+54
-2
lines changed

2 files changed

+54
-2
lines changed

packages-exp/auth-exp/src/core/strategies/phone.test.ts

Lines changed: 46 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,11 +37,13 @@ import {
3737
_verifyPhoneNumber,
3838
linkWithPhoneNumber,
3939
reauthenticateWithPhoneNumber,
40-
signInWithPhoneNumber
40+
signInWithPhoneNumber,
41+
updatePhoneNumber
4142
} from './phone';
4243
import { multiFactor, MultiFactorUser } from '../../mfa/mfa_user';
4344
import { MultiFactorSession } from '../../mfa/mfa_session';
4445
import { MultiFactorInfo } from '../../mfa/mfa_info';
46+
import { PhoneAuthCredential } from '../credentials/phone';
4547

4648
use(chaiAsPromised);
4749
use(sinonChai);
@@ -412,4 +414,47 @@ describe('core/strategies/phone', () => {
412414
expect(verifier._reset).to.have.been.called;
413415
});
414416
});
417+
418+
describe("updatePhoneNumber", () => {
419+
let user: User;
420+
let reloadMock: fetch.Route;
421+
let signInMock: fetch.Route;
422+
let credential: PhoneAuthCredential;
423+
424+
beforeEach(() => {
425+
reloadMock = mockEndpoint(Endpoint.GET_ACCOUNT_INFO, {
426+
users: [{ uid: 'uid' }]
427+
});
428+
signInMock = mockEndpoint(Endpoint.SIGN_IN_WITH_PHONE_NUMBER, {
429+
idToken: 'new-access-token'
430+
});
431+
credential = PhoneAuthCredential._fromVerification(
432+
'session-info',
433+
'code'
434+
);
435+
436+
user = testUser(auth, 'uid', 'email', true);
437+
});
438+
439+
it('should link the phone number to the user', async () => {
440+
await updatePhoneNumber(user, credential);
441+
console.log(JSON.stringify(signInMock.calls[0].request));
442+
expect(signInMock.calls[0].request).to.eql({
443+
idToken: 'access-token',
444+
sessionInfo: 'session-info',
445+
code: 'code'
446+
});
447+
});
448+
449+
it('should update the access token', async () => {
450+
await updatePhoneNumber(user, credential);
451+
const idToken = await user.getIdToken();
452+
expect(idToken).to.eq('new-access-token');
453+
});
454+
455+
it('should reload the user', async () => {
456+
await updatePhoneNumber(user, credential);
457+
expect(reloadMock.calls.length).to.eq(1);
458+
});
459+
});
415460
});

packages-exp/auth-exp/src/core/strategies/phone.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ import { User } from '../../model/user';
2626
import { RECAPTCHA_VERIFIER_TYPE } from '../../platform_browser/recaptcha/recaptcha_verifier';
2727
import { PhoneAuthCredential } from '../credentials/phone';
2828
import { AuthErrorCode } from '../errors';
29-
import { _assertLinkedStatus } from '../user/link_unlink';
29+
import { _assertLinkedStatus, _link } from '../user/link_unlink';
3030
import { assert } from '../util/assert';
3131
import {
3232
linkWithCredential,
@@ -172,3 +172,10 @@ export async function _verifyPhoneNumber(
172172
verifier._reset();
173173
}
174174
}
175+
176+
export async function updatePhoneNumber(
177+
user: externs.User,
178+
credential: externs.PhoneAuthCredential
179+
): Promise<void> {
180+
await _link(user as User, credential as PhoneAuthCredential);
181+
}

0 commit comments

Comments
 (0)