Skip to content

Commit 61394e0

Browse files
committed
Fix app-check-compat
1 parent 49dfeb3 commit 61394e0

File tree

4 files changed

+56
-4
lines changed

4 files changed

+56
-4
lines changed

packages/app-check-compat/src/index.ts

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,10 @@ import {
2828
} from '@firebase/component';
2929
import { AppCheckService } from './service';
3030
import { FirebaseAppCheck } from '@firebase/app-check-types';
31+
import {
32+
ReCaptchaV3Provider,
33+
CustomProvider
34+
} from '@firebase/app-check';
3135

3236
const factory: InstanceFactory<'appCheck-compat'> = (
3337
container: ComponentContainer
@@ -40,7 +44,14 @@ const factory: InstanceFactory<'appCheck-compat'> = (
4044

4145
export function registerAppCheck(): void {
4246
(firebase as _FirebaseNamespace).INTERNAL.registerComponent(
43-
new Component('appCheck-compat', factory, ComponentType.PUBLIC)
47+
new Component(
48+
'appCheck-compat',
49+
factory,
50+
ComponentType.PUBLIC
51+
).setServiceProps({
52+
ReCaptchaV3Provider,
53+
CustomProvider
54+
})
4455
);
4556
}
4657

packages/app-check-compat/src/service.test.ts

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ describe('Firebase App Check > Service', () => {
7979
);
8080

8181
it(
82-
'activate(CustomProvider) calls modular initializeAppCheck() with' +
82+
'activate({getToken: () => token}) calls modular initializeAppCheck() with' +
8383
' a CustomProvider',
8484
() => {
8585
const initializeAppCheckStub = stub(appCheckExp, 'initializeAppCheck');
@@ -103,6 +103,37 @@ describe('Firebase App Check > Service', () => {
103103
}
104104
);
105105

106+
it(
107+
'activate(new RecaptchaV3Provider(...)) calls modular initializeAppCheck() with' +
108+
' a RecaptchaV3Provider',
109+
() => {
110+
const initializeAppCheckStub = stub(appCheckExp, 'initializeAppCheck');
111+
service = new AppCheckService(app);
112+
service.activate(new ReCaptchaV3Provider('a-site-key'));
113+
expect(initializeAppCheckStub).to.be.calledWith(app, {
114+
provider: match.instanceOf(ReCaptchaV3Provider),
115+
isTokenAutoRefreshEnabled: undefined
116+
});
117+
initializeAppCheckStub.restore();
118+
}
119+
);
120+
121+
it(
122+
'activate(new CustomProvider(...)) calls modular initializeAppCheck() with' +
123+
' a CustomProvider',
124+
() => {
125+
const initializeAppCheckStub = stub(appCheckExp, 'initializeAppCheck');
126+
service = new AppCheckService(app);
127+
const customGetTokenStub = stub();
128+
service.activate(new CustomProvider({ getToken: customGetTokenStub }));
129+
expect(initializeAppCheckStub).to.be.calledWith(app, {
130+
provider: match.instanceOf(CustomProvider),
131+
isTokenAutoRefreshEnabled: undefined
132+
});
133+
initializeAppCheckStub.restore();
134+
}
135+
);
136+
106137
it('setTokenAutoRefreshEnabled() calls modular setTokenAutoRefreshEnabled()', () => {
107138
const setTokenAutoRefreshEnabledStub: SinonStub = stub(
108139
appCheckExp,

packages/app-check-compat/src/service.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,16 @@ export class AppCheckService
4343
siteKeyOrProvider: string | AppCheckProvider,
4444
isTokenAutoRefreshEnabled?: boolean
4545
): void {
46-
let provider: ReCaptchaV3Provider | CustomProvider;
46+
let provider:
47+
| ReCaptchaV3Provider
48+
| CustomProvider;
4749
if (typeof siteKeyOrProvider === 'string') {
4850
provider = new ReCaptchaV3Provider(siteKeyOrProvider);
51+
} else if (
52+
siteKeyOrProvider instanceof ReCaptchaV3Provider ||
53+
siteKeyOrProvider instanceof CustomProvider
54+
) {
55+
provider = siteKeyOrProvider;
4956
} else {
5057
provider = new CustomProvider({ getToken: siteKeyOrProvider.getToken });
5158
}

packages/firebase/compat/index.d.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1580,7 +1580,9 @@ declare namespace firebase.appCheck {
15801580
export interface AppCheck {
15811581
/**
15821582
* Activate AppCheck
1583-
* @param provider reCAPTCHA provider, custom token provider, or reCAPTCHA site key.
1583+
* @param provider This can be a `ReCaptchaV3Provider` instance,
1584+
* a `CustomProvider` instance, an object with a custom `getToken()`
1585+
* method, or a reCAPTCHA site key.
15841586
* @param isTokenAutoRefreshEnabled If true, the SDK automatically
15851587
* refreshes App Check tokens as needed. If undefined, defaults to the
15861588
* value of `app.automaticDataCollectionEnabled`, which defaults to
@@ -1591,6 +1593,7 @@ declare namespace firebase.appCheck {
15911593
| ReCaptchaV3Provider
15921594
| CustomProvider
15931595
| AppCheckProvider
1596+
| { getToken: () => AppCheckToken }
15941597
| string,
15951598
isTokenAutoRefreshEnabled?: boolean
15961599
): void;

0 commit comments

Comments
 (0)