Skip to content

Commit 3af4d66

Browse files
committed
Add more unit tests
1 parent 6ce3f34 commit 3af4d66

File tree

1 file changed

+51
-8
lines changed

1 file changed

+51
-8
lines changed

packages/auth/src/platform_browser/providers/phone.test.ts

Lines changed: 51 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -35,14 +35,20 @@ import { RecaptchaVerifier } from '../../platform_browser/recaptcha/recaptcha_ve
3535
import { PhoneAuthProvider } from './phone';
3636
import { FAKE_TOKEN } from '../recaptcha/recaptcha_enterprise_verifier';
3737
import { MockGreCAPTCHATopLevel } from '../recaptcha/recaptcha_mock';
38+
import { ApplicationVerifierInternal } from '../../model/application_verifier';
3839

3940
describe('platform_browser/providers/phone', () => {
4041
let auth: TestAuth;
42+
let v2Verifier: ApplicationVerifierInternal;
4143

4244
beforeEach(async () => {
4345
fetch.setUp();
4446
auth = await testAuth();
4547
auth.settings.appVerificationDisabledForTesting = false;
48+
v2Verifier = new RecaptchaVerifier(auth, document.createElement('div'), {});
49+
sinon
50+
.stub(v2Verifier, 'verify')
51+
.returns(Promise.resolve('verification-code'));
4652
});
4753

4854
afterEach(() => {
@@ -83,14 +89,52 @@ describe('platform_browser/providers/phone', () => {
8389
sessionInfo: 'verification-id'
8490
});
8591

86-
const v2Verifier = new RecaptchaVerifier(
87-
auth,
88-
document.createElement('div'),
89-
{}
92+
const provider = new PhoneAuthProvider(auth);
93+
const result = await provider.verifyPhoneNumber(
94+
'+15105550000',
95+
v2Verifier
9096
);
97+
expect(result).to.eq('verification-id');
98+
expect(route.calls[0].request).to.eql({
99+
phoneNumber: '+15105550000',
100+
recaptchaToken: 'verification-code',
101+
captchaResponse: FAKE_TOKEN,
102+
clientType: RecaptchaClientType.WEB,
103+
recaptchaVersion: RecaptchaVersion.ENTERPRISE
104+
});
105+
});
106+
107+
it('calls the server when recaptcha enterprise is enabled', async () => {
108+
const recaptchaConfigResponseEnforce = {
109+
recaptchaKey: 'foo/bar/to/site-key',
110+
recaptchaEnforcementState: [
111+
{
112+
provider: RecaptchaAuthProvider.PHONE_PROVIDER,
113+
enforcementState: EnforcementState.ENFORCE
114+
}
115+
]
116+
};
117+
const recaptcha = new MockGreCAPTCHATopLevel();
118+
if (typeof window === 'undefined') {
119+
return;
120+
}
121+
window.grecaptcha = recaptcha;
91122
sinon
92-
.stub(v2Verifier, 'verify')
93-
.returns(Promise.resolve('verification-code'));
123+
.stub(recaptcha.enterprise, 'execute')
124+
.returns(Promise.resolve('enterprise-token'));
125+
126+
mockEndpointWithParams(
127+
Endpoint.GET_RECAPTCHA_CONFIG,
128+
{
129+
clientType: RecaptchaClientType.WEB,
130+
version: RecaptchaVersion.ENTERPRISE
131+
},
132+
recaptchaConfigResponseEnforce
133+
);
134+
135+
const route = mockEndpoint(Endpoint.SEND_VERIFICATION_CODE, {
136+
sessionInfo: 'verification-id'
137+
});
94138

95139
const provider = new PhoneAuthProvider(auth);
96140
const result = await provider.verifyPhoneNumber(
@@ -100,8 +144,7 @@ describe('platform_browser/providers/phone', () => {
100144
expect(result).to.eq('verification-id');
101145
expect(route.calls[0].request).to.eql({
102146
phoneNumber: '+15105550000',
103-
recaptchaToken: 'verification-code',
104-
captchaResponse: FAKE_TOKEN,
147+
captchaResponse: 'enterprise-token',
105148
clientType: RecaptchaClientType.WEB,
106149
recaptchaVersion: RecaptchaVersion.ENTERPRISE
107150
});

0 commit comments

Comments
 (0)