firebase-admin-edge 1.0.25 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/README.md +164 -17
  2. package/dist/auth/auth-error-codes.d.ts +20 -0
  3. package/dist/auth/auth-error-codes.d.ts.map +1 -1
  4. package/dist/auth/auth-error-codes.js +20 -0
  5. package/dist/auth/auth-error-codes.js.map +1 -1
  6. package/dist/auth/firebase-admin-auth.d.ts +36 -1
  7. package/dist/auth/firebase-admin-auth.d.ts.map +1 -1
  8. package/dist/auth/firebase-admin-auth.js +221 -1
  9. package/dist/auth/firebase-admin-auth.js.map +1 -1
  10. package/dist/auth/firebase-admin-auth.test.js +391 -1
  11. package/dist/auth/firebase-admin-auth.test.js.map +1 -1
  12. package/dist/auth/firebase-auth-endpoints.d.ts +53 -4
  13. package/dist/auth/firebase-auth-endpoints.d.ts.map +1 -1
  14. package/dist/auth/firebase-auth-endpoints.js +95 -8
  15. package/dist/auth/firebase-auth-endpoints.js.map +1 -1
  16. package/dist/auth/firebase-auth-endpoints.test.js +210 -3
  17. package/dist/auth/firebase-auth-endpoints.test.js.map +1 -1
  18. package/dist/auth/user-record.d.ts +69 -0
  19. package/dist/auth/user-record.d.ts.map +1 -0
  20. package/dist/auth/user-record.js +104 -0
  21. package/dist/auth/user-record.js.map +1 -0
  22. package/dist/auth/user-record.test.d.ts +2 -0
  23. package/dist/auth/user-record.test.d.ts.map +1 -0
  24. package/dist/auth/user-record.test.js +198 -0
  25. package/dist/auth/user-record.test.js.map +1 -0
  26. package/dist/auth/user-request.d.ts +88 -0
  27. package/dist/auth/user-request.d.ts.map +1 -0
  28. package/dist/auth/user-request.js +242 -0
  29. package/dist/auth/user-request.js.map +1 -0
  30. package/dist/auth/user-request.test.d.ts +2 -0
  31. package/dist/auth/user-request.test.d.ts.map +1 -0
  32. package/dist/auth/user-request.test.js +269 -0
  33. package/dist/auth/user-request.test.js.map +1 -0
  34. package/package.json +1 -1
@@ -1,6 +1,16 @@
1
1
  import type { FirebaseCreateAuthUriResponse, FirebaseIdpSignInResponse, FirebaseRefreshTokenResponse, FirebaseUpdateAccountResponse, UpdateAccountRequest, UserInfo } from './firebase-types.js';
2
2
  import type { JsonWebKey } from 'crypto';
3
3
  import type { FirebaseEdgeError } from './errors.js';
4
+ import type { ListUsersResponse } from './user-record.js';
5
+ import type { UsersLookupRequest } from './user-request.js';
6
+ /** Look up a validated batch, allowing successful responses with no matching users. */
7
+ export declare function getAccountsInfo(identifiers: UsersLookupRequest, token: string, projectId: string, tenantId?: string, fetchFn?: typeof globalThis.fetch): Promise<{
8
+ data: null;
9
+ error: Error;
10
+ } | {
11
+ data: ListUsersResponse;
12
+ error: null;
13
+ }>;
4
14
  /**
5
15
  * Exchanges a refresh token for a new Firebase ID token.
6
16
  *
@@ -69,6 +79,23 @@ export declare function getAccountInfo(identifier: {
69
79
  data: UserInfo | null | undefined;
70
80
  error: FirebaseEdgeError | null;
71
81
  }>;
82
+ /**
83
+ * Downloads one page of user accounts for FirebaseAdminAuth.listUsers.
84
+ * @param token Google OAuth access token.
85
+ * @param project_id Firebase project ID.
86
+ * @param maxResults Page size, already validated by the admin auth method.
87
+ * @param pageToken Optional token from the previous page.
88
+ * @param tenantId Optional tenant ID.
89
+ * @param fetchFn Optional fetch implementation.
90
+ * @internal
91
+ */
92
+ export declare function downloadAccount(token: string, project_id: string, maxResults?: number, pageToken?: string, tenantId?: string, fetchFn?: typeof globalThis.fetch): Promise<{
93
+ data: null;
94
+ error: Error;
95
+ } | {
96
+ data: ListUsersResponse;
97
+ error: null;
98
+ }>;
72
99
  /**
73
100
  * Creates a Firebase session cookie from an ID token.
74
101
  *
@@ -181,8 +208,27 @@ export declare function unlinkProvider(idToken: string, providerId: string, key:
181
208
  * @param tenantId Optional tenant ID.
182
209
  */
183
210
  export declare function updateAccountAdmin(projectId: string, localId: string, updates: UpdateAccountRequest, googleOAuthAccessToken: string, fetchFn?: typeof globalThis.fetch, tenantId?: string): Promise<{
184
- data: FirebaseUpdateAccountResponse | null;
185
- error: FirebaseEdgeError | null;
211
+ data: null;
212
+ error: Error;
213
+ } | {
214
+ data: FirebaseUpdateAccountResponse;
215
+ error: null;
216
+ }>;
217
+ /** Create an account using already validated and translated admin properties. */
218
+ export declare function createAccountAdmin(projectId: string, properties: UpdateAccountRequest, token: string, fetchFn?: typeof globalThis.fetch, tenantId?: string): Promise<{
219
+ data: null;
220
+ error: Error;
221
+ } | {
222
+ data: {
223
+ localId: string;
224
+ };
225
+ error: null;
226
+ }>;
227
+ /** Delete a single user account using admin credentials. */
228
+ export declare function deleteAccountAdmin(projectId: string, uid: string, token: string, fetchFn?: typeof globalThis.fetch, tenantId?: string): Promise<{
229
+ error: Error;
230
+ } | {
231
+ error: null;
186
232
  }>;
187
233
  /**
188
234
  * Revokes refresh tokens for a user by setting `validSince` to now.
@@ -194,7 +240,10 @@ export declare function updateAccountAdmin(projectId: string, localId: string, u
194
240
  * @param tenantId Optional tenant ID.
195
241
  */
196
242
  export declare function revokeRefreshTokens(projectId: string, uid: string, googleOAuthAccessToken: string, fetchFn?: typeof globalThis.fetch, tenantId?: string): Promise<{
197
- data: FirebaseUpdateAccountResponse | null;
198
- error: FirebaseEdgeError | null;
243
+ data: null;
244
+ error: Error;
245
+ } | {
246
+ data: FirebaseUpdateAccountResponse;
247
+ error: null;
199
248
  }>;
200
249
  //# sourceMappingURL=firebase-auth-endpoints.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"firebase-auth-endpoints.d.ts","sourceRoot":"","sources":["../../src/auth/firebase-auth-endpoints.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,6BAA6B,EAC7B,yBAAyB,EACzB,4BAA4B,EAE5B,6BAA6B,EAC7B,oBAAoB,EACpB,QAAQ,EACX,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAEzC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAgCrD;;;;;;GAMG;AACH,wBAAsB,sBAAsB,CACxC,YAAY,EAAE,MAAM,EACpB,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK;;;GAuBpC;AAED;;;;;;;GAOG;AACH,wBAAsB,aAAa,CAC/B,YAAY,EAAE,MAAM,EACpB,GAAG,EAAE,MAAM,EACX,QAAQ,CAAC,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK;;;GAyBpC;AAED;;;;;;;;;GASG;AACH,wBAAsB,aAAa,CAC/B,eAAe,EAAE,MAAM,EACvB,UAAU,EAAE,MAAM,EAClB,UAAU,oBAAe,EACzB,GAAG,EAAE,MAAM,EACX,QAAQ,CAAC,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK;;;GAmCpC;AAED;;;;;;;GAOG;AACH,wBAAsB,qBAAqB,CACvC,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,EACX,QAAQ,CAAC,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK;;;GAyBpC;AAED;;;;;;;;GAQG;AACH,wBAAsB,cAAc,CAChC,UAAU,EAAE;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,EACzE,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,EAClB,QAAQ,CAAC,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK;;;GA4BpC;AAED;;;;;;;;;GASG;AACH,wBAAsB,mBAAmB,CACrC,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,EAClB,YAAY,GAAE,MAAiC,EAC/C,QAAQ,CAAC,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK;;;GA4BpC;AAED;;;;GAIG;AACH,wBAAsB,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK;;aAK1B,MAAM;;;GAW1C;AAED;;;;GAIG;AACH,wBAAsB,aAAa,CAAC,OAAO,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK;;;GAgBpE;AAED;;;;GAIG;AACH,wBAAsB,WAAW,CAC7B,WAAW,EAAE,gBAAgB,EAC7B,GAAG,EAAE,MAAM,EACX,OAAO,EAAE;IACL,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB,EACD,QAAQ,CAAC,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,GAClC,OAAO,CAAC;IAAE,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI,CAAA;CAAE,CAAC,CAAC;AAEhF,wBAAsB,WAAW,CAC7B,WAAW,EAAE,cAAc,EAC3B,GAAG,EAAE,MAAM,EACX,OAAO,EAAE;IACL,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB,EACD,QAAQ,CAAC,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,GAClC,OAAO,CAAC;IAAE,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI,CAAA;CAAE,CAAC,CAAC;AAgDhF;;;;;;;;;GASG;AACH,wBAAsB,mBAAmB,CACrC,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,MAAM,EAChB,QAAQ,CAAC,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK;;;GA0BpC;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,uBAAuB,CACzC,OAAO,EAAE,MAAM,EACf,eAAe,EAAE,MAAM,EACvB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,MAAM,EACX,QAAQ,CAAC,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK;;;GAoCpC;AAED;;;;;;;;GAQG;AACH,wBAAsB,cAAc,CAChC,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,MAAM,EACX,QAAQ,CAAC,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK;;;GAyBpC;AAED;;;;;;;;;GASG;AACH,wBAAsB,kBAAkB,CACpC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,oBAAoB,EAC7B,sBAAsB,EAAE,MAAM,EAC9B,OAAO,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,EACjC,QAAQ,CAAC,EAAE,MAAM;;;GAsBpB;AAED;;;;;;;;GAQG;AACH,wBAAsB,mBAAmB,CACrC,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,MAAM,EACX,sBAAsB,EAAE,MAAM,EAC9B,OAAO,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,EACjC,QAAQ,CAAC,EAAE,MAAM;;;GAYpB"}
1
+ {"version":3,"file":"firebase-auth-endpoints.d.ts","sourceRoot":"","sources":["../../src/auth/firebase-auth-endpoints.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,23 @@
1
1
  import { restFetch } from '../rest-fetch.js';
2
2
  import { mapFirebaseError } from './auth-endpoint-errors.js';
3
+ import { ensureError } from './errors.js';
4
+ /** Look up a validated batch, allowing successful responses with no matching users. */
5
+ export async function getAccountsInfo(identifiers, token, projectId, tenantId, fetchFn) {
6
+ const url = createAdminIdentityURL(projectId, 'lookup', true, tenantId);
7
+ const { data, error } = await restFetch(url, {
8
+ body: identifiers,
9
+ bearerToken: token,
10
+ global: { fetch: fetchFn }
11
+ });
12
+ if (error)
13
+ return {
14
+ data: null,
15
+ error: typeof error === 'object' && error.error
16
+ ? mapFirebaseError(error.error)
17
+ : ensureError(error)
18
+ };
19
+ return { data, error: null };
20
+ }
3
21
  // Functions
4
22
  /**
5
23
  * Builds an Identity Toolkit Admin API URL.
@@ -7,11 +25,12 @@ import { mapFirebaseError } from './auth-endpoint-errors.js';
7
25
  * If a tenant ID is provided, the URL targets Identity Platform tenant resources.
8
26
  */
9
27
  function createAdminIdentityURL(project_id, name, accounts = true, tenantId) {
28
+ const action = name ? `:${name}` : '';
10
29
  if (tenantId) {
11
30
  // Use Identity Platform API for tenant-specific operations
12
- return `https://identitytoolkit.googleapis.com/v1/projects/${project_id}/tenants/${tenantId}${accounts ? '/accounts' : ''}:${name}`;
31
+ return `https://identitytoolkit.googleapis.com/v1/projects/${project_id}/tenants/${tenantId}${accounts ? '/accounts' : ''}${action}`;
13
32
  }
14
- return `https://identitytoolkit.googleapis.com/v1/projects/${project_id}${accounts ? '/accounts' : ''}:${name}`;
33
+ return `https://identitytoolkit.googleapis.com/v1/projects/${project_id}${accounts ? '/accounts' : ''}${action}`;
15
34
  }
16
35
  /**
17
36
  * Builds a standard Firebase Auth REST API URL.
@@ -149,7 +168,7 @@ export async function signInWithCustomToken(jwtToken, key, tenantId, fetchFn) {
149
168
  export async function getAccountInfo(identifier, token, project_id, tenantId, fetchFn) {
150
169
  const url = createAdminIdentityURL(project_id, 'lookup', true, tenantId);
151
170
  const body = {
152
- ...('uid' in identifier && { localId: identifier.uid }),
171
+ ...('uid' in identifier && { localId: [identifier.uid] }),
153
172
  ...('email' in identifier && { email: [identifier.email] }),
154
173
  ...('phoneNumber' in identifier && {
155
174
  phoneNumber: [identifier.phoneNumber]
@@ -161,12 +180,43 @@ export async function getAccountInfo(identifier, token, project_id, tenantId, fe
161
180
  body,
162
181
  bearerToken: token
163
182
  });
164
- const userData = data?.users.length ? data.users[0] : null;
183
+ const userData = data?.users?.length ? data.users[0] : null;
165
184
  return {
166
185
  data: userData,
167
186
  error: error ? mapFirebaseError(error.error) : null
168
187
  };
169
188
  }
189
+ /**
190
+ * Downloads one page of user accounts for FirebaseAdminAuth.listUsers.
191
+ * @param token Google OAuth access token.
192
+ * @param project_id Firebase project ID.
193
+ * @param maxResults Page size, already validated by the admin auth method.
194
+ * @param pageToken Optional token from the previous page.
195
+ * @param tenantId Optional tenant ID.
196
+ * @param fetchFn Optional fetch implementation.
197
+ * @internal
198
+ */
199
+ export async function downloadAccount(token, project_id, maxResults = 1000, pageToken, tenantId, fetchFn) {
200
+ const url = createAdminIdentityURL(project_id, 'batchGet', true, tenantId);
201
+ const { data, error } = await restFetch(url, {
202
+ method: 'GET',
203
+ bearerToken: token,
204
+ global: { fetch: fetchFn },
205
+ params: {
206
+ maxResults: String(maxResults),
207
+ ...(pageToken !== undefined && { nextPageToken: pageToken })
208
+ }
209
+ });
210
+ if (error) {
211
+ return {
212
+ data: null,
213
+ error: typeof error === 'object' && error.error
214
+ ? mapFirebaseError(error.error)
215
+ : ensureError(error)
216
+ };
217
+ }
218
+ return { data, error: null };
219
+ }
170
220
  /**
171
221
  * Creates a Firebase session cookie from an ID token.
172
222
  *
@@ -370,10 +420,47 @@ export async function updateAccountAdmin(projectId, localId, updates, googleOAut
370
420
  body,
371
421
  bearerToken: googleOAuthAccessToken
372
422
  });
373
- return {
374
- data,
375
- error: error ? mapFirebaseError(error.error) : null
376
- };
423
+ if (error)
424
+ return {
425
+ data: null,
426
+ error: typeof error === 'object' && error.error
427
+ ? mapFirebaseError(error.error)
428
+ : ensureError(error)
429
+ };
430
+ return { data, error: null };
431
+ }
432
+ /** Create an account using already validated and translated admin properties. */
433
+ export async function createAccountAdmin(projectId, properties, token, fetchFn, tenantId) {
434
+ const url = createAdminIdentityURL(projectId, '', true, tenantId);
435
+ const { data, error } = await restFetch(url, {
436
+ body: properties,
437
+ bearerToken: token,
438
+ global: { fetch: fetchFn }
439
+ });
440
+ if (error)
441
+ return {
442
+ data: null,
443
+ error: typeof error === 'object' && error.error
444
+ ? mapFirebaseError(error.error)
445
+ : ensureError(error)
446
+ };
447
+ return { data, error: null };
448
+ }
449
+ /** Delete a single user account using admin credentials. */
450
+ export async function deleteAccountAdmin(projectId, uid, token, fetchFn, tenantId) {
451
+ const url = createAdminIdentityURL(projectId, 'delete', true, tenantId);
452
+ const { error } = await restFetch(url, {
453
+ body: { localId: uid },
454
+ bearerToken: token,
455
+ global: { fetch: fetchFn }
456
+ });
457
+ if (error)
458
+ return {
459
+ error: typeof error === 'object' && error.error
460
+ ? mapFirebaseError(error.error)
461
+ : ensureError(error)
462
+ };
463
+ return { error: null };
377
464
  }
378
465
  /**
379
466
  * Revokes refresh tokens for a user by setting `validSince` to now.
@@ -1 +1 @@
1
- {"version":3,"file":"firebase-auth-endpoints.js","sourceRoot":"","sources":["../../src/auth/firebase-auth-endpoints.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"firebase-auth-endpoints.js","sourceRoot":"","sources":["../../src/auth/firebase-auth-endpoints.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { describe, it, expect, vi, beforeEach } from 'vitest';
2
- import { refreshFirebaseIdToken, createAuthUri, signInWithIdp, signInWithCustomToken, getAccountInfo, createSessionCookie, getJWKs, getPublicKeys, sendOobCode, signInWithEmailLink, linkWithOAuthCredential, unlinkProvider } from './firebase-auth-endpoints.js';
2
+ import { getAccountsInfo, createAccountAdmin, updateAccountAdmin, deleteAccountAdmin, refreshFirebaseIdToken, createAuthUri, signInWithIdp, signInWithCustomToken, getAccountInfo, downloadAccount, createSessionCookie, getJWKs, getPublicKeys, sendOobCode, signInWithEmailLink, linkWithOAuthCredential, unlinkProvider } from './firebase-auth-endpoints.js';
3
3
  import * as restFetch from '../rest-fetch.js';
4
4
  import { FirebaseEdgeError, FirebaseEndpointErrorInfo } from './errors.js';
5
5
  vi.mock('../rest-fetch.js');
@@ -11,6 +11,213 @@ describe('firebase-auth-endpoints', () => {
11
11
  beforeEach(() => {
12
12
  vi.clearAllMocks();
13
13
  });
14
+ describe('getAccountsInfo', () => {
15
+ it.each([undefined, 'tenant'])('looks up a mixed batch for tenant %s', async (tenantId) => {
16
+ const body = {
17
+ localId: ['uid'],
18
+ email: ['user@example.com'],
19
+ phoneNumber: ['+15555550100'],
20
+ federatedUserId: [
21
+ { providerId: 'google.com', rawId: 'external' }
22
+ ]
23
+ };
24
+ const data = { users: [{ localId: 'uid' }] };
25
+ vi.mocked(restFetch.restFetch).mockResolvedValue({
26
+ data,
27
+ error: null
28
+ });
29
+ expect(await getAccountsInfo(body, ACCESS_TOKEN, PROJECT_ID, tenantId, mockFetch)).toEqual({ data, error: null });
30
+ expect(restFetch.restFetch).toHaveBeenCalledWith(`https://identitytoolkit.googleapis.com/v1/projects/test-project${tenantId ? '/tenants/tenant' : ''}/accounts:lookup`, {
31
+ body,
32
+ bearerToken: ACCESS_TOKEN,
33
+ global: { fetch: mockFetch }
34
+ });
35
+ });
36
+ it('allows a successful response with no matching users', async () => {
37
+ vi.mocked(restFetch.restFetch).mockResolvedValue({
38
+ data: {},
39
+ error: null
40
+ });
41
+ expect(await getAccountsInfo({ localId: ['missing'] }, ACCESS_TOKEN, PROJECT_ID)).toEqual({ data: {}, error: null });
42
+ });
43
+ it('maps Firebase failures and normalizes plain-text errors', async () => {
44
+ vi.mocked(restFetch.restFetch)
45
+ .mockResolvedValueOnce({
46
+ data: null,
47
+ error: {
48
+ error: { code: 403, message: 'PERMISSION_DENIED' }
49
+ }
50
+ })
51
+ .mockResolvedValueOnce({ data: null, error: 'Unavailable' });
52
+ expect((await getAccountsInfo({ localId: ['uid'] }, ACCESS_TOKEN, PROJECT_ID)).error).toMatchObject({
53
+ code: FirebaseEndpointErrorInfo.ENDPOINT_PERMISSION_DENIED.code
54
+ });
55
+ expect((await getAccountsInfo({ localId: ['uid'] }, ACCESS_TOKEN, PROJECT_ID)).error?.message).toContain('Unavailable');
56
+ });
57
+ });
58
+ describe('admin user writes', () => {
59
+ it.each([undefined, 'tenant'])('creates at the accounts resource for tenant %s', async (tenantId) => {
60
+ vi.mocked(restFetch.restFetch).mockResolvedValue({
61
+ data: { localId: 'uid' },
62
+ error: null
63
+ });
64
+ expect(await createAccountAdmin(PROJECT_ID, { email: 'user@example.com', disabled: false }, ACCESS_TOKEN, mockFetch, tenantId)).toEqual({ data: { localId: 'uid' }, error: null });
65
+ expect(restFetch.restFetch).toHaveBeenCalledWith(`https://identitytoolkit.googleapis.com/v1/projects/test-project${tenantId ? '/tenants/tenant' : ''}/accounts`, {
66
+ body: { email: 'user@example.com', disabled: false },
67
+ bearerToken: ACCESS_TOKEN,
68
+ global: { fetch: mockFetch }
69
+ });
70
+ });
71
+ it('reuses the update endpoint for admin user changes', async () => {
72
+ vi.mocked(restFetch.restFetch).mockResolvedValue({
73
+ data: { localId: 'uid' },
74
+ error: null
75
+ });
76
+ await updateAccountAdmin(PROJECT_ID, 'uid', { disableUser: true, deleteAttribute: ['PHOTO_URL'] }, ACCESS_TOKEN, mockFetch, 'tenant');
77
+ expect(restFetch.restFetch).toHaveBeenCalledWith('https://identitytoolkit.googleapis.com/v1/projects/test-project/tenants/tenant/accounts:update', {
78
+ body: {
79
+ localId: 'uid',
80
+ disableUser: true,
81
+ deleteAttribute: ['PHOTO_URL']
82
+ },
83
+ bearerToken: ACCESS_TOKEN,
84
+ global: { fetch: mockFetch }
85
+ });
86
+ });
87
+ it.each([undefined, 'tenant'])('deletes a single UID for tenant %s', async (tenantId) => {
88
+ vi.mocked(restFetch.restFetch).mockResolvedValue({
89
+ data: {},
90
+ error: null
91
+ });
92
+ expect(await deleteAccountAdmin(PROJECT_ID, 'uid', ACCESS_TOKEN, mockFetch, tenantId)).toEqual({ error: null });
93
+ expect(restFetch.restFetch).toHaveBeenCalledWith(`https://identitytoolkit.googleapis.com/v1/projects/test-project${tenantId ? '/tenants/tenant' : ''}/accounts:delete`, {
94
+ body: { localId: 'uid' },
95
+ bearerToken: ACCESS_TOKEN,
96
+ global: { fetch: mockFetch }
97
+ });
98
+ });
99
+ it.each(['EMAIL_EXISTS', 'USER_NOT_FOUND', 'PERMISSION_DENIED'])('maps %s write errors', async (message) => {
100
+ vi.mocked(restFetch.restFetch).mockResolvedValue({
101
+ data: null,
102
+ error: { error: { code: 400, message } }
103
+ });
104
+ expect((await createAccountAdmin(PROJECT_ID, {}, ACCESS_TOKEN))
105
+ .error).toBeInstanceOf(FirebaseEdgeError);
106
+ expect((await updateAccountAdmin(PROJECT_ID, 'uid', {}, ACCESS_TOKEN)).error).toBeInstanceOf(FirebaseEdgeError);
107
+ expect((await deleteAccountAdmin(PROJECT_ID, 'uid', ACCESS_TOKEN))
108
+ .error).toBeInstanceOf(FirebaseEdgeError);
109
+ });
110
+ it('normalizes non-JSON errors for admin writes', async () => {
111
+ vi.mocked(restFetch.restFetch).mockResolvedValue({
112
+ data: null,
113
+ error: 'Unavailable'
114
+ });
115
+ expect((await createAccountAdmin(PROJECT_ID, {}, ACCESS_TOKEN)).error
116
+ ?.message).toContain('Unavailable');
117
+ expect((await updateAccountAdmin(PROJECT_ID, 'uid', {}, ACCESS_TOKEN))
118
+ .error?.message).toContain('Unavailable');
119
+ expect((await deleteAccountAdmin(PROJECT_ID, 'uid', ACCESS_TOKEN))
120
+ .error?.message).toContain('Unavailable');
121
+ });
122
+ it('looks up the complete record with a UID array', async () => {
123
+ vi.mocked(restFetch.restFetch).mockResolvedValue({
124
+ data: { users: [{ localId: 'uid' }] },
125
+ error: null
126
+ });
127
+ await getAccountInfo({ uid: 'uid' }, ACCESS_TOKEN, PROJECT_ID);
128
+ expect(restFetch.restFetch).toHaveBeenCalledWith(expect.stringContaining('/accounts:lookup'), expect.objectContaining({ body: { localId: ['uid'] } }));
129
+ });
130
+ });
131
+ describe('downloadAccount', () => {
132
+ it('encodes opaque pagination tokens and sends a body-free authenticated GET', async () => {
133
+ const actual = await vi.importActual('../rest-fetch.js');
134
+ vi.mocked(restFetch.restFetch).mockImplementationOnce(actual.restFetch);
135
+ const fetchFn = vi
136
+ .fn()
137
+ .mockResolvedValue(Response.json({ users: [] }));
138
+ await downloadAccount(ACCESS_TOKEN, PROJECT_ID, 25, 'a+/=? &', 'tenant', fetchFn);
139
+ const [url, options] = fetchFn.mock.calls[0];
140
+ const parsed = new URL(String(url));
141
+ expect(parsed.pathname).toBe('/v1/projects/test-project/tenants/tenant/accounts:batchGet');
142
+ expect(parsed.searchParams.get('nextPageToken')).toBe('a+/=? &');
143
+ expect(parsed.searchParams.get('maxResults')).toBe('25');
144
+ expect(options).toMatchObject({
145
+ method: 'GET',
146
+ body: undefined,
147
+ headers: { Authorization: `Bearer ${ACCESS_TOKEN}` }
148
+ });
149
+ });
150
+ it('normalizes an actual non-JSON HTTP failure', async () => {
151
+ const actual = await vi.importActual('../rest-fetch.js');
152
+ vi.mocked(restFetch.restFetch).mockImplementationOnce(actual.restFetch);
153
+ const fetchFn = vi
154
+ .fn()
155
+ .mockResolvedValue(new Response('Service unavailable', { status: 503 }));
156
+ const result = await downloadAccount(ACCESS_TOKEN, PROJECT_ID, 25, undefined, undefined, fetchFn);
157
+ expect(result.data).toBeNull();
158
+ expect(result.error?.message).toContain('Service unavailable');
159
+ });
160
+ it('propagates JSON decoding failures to the admin error handler', async () => {
161
+ const actual = await vi.importActual('../rest-fetch.js');
162
+ vi.mocked(restFetch.restFetch).mockImplementationOnce(actual.restFetch);
163
+ const fetchFn = vi.fn().mockResolvedValue(new Response('{', {
164
+ headers: { 'content-type': 'application/json' }
165
+ }));
166
+ await expect(downloadAccount(ACCESS_TOKEN, PROJECT_ID, 25, undefined, undefined, fetchFn)).rejects.toBeInstanceOf(SyntaxError);
167
+ });
168
+ it('downloads the default page through the admin URL and shared fetch helper', async () => {
169
+ const data = { users: [{ localId: 'uid' }], nextPageToken: 'next' };
170
+ vi.mocked(restFetch.restFetch).mockResolvedValue({
171
+ data,
172
+ error: null
173
+ });
174
+ expect(await downloadAccount(ACCESS_TOKEN, PROJECT_ID)).toEqual({
175
+ data,
176
+ error: null
177
+ });
178
+ expect(restFetch.restFetch).toHaveBeenCalledWith('https://identitytoolkit.googleapis.com/v1/projects/test-project/accounts:batchGet', {
179
+ method: 'GET',
180
+ bearerToken: ACCESS_TOKEN,
181
+ global: { fetch: undefined },
182
+ params: { maxResults: '1000' }
183
+ });
184
+ });
185
+ it('forwards tenant, pagination, and custom fetch options', async () => {
186
+ vi.mocked(restFetch.restFetch).mockResolvedValue({
187
+ data: {},
188
+ error: null
189
+ });
190
+ await downloadAccount(ACCESS_TOKEN, PROJECT_ID, 10, 'opaque+/=', 'tenant', mockFetch);
191
+ expect(restFetch.restFetch).toHaveBeenCalledWith('https://identitytoolkit.googleapis.com/v1/projects/test-project/tenants/tenant/accounts:batchGet', {
192
+ method: 'GET',
193
+ bearerToken: ACCESS_TOKEN,
194
+ global: { fetch: mockFetch },
195
+ params: { maxResults: '10', nextPageToken: 'opaque+/=' }
196
+ });
197
+ });
198
+ it('maps Firebase API errors', async () => {
199
+ vi.mocked(restFetch.restFetch).mockResolvedValue({
200
+ data: null,
201
+ error: { error: { code: 403, message: 'PERMISSION_DENIED' } }
202
+ });
203
+ const result = await downloadAccount(ACCESS_TOKEN, PROJECT_ID);
204
+ expect(result.data).toBeNull();
205
+ expect(result.error).toBeInstanceOf(FirebaseEdgeError);
206
+ expect(result.error).toMatchObject({
207
+ code: FirebaseEndpointErrorInfo.ENDPOINT_PERMISSION_DENIED.code
208
+ });
209
+ });
210
+ it('normalizes non-JSON error responses', async () => {
211
+ vi.mocked(restFetch.restFetch).mockResolvedValue({
212
+ data: null,
213
+ error: 'Service unavailable'
214
+ });
215
+ const result = await downloadAccount(ACCESS_TOKEN, PROJECT_ID);
216
+ expect(result.data).toBeNull();
217
+ expect(result.error).toBeInstanceOf(Error);
218
+ expect(result.error?.message).toContain('Service unavailable');
219
+ });
220
+ });
14
221
  describe('refreshFirebaseIdToken', () => {
15
222
  it('should refresh token successfully', async () => {
16
223
  const mockResponse = {
@@ -220,7 +427,7 @@ describe('firebase-auth-endpoints', () => {
220
427
  expect(result.error).toBeNull();
221
428
  expect(restFetchSpy).toHaveBeenCalledWith(`https://identitytoolkit.googleapis.com/v1/projects/${PROJECT_ID}/tenants/${tenantId}/accounts:lookup`, expect.objectContaining({
222
429
  body: {
223
- localId: 'user-123',
430
+ localId: ['user-123'],
224
431
  tenantId: tenantId
225
432
  },
226
433
  bearerToken: ACCESS_TOKEN
@@ -386,7 +593,7 @@ describe('firebase-auth-endpoints', () => {
386
593
  const opts = options;
387
594
  expect(calledUrl).toBe(`https://identitytoolkit.googleapis.com/v1/projects/${projectId}/accounts:lookup`);
388
595
  expect(opts.bearerToken).toBe(token);
389
- expect(opts.body?.localId).toBe(uid);
596
+ expect(opts.body?.localId).toEqual([uid]);
390
597
  });
391
598
  it('should call accounts lookup tenant URL when tenant ID provided', async () => {
392
599
  const mockUser = { localId: 'user-123', email: 'test@example.com' };