@payloadcms/figma 0.0.1-alpha.1 → 0.0.1-alpha.10
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.
- package/dist/api/control-plane.d.ts.map +1 -1
- package/dist/api/control-plane.js +2 -7
- package/dist/api/control-plane.js.map +1 -1
- package/dist/api/figma-api.js +3 -3
- package/dist/api/figma-api.js.map +1 -1
- package/dist/auth/jwt-validator.js.map +1 -1
- package/dist/auth/oauth-flow.d.ts.map +1 -1
- package/dist/auth/oauth-flow.js +3 -6
- package/dist/auth/oauth-flow.js.map +1 -1
- package/dist/auth/project-token.d.ts.map +1 -1
- package/dist/auth/project-token.js +1 -4
- package/dist/auth/project-token.js.map +1 -1
- package/dist/auth/refresh.d.ts.map +1 -1
- package/dist/auth/refresh.js +19 -28
- package/dist/auth/refresh.js.map +1 -1
- package/dist/auth/types.d.ts +1 -1
- package/dist/auth/types.d.ts.map +1 -1
- package/dist/auth/types.js.map +1 -1
- package/dist/cli.js +1 -3
- package/dist/cli.js.map +1 -1
- package/dist/commands/deploy.d.ts.map +1 -1
- package/dist/commands/deploy.js +17 -10
- package/dist/commands/deploy.js.map +1 -1
- package/dist/commands/init.d.ts +4 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +21 -85
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/list-tokens.d.ts +1 -1
- package/dist/commands/list-tokens.d.ts.map +1 -1
- package/dist/commands/list-tokens.js +6 -5
- package/dist/commands/list-tokens.js.map +1 -1
- package/dist/commands/login.d.ts +2 -11
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/login.js +4 -7
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/logout.d.ts +1 -1
- package/dist/commands/logout.js +1 -1
- package/dist/commands/logout.js.map +1 -1
- package/dist/exports/client.d.ts +3 -0
- package/dist/exports/client.d.ts.map +1 -0
- package/dist/exports/client.js +4 -0
- package/dist/exports/client.js.map +1 -0
- package/dist/oauth/components/LoginButton/index.d.ts +9 -0
- package/dist/oauth/components/LoginButton/index.d.ts.map +1 -0
- package/dist/oauth/components/LoginButton/index.js +52 -0
- package/dist/oauth/components/LoginButton/index.js.map +1 -0
- package/dist/oauth/components/LoginButton/index.scss +10 -0
- package/dist/oauth/components/LogoutButton/index.d.ts +7 -0
- package/dist/oauth/components/LogoutButton/index.d.ts.map +1 -0
- package/dist/oauth/components/LogoutButton/index.js +67 -0
- package/dist/oauth/components/LogoutButton/index.js.map +1 -0
- package/dist/oauth/components/LogoutButton/index.scss +10 -0
- package/dist/oauth/defaults.d.ts +10 -0
- package/dist/oauth/defaults.d.ts.map +1 -0
- package/dist/oauth/defaults.js +91 -0
- package/dist/oauth/defaults.js.map +1 -0
- package/dist/oauth/endpoints/getLoginEndpoint.d.ts +13 -0
- package/dist/oauth/endpoints/getLoginEndpoint.d.ts.map +1 -0
- package/dist/oauth/endpoints/getLoginEndpoint.js +237 -0
- package/dist/oauth/endpoints/getLoginEndpoint.js.map +1 -0
- package/dist/oauth/endpoints/getLogoutEndpoint.d.ts +12 -0
- package/dist/oauth/endpoints/getLogoutEndpoint.d.ts.map +1 -0
- package/dist/oauth/endpoints/getLogoutEndpoint.js +99 -0
- package/dist/oauth/endpoints/getLogoutEndpoint.js.map +1 -0
- package/dist/oauth/endpoints/getMetaEndpoint.d.ts +13 -0
- package/dist/oauth/endpoints/getMetaEndpoint.d.ts.map +1 -0
- package/dist/oauth/endpoints/getMetaEndpoint.js +25 -0
- package/dist/oauth/endpoints/getMetaEndpoint.js.map +1 -0
- package/dist/oauth/endpoints/getRedirectToLoginEndpoint.d.ts +13 -0
- package/dist/oauth/endpoints/getRedirectToLoginEndpoint.d.ts.map +1 -0
- package/dist/oauth/endpoints/getRedirectToLoginEndpoint.js +21 -0
- package/dist/oauth/endpoints/getRedirectToLoginEndpoint.js.map +1 -0
- package/dist/oauth/exports/client.d.ts +3 -0
- package/dist/oauth/exports/client.d.ts.map +1 -0
- package/dist/oauth/exports/client.js +4 -0
- package/dist/oauth/exports/client.js.map +1 -0
- package/dist/oauth/hooks/afterLogout.d.ts +8 -0
- package/dist/oauth/hooks/afterLogout.d.ts.map +1 -0
- package/dist/oauth/hooks/afterLogout.js +27 -0
- package/dist/oauth/hooks/afterLogout.js.map +1 -0
- package/dist/oauth/hooks/me.d.ts +5 -0
- package/dist/oauth/hooks/me.d.ts.map +1 -0
- package/dist/oauth/hooks/me.js +55 -0
- package/dist/oauth/hooks/me.js.map +1 -0
- package/dist/oauth/hooks/refresh.d.ts +8 -0
- package/dist/oauth/hooks/refresh.d.ts.map +1 -0
- package/dist/oauth/hooks/refresh.js +91 -0
- package/dist/oauth/hooks/refresh.js.map +1 -0
- package/dist/oauth/index.d.ts +4 -0
- package/dist/oauth/index.d.ts.map +1 -0
- package/dist/oauth/index.js +222 -0
- package/dist/oauth/index.js.map +1 -0
- package/dist/oauth/strategy/index.d.ts +54 -0
- package/dist/oauth/strategy/index.d.ts.map +1 -0
- package/dist/oauth/strategy/index.js +280 -0
- package/dist/oauth/strategy/index.js.map +1 -0
- package/dist/oauth/types.d.ts +192 -0
- package/dist/oauth/types.d.ts.map +1 -0
- package/dist/oauth/types.js +3 -0
- package/dist/oauth/types.js.map +1 -0
- package/dist/oauth/utilities/clearCookie.d.ts +9 -0
- package/dist/oauth/utilities/clearCookie.d.ts.map +1 -0
- package/dist/oauth/utilities/clearCookie.js +21 -0
- package/dist/oauth/utilities/clearCookie.js.map +1 -0
- package/dist/oauth/utilities/createCookieOptions.d.ts +10 -0
- package/dist/oauth/utilities/createCookieOptions.d.ts.map +1 -0
- package/dist/oauth/utilities/createCookieOptions.js +42 -0
- package/dist/oauth/utilities/createCookieOptions.js.map +1 -0
- package/dist/oauth/utilities/createDebugLogger.d.ts +4 -0
- package/dist/oauth/utilities/createDebugLogger.d.ts.map +1 -0
- package/dist/oauth/utilities/createDebugLogger.js +16 -0
- package/dist/oauth/utilities/createDebugLogger.js.map +1 -0
- package/dist/oauth/utilities/extractOrigin.d.ts +2 -0
- package/dist/oauth/utilities/extractOrigin.d.ts.map +1 -0
- package/dist/oauth/utilities/extractOrigin.js +12 -0
- package/dist/oauth/utilities/extractOrigin.js.map +1 -0
- package/dist/oauth/utilities/getAdminCollectionSlug.d.ts +3 -0
- package/dist/oauth/utilities/getAdminCollectionSlug.d.ts.map +1 -0
- package/dist/oauth/utilities/getAdminCollectionSlug.js +18 -0
- package/dist/oauth/utilities/getAdminCollectionSlug.js.map +1 -0
- package/dist/oauth/utilities/getAdminPath.d.ts +8 -0
- package/dist/oauth/utilities/getAdminPath.d.ts.map +1 -0
- package/dist/oauth/utilities/getAdminPath.js +9 -0
- package/dist/oauth/utilities/getAdminPath.js.map +1 -0
- package/dist/oauth/utilities/getAuthorizeURL.d.ts +17 -0
- package/dist/oauth/utilities/getAuthorizeURL.d.ts.map +1 -0
- package/dist/oauth/utilities/getAuthorizeURL.js +45 -0
- package/dist/oauth/utilities/getAuthorizeURL.js.map +1 -0
- package/dist/oauth/utilities/getCookieExpiration.d.ts +4 -0
- package/dist/oauth/utilities/getCookieExpiration.d.ts.map +1 -0
- package/dist/oauth/utilities/getCookieExpiration.js +11 -0
- package/dist/oauth/utilities/getCookieExpiration.js.map +1 -0
- package/dist/oauth/utilities/getSecondsFromTokenExp.d.ts +2 -0
- package/dist/oauth/utilities/getSecondsFromTokenExp.d.ts.map +1 -0
- package/dist/oauth/utilities/getSecondsFromTokenExp.js +7 -0
- package/dist/oauth/utilities/getSecondsFromTokenExp.js.map +1 -0
- package/dist/oauth/utilities/getTokenExp.d.ts +6 -0
- package/dist/oauth/utilities/getTokenExp.d.ts.map +1 -0
- package/dist/oauth/utilities/getTokenExp.js +20 -0
- package/dist/oauth/utilities/getTokenExp.js.map +1 -0
- package/dist/oauth/utilities/getUsernameField.d.ts +9 -0
- package/dist/oauth/utilities/getUsernameField.d.ts.map +1 -0
- package/dist/oauth/utilities/getUsernameField.js +20 -0
- package/dist/oauth/utilities/getUsernameField.js.map +1 -0
- package/dist/oauth/utilities/hasUserTokenPropsChanged.d.ts +8 -0
- package/dist/oauth/utilities/hasUserTokenPropsChanged.d.ts.map +1 -0
- package/dist/oauth/utilities/hasUserTokenPropsChanged.js +25 -0
- package/dist/oauth/utilities/hasUserTokenPropsChanged.js.map +1 -0
- package/dist/oauth/utilities/mergeHeaders.d.ts +2 -0
- package/dist/oauth/utilities/mergeHeaders.d.ts.map +1 -0
- package/dist/oauth/utilities/mergeHeaders.js +37 -0
- package/dist/oauth/utilities/mergeHeaders.js.map +1 -0
- package/dist/oauth/utilities/refreshTokens.d.ts +16 -0
- package/dist/oauth/utilities/refreshTokens.d.ts.map +1 -0
- package/dist/oauth/utilities/refreshTokens.js +67 -0
- package/dist/oauth/utilities/refreshTokens.js.map +1 -0
- package/dist/plugin/build-config.d.ts +7 -1
- package/dist/plugin/build-config.d.ts.map +1 -1
- package/dist/plugin/build-config.js +29 -2
- package/dist/plugin/build-config.js.map +1 -1
- package/dist/types/config.d.ts +0 -11
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/config.js +1 -1
- package/dist/types/config.js.map +1 -1
- package/dist/utils/config.d.ts +0 -22
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +0 -46
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/messages.js +11 -11
- package/dist/utils/messages.js.map +1 -1
- package/dist/utils/payload-config-ast.d.ts +17 -1
- package/dist/utils/payload-config-ast.d.ts.map +1 -1
- package/dist/utils/payload-config-ast.js +166 -14
- package/dist/utils/payload-config-ast.js.map +1 -1
- package/dist/utils/payload-config-modifier.d.ts +2 -1
- package/dist/utils/payload-config-modifier.d.ts.map +1 -1
- package/dist/utils/payload-config-modifier.js +50 -79
- package/dist/utils/payload-config-modifier.js.map +1 -1
- package/dist/utils/payload-package-check.d.ts.map +1 -1
- package/dist/utils/payload-package-check.js +14 -33
- package/dist/utils/payload-package-check.js.map +1 -1
- package/dist/utils/project.d.ts +1 -1
- package/dist/utils/project.d.ts.map +1 -1
- package/dist/utils/project.js +3 -5
- package/dist/utils/project.js.map +1 -1
- package/dist/utils/s3-upload.d.ts.map +1 -1
- package/dist/utils/s3-upload.js +3 -8
- package/dist/utils/s3-upload.js.map +1 -1
- package/dist/utils/token-display.d.ts.map +1 -1
- package/dist/utils/token-display.js +3 -2
- package/dist/utils/token-display.js.map +1 -1
- package/package.json +9 -3
- package/dist/api/control-plane.spec.d.ts +0 -2
- package/dist/api/control-plane.spec.d.ts.map +0 -1
- package/dist/api/control-plane.spec.js +0 -296
- package/dist/api/control-plane.spec.js.map +0 -1
- package/dist/api/figma-api.spec.d.ts +0 -14
- package/dist/api/figma-api.spec.d.ts.map +0 -1
- package/dist/api/figma-api.spec.js +0 -201
- package/dist/api/figma-api.spec.js.map +0 -1
- package/dist/auth/__tests__/fixtures.d.ts +0 -26
- package/dist/auth/__tests__/fixtures.d.ts.map +0 -1
- package/dist/auth/__tests__/fixtures.js +0 -67
- package/dist/auth/__tests__/fixtures.js.map +0 -1
- package/dist/auth/__tests__/mocks.d.ts +0 -33
- package/dist/auth/__tests__/mocks.d.ts.map +0 -1
- package/dist/auth/__tests__/mocks.js +0 -63
- package/dist/auth/__tests__/mocks.js.map +0 -1
- package/dist/auth/callback-server.spec.d.ts +0 -2
- package/dist/auth/callback-server.spec.d.ts.map +0 -1
- package/dist/auth/callback-server.spec.js +0 -85
- package/dist/auth/callback-server.spec.js.map +0 -1
- package/dist/auth/crypto-utils.spec.d.ts +0 -2
- package/dist/auth/crypto-utils.spec.d.ts.map +0 -1
- package/dist/auth/crypto-utils.spec.js +0 -36
- package/dist/auth/crypto-utils.spec.js.map +0 -1
- package/dist/auth/jwt-validator.spec.d.ts +0 -10
- package/dist/auth/jwt-validator.spec.d.ts.map +0 -1
- package/dist/auth/jwt-validator.spec.js +0 -236
- package/dist/auth/jwt-validator.spec.js.map +0 -1
- package/dist/auth/oauth-flow.spec.d.ts +0 -2
- package/dist/auth/oauth-flow.spec.d.ts.map +0 -1
- package/dist/auth/oauth-flow.spec.js +0 -134
- package/dist/auth/oauth-flow.spec.js.map +0 -1
- package/dist/auth/pkce.spec.d.ts +0 -2
- package/dist/auth/pkce.spec.d.ts.map +0 -1
- package/dist/auth/pkce.spec.js +0 -32
- package/dist/auth/pkce.spec.js.map +0 -1
- package/dist/auth/project-token.spec.d.ts +0 -2
- package/dist/auth/project-token.spec.d.ts.map +0 -1
- package/dist/auth/project-token.spec.js +0 -332
- package/dist/auth/project-token.spec.js.map +0 -1
- package/dist/auth/refresh.spec.d.ts +0 -2
- package/dist/auth/refresh.spec.d.ts.map +0 -1
- package/dist/auth/refresh.spec.js +0 -105
- package/dist/auth/refresh.spec.js.map +0 -1
- package/dist/auth/token-store.spec.d.ts +0 -2
- package/dist/auth/token-store.spec.d.ts.map +0 -1
- package/dist/auth/token-store.spec.js +0 -276
- package/dist/auth/token-store.spec.js.map +0 -1
- package/dist/commands/__tests__/test-utils.d.ts +0 -28
- package/dist/commands/__tests__/test-utils.d.ts.map +0 -1
- package/dist/commands/__tests__/test-utils.js +0 -34
- package/dist/commands/__tests__/test-utils.js.map +0 -1
- package/dist/commands/deploy.spec.d.ts +0 -2
- package/dist/commands/deploy.spec.d.ts.map +0 -1
- package/dist/commands/deploy.spec.js +0 -18
- package/dist/commands/deploy.spec.js.map +0 -1
- package/dist/commands/init.spec.d.ts +0 -2
- package/dist/commands/init.spec.d.ts.map +0 -1
- package/dist/commands/init.spec.js +0 -283
- package/dist/commands/init.spec.js.map +0 -1
- package/dist/plugin/build-config.spec.d.ts +0 -2
- package/dist/plugin/build-config.spec.d.ts.map +0 -1
- package/dist/plugin/build-config.spec.js +0 -72
- package/dist/plugin/build-config.spec.js.map +0 -1
- package/dist/utils/asset-collection.spec.d.ts +0 -2
- package/dist/utils/asset-collection.spec.d.ts.map +0 -1
- package/dist/utils/asset-collection.spec.js +0 -155
- package/dist/utils/asset-collection.spec.js.map +0 -1
- package/dist/utils/build-detection.spec.d.ts +0 -2
- package/dist/utils/build-detection.spec.d.ts.map +0 -1
- package/dist/utils/build-detection.spec.js +0 -110
- package/dist/utils/build-detection.spec.js.map +0 -1
- package/dist/utils/config.spec.d.ts +0 -2
- package/dist/utils/config.spec.d.ts.map +0 -1
- package/dist/utils/config.spec.js +0 -167
- package/dist/utils/config.spec.js.map +0 -1
- package/dist/utils/download-template.spec.d.ts +0 -2
- package/dist/utils/download-template.spec.d.ts.map +0 -1
- package/dist/utils/download-template.spec.js +0 -76
- package/dist/utils/download-template.spec.js.map +0 -1
- package/dist/utils/env-management.spec.d.ts +0 -2
- package/dist/utils/env-management.spec.d.ts.map +0 -1
- package/dist/utils/env-management.spec.js +0 -123
- package/dist/utils/env-management.spec.js.map +0 -1
- package/dist/utils/git.spec.d.ts +0 -2
- package/dist/utils/git.spec.d.ts.map +0 -1
- package/dist/utils/git.spec.js +0 -99
- package/dist/utils/git.spec.js.map +0 -1
- package/dist/utils/lambda-config.spec.d.ts +0 -2
- package/dist/utils/lambda-config.spec.d.ts.map +0 -1
- package/dist/utils/lambda-config.spec.js +0 -141
- package/dist/utils/lambda-config.spec.js.map +0 -1
- package/dist/utils/payload-config-ast.spec.d.ts +0 -2
- package/dist/utils/payload-config-ast.spec.d.ts.map +0 -1
- package/dist/utils/payload-config-ast.spec.js +0 -303
- package/dist/utils/payload-config-ast.spec.js.map +0 -1
- package/dist/utils/payload-config-modifier.int.spec.d.ts +0 -2
- package/dist/utils/payload-config-modifier.int.spec.d.ts.map +0 -1
- package/dist/utils/payload-config-modifier.int.spec.js +0 -116
- package/dist/utils/payload-config-modifier.int.spec.js.map +0 -1
- package/dist/utils/payload-config-modifier.spec.d.ts +0 -2
- package/dist/utils/payload-config-modifier.spec.d.ts.map +0 -1
- package/dist/utils/payload-config-modifier.spec.js +0 -162
- package/dist/utils/payload-config-modifier.spec.js.map +0 -1
- package/dist/utils/payload-package-check.spec.d.ts +0 -2
- package/dist/utils/payload-package-check.spec.d.ts.map +0 -1
- package/dist/utils/payload-package-check.spec.js +0 -148
- package/dist/utils/payload-package-check.spec.js.map +0 -1
- package/dist/utils/project.spec.d.ts +0 -2
- package/dist/utils/project.spec.d.ts.map +0 -1
- package/dist/utils/project.spec.js +0 -222
- package/dist/utils/project.spec.js.map +0 -1
- package/dist/utils/s3-upload.spec.d.ts +0 -2
- package/dist/utils/s3-upload.spec.d.ts.map +0 -1
- package/dist/utils/s3-upload.spec.js +0 -140
- package/dist/utils/s3-upload.spec.js.map +0 -1
|
@@ -1,276 +0,0 @@
|
|
|
1
|
-
import { afterEach, beforeEach, describe, expect, it } from 'vitest';
|
|
2
|
-
import { mockExpiredTokens, mockFigmaTokens, mockFreshTokens, mockTokensExpiringSoon } from './__tests__/fixtures.js';
|
|
3
|
-
import { TokenStore } from './token-store.js';
|
|
4
|
-
describe('TokenStore', ()=>{
|
|
5
|
-
let store;
|
|
6
|
-
beforeEach(()=>{
|
|
7
|
-
// Create a new store with a unique config name for each test
|
|
8
|
-
store = new TokenStore({
|
|
9
|
-
configName: `payloadcms-figma-test-${Date.now()}`
|
|
10
|
-
});
|
|
11
|
-
});
|
|
12
|
-
afterEach(()=>{
|
|
13
|
-
// Clean up after each test
|
|
14
|
-
store.clearTokens();
|
|
15
|
-
});
|
|
16
|
-
describe('setTokens and getTokens', ()=>{
|
|
17
|
-
it('should store and retrieve tokens', ()=>{
|
|
18
|
-
const tokens = mockFigmaTokens();
|
|
19
|
-
store.setTokens(tokens);
|
|
20
|
-
const retrieved = store.getTokens();
|
|
21
|
-
expect(retrieved).toEqual(tokens);
|
|
22
|
-
});
|
|
23
|
-
});
|
|
24
|
-
describe('clearTokens', ()=>{
|
|
25
|
-
it('should remove stored tokens', ()=>{
|
|
26
|
-
const tokens = mockFigmaTokens();
|
|
27
|
-
store.setTokens(tokens);
|
|
28
|
-
store.clearTokens();
|
|
29
|
-
const retrieved = store.getTokens();
|
|
30
|
-
expect(retrieved).toBeNull();
|
|
31
|
-
});
|
|
32
|
-
});
|
|
33
|
-
describe('hasValidTokens', ()=>{
|
|
34
|
-
it('should return true when valid tokens exist', ()=>{
|
|
35
|
-
const tokens = mockFreshTokens();
|
|
36
|
-
store.setTokens(tokens);
|
|
37
|
-
expect(store.hasValidTokens()).toBe(true);
|
|
38
|
-
});
|
|
39
|
-
it('should return false when tokens are expired', ()=>{
|
|
40
|
-
const tokens = mockExpiredTokens();
|
|
41
|
-
store.setTokens(tokens);
|
|
42
|
-
expect(store.hasValidTokens()).toBe(false);
|
|
43
|
-
});
|
|
44
|
-
it('should return false when tokens are expiring soon (within buffer)', ()=>{
|
|
45
|
-
const tokens = mockTokensExpiringSoon();
|
|
46
|
-
store.setTokens(tokens);
|
|
47
|
-
expect(store.hasValidTokens()).toBe(false);
|
|
48
|
-
});
|
|
49
|
-
});
|
|
50
|
-
describe('getAccessToken', ()=>{
|
|
51
|
-
it('should return null when tokens are expired', ()=>{
|
|
52
|
-
const tokens = mockExpiredTokens();
|
|
53
|
-
store.setTokens(tokens);
|
|
54
|
-
const accessToken = store.getAccessToken();
|
|
55
|
-
expect(accessToken).toBeNull();
|
|
56
|
-
});
|
|
57
|
-
});
|
|
58
|
-
describe('getRefreshToken', ()=>{
|
|
59
|
-
it('should return refresh token even if access token is expired', ()=>{
|
|
60
|
-
const tokens = mockExpiredTokens();
|
|
61
|
-
store.setTokens(tokens);
|
|
62
|
-
const refreshToken = store.getRefreshToken();
|
|
63
|
-
expect(refreshToken).toBe(tokens.refreshToken);
|
|
64
|
-
});
|
|
65
|
-
});
|
|
66
|
-
describe('updateAccessToken', ()=>{
|
|
67
|
-
it('should update access token and expiration time', ()=>{
|
|
68
|
-
const originalTokens = mockFigmaTokens();
|
|
69
|
-
store.setTokens(originalTokens);
|
|
70
|
-
const newAccessToken = 'figt_new_access_token';
|
|
71
|
-
const expiresIn = 7200 // 2 hours
|
|
72
|
-
;
|
|
73
|
-
store.updateAccessToken(newAccessToken, expiresIn);
|
|
74
|
-
const updatedTokens = store.getTokens();
|
|
75
|
-
expect(updatedTokens?.accessToken).toBe(newAccessToken);
|
|
76
|
-
expect(updatedTokens?.refreshToken).toBe(originalTokens.refreshToken);
|
|
77
|
-
expect(updatedTokens?.expiresAt).toBeGreaterThan(Date.now());
|
|
78
|
-
});
|
|
79
|
-
});
|
|
80
|
-
describe('Project Token Methods', ()=>{
|
|
81
|
-
const tenantId1 = 'tenant-123';
|
|
82
|
-
const tenantId2 = 'tenant-456';
|
|
83
|
-
const createProjectToken = (tenantId, expiresInMinutes)=>({
|
|
84
|
-
claims: {
|
|
85
|
-
aud: tenantId,
|
|
86
|
-
email: 'test@example.com',
|
|
87
|
-
exp: Math.floor(Date.now() / 1000) + expiresInMinutes * 60,
|
|
88
|
-
iat: Math.floor(Date.now() / 1000),
|
|
89
|
-
seat_type: 'full'
|
|
90
|
-
},
|
|
91
|
-
expiresAt: Date.now() + expiresInMinutes * 60 * 1000,
|
|
92
|
-
tenantId,
|
|
93
|
-
token: `jwt_token_${tenantId}`
|
|
94
|
-
});
|
|
95
|
-
describe('getProjectToken and setProjectToken', ()=>{
|
|
96
|
-
it('should store and retrieve a project token', ()=>{
|
|
97
|
-
const projectToken = createProjectToken(tenantId1, 30);
|
|
98
|
-
store.setProjectToken(tenantId1, projectToken);
|
|
99
|
-
const retrieved = store.getProjectToken(tenantId1);
|
|
100
|
-
expect(retrieved).toEqual(projectToken);
|
|
101
|
-
});
|
|
102
|
-
it('should return null for non-existent tenant', ()=>{
|
|
103
|
-
const retrieved = store.getProjectToken('non-existent');
|
|
104
|
-
expect(retrieved).toBeNull();
|
|
105
|
-
});
|
|
106
|
-
it('should store multiple project tokens independently', ()=>{
|
|
107
|
-
const token1 = createProjectToken(tenantId1, 30);
|
|
108
|
-
const token2 = createProjectToken(tenantId2, 45);
|
|
109
|
-
store.setProjectToken(tenantId1, token1);
|
|
110
|
-
store.setProjectToken(tenantId2, token2);
|
|
111
|
-
expect(store.getProjectToken(tenantId1)).toEqual(token1);
|
|
112
|
-
expect(store.getProjectToken(tenantId2)).toEqual(token2);
|
|
113
|
-
});
|
|
114
|
-
it('should overwrite existing token for same tenant', ()=>{
|
|
115
|
-
const oldToken = createProjectToken(tenantId1, 30);
|
|
116
|
-
const newToken = createProjectToken(tenantId1, 60);
|
|
117
|
-
store.setProjectToken(tenantId1, oldToken);
|
|
118
|
-
store.setProjectToken(tenantId1, newToken);
|
|
119
|
-
const retrieved = store.getProjectToken(tenantId1);
|
|
120
|
-
expect(retrieved).toEqual(newToken);
|
|
121
|
-
expect(retrieved?.token).toBe(newToken.token);
|
|
122
|
-
});
|
|
123
|
-
});
|
|
124
|
-
describe('isProjectTokenExpired', ()=>{
|
|
125
|
-
it('should return false for valid token (30 minutes remaining)', ()=>{
|
|
126
|
-
const validToken = createProjectToken(tenantId1, 30);
|
|
127
|
-
expect(store.isProjectTokenExpired(validToken)).toBe(false);
|
|
128
|
-
});
|
|
129
|
-
it('should return true for expired token (past expiresAt)', ()=>{
|
|
130
|
-
const expiredToken = createProjectToken(tenantId1, -10) // 10 minutes ago
|
|
131
|
-
;
|
|
132
|
-
expect(store.isProjectTokenExpired(expiredToken)).toBe(true);
|
|
133
|
-
});
|
|
134
|
-
it('should return true for token within buffer window (4 minutes remaining)', ()=>{
|
|
135
|
-
// TOKEN_EXPIRY_BUFFER_SECONDS is 5 minutes (300 seconds)
|
|
136
|
-
// Token expires in 4 minutes = within buffer
|
|
137
|
-
const expiringToken = createProjectToken(tenantId1, 4);
|
|
138
|
-
expect(store.isProjectTokenExpired(expiringToken)).toBe(true);
|
|
139
|
-
});
|
|
140
|
-
it('should return false for token just outside buffer window (6 minutes remaining)', ()=>{
|
|
141
|
-
// 6 minutes > 5 minute buffer
|
|
142
|
-
const validToken = createProjectToken(tenantId1, 6);
|
|
143
|
-
expect(store.isProjectTokenExpired(validToken)).toBe(false);
|
|
144
|
-
});
|
|
145
|
-
it('should handle token expiring exactly at buffer boundary', ()=>{
|
|
146
|
-
// Exactly 5 minutes = at buffer boundary
|
|
147
|
-
const boundaryToken = createProjectToken(tenantId1, 5);
|
|
148
|
-
// Should be considered expired (>= check in implementation)
|
|
149
|
-
expect(store.isProjectTokenExpired(boundaryToken)).toBe(true);
|
|
150
|
-
});
|
|
151
|
-
});
|
|
152
|
-
describe('hasValidProjectToken', ()=>{
|
|
153
|
-
it('should return true for valid token', ()=>{
|
|
154
|
-
const validToken = createProjectToken(tenantId1, 30);
|
|
155
|
-
store.setProjectToken(tenantId1, validToken);
|
|
156
|
-
expect(store.hasValidProjectToken(tenantId1)).toBe(true);
|
|
157
|
-
});
|
|
158
|
-
it('should return false for expired token', ()=>{
|
|
159
|
-
const expiredToken = createProjectToken(tenantId1, -10);
|
|
160
|
-
store.setProjectToken(tenantId1, expiredToken);
|
|
161
|
-
expect(store.hasValidProjectToken(tenantId1)).toBe(false);
|
|
162
|
-
});
|
|
163
|
-
it('should return false for missing token', ()=>{
|
|
164
|
-
expect(store.hasValidProjectToken('non-existent')).toBe(false);
|
|
165
|
-
});
|
|
166
|
-
it('should return false for token within buffer window', ()=>{
|
|
167
|
-
const expiringToken = createProjectToken(tenantId1, 4) // Within 5-min buffer
|
|
168
|
-
;
|
|
169
|
-
store.setProjectToken(tenantId1, expiringToken);
|
|
170
|
-
expect(store.hasValidProjectToken(tenantId1)).toBe(false);
|
|
171
|
-
});
|
|
172
|
-
});
|
|
173
|
-
describe('clearProjectToken', ()=>{
|
|
174
|
-
it('should remove specific tenant token', ()=>{
|
|
175
|
-
const token1 = createProjectToken(tenantId1, 30);
|
|
176
|
-
const token2 = createProjectToken(tenantId2, 30);
|
|
177
|
-
store.setProjectToken(tenantId1, token1);
|
|
178
|
-
store.setProjectToken(tenantId2, token2);
|
|
179
|
-
store.clearProjectToken(tenantId1);
|
|
180
|
-
expect(store.getProjectToken(tenantId1)).toBeNull();
|
|
181
|
-
expect(store.getProjectToken(tenantId2)).toEqual(token2);
|
|
182
|
-
});
|
|
183
|
-
it('should handle clearing non-existent token gracefully', ()=>{
|
|
184
|
-
expect(()=>store.clearProjectToken('non-existent')).not.toThrow();
|
|
185
|
-
expect(store.getProjectToken('non-existent')).toBeNull();
|
|
186
|
-
});
|
|
187
|
-
it('should not affect OAuth tokens', ()=>{
|
|
188
|
-
const oauthTokens = mockFigmaTokens();
|
|
189
|
-
const projectToken = createProjectToken(tenantId1, 30);
|
|
190
|
-
store.setTokens(oauthTokens);
|
|
191
|
-
store.setProjectToken(tenantId1, projectToken);
|
|
192
|
-
store.clearProjectToken(tenantId1);
|
|
193
|
-
expect(store.getTokens()).toEqual(oauthTokens);
|
|
194
|
-
expect(store.getProjectToken(tenantId1)).toBeNull();
|
|
195
|
-
});
|
|
196
|
-
});
|
|
197
|
-
describe('clearAllProjectTokens', ()=>{
|
|
198
|
-
it('should remove all project tokens', ()=>{
|
|
199
|
-
const token1 = createProjectToken(tenantId1, 30);
|
|
200
|
-
const token2 = createProjectToken(tenantId2, 30);
|
|
201
|
-
store.setProjectToken(tenantId1, token1);
|
|
202
|
-
store.setProjectToken(tenantId2, token2);
|
|
203
|
-
store.clearAllProjectTokens();
|
|
204
|
-
expect(store.getProjectToken(tenantId1)).toBeNull();
|
|
205
|
-
expect(store.getProjectToken(tenantId2)).toBeNull();
|
|
206
|
-
expect(store.getAllProjectTokenTenantIds()).toEqual([]);
|
|
207
|
-
});
|
|
208
|
-
it('should not affect OAuth tokens', ()=>{
|
|
209
|
-
const oauthTokens = mockFigmaTokens();
|
|
210
|
-
const projectToken = createProjectToken(tenantId1, 30);
|
|
211
|
-
store.setTokens(oauthTokens);
|
|
212
|
-
store.setProjectToken(tenantId1, projectToken);
|
|
213
|
-
store.clearAllProjectTokens();
|
|
214
|
-
expect(store.getTokens()).toEqual(oauthTokens);
|
|
215
|
-
expect(store.getProjectToken(tenantId1)).toBeNull();
|
|
216
|
-
});
|
|
217
|
-
it('should handle clearing when no project tokens exist', ()=>{
|
|
218
|
-
expect(()=>store.clearAllProjectTokens()).not.toThrow();
|
|
219
|
-
expect(store.getAllProjectTokenTenantIds()).toEqual([]);
|
|
220
|
-
});
|
|
221
|
-
});
|
|
222
|
-
describe('getAllProjectTokenTenantIds', ()=>{
|
|
223
|
-
it('should return all tenant IDs with stored tokens', ()=>{
|
|
224
|
-
const token1 = createProjectToken(tenantId1, 30);
|
|
225
|
-
const token2 = createProjectToken(tenantId2, 30);
|
|
226
|
-
store.setProjectToken(tenantId1, token1);
|
|
227
|
-
store.setProjectToken(tenantId2, token2);
|
|
228
|
-
const tenantIds = store.getAllProjectTokenTenantIds();
|
|
229
|
-
expect(tenantIds).toHaveLength(2);
|
|
230
|
-
expect(tenantIds).toContain(tenantId1);
|
|
231
|
-
expect(tenantIds).toContain(tenantId2);
|
|
232
|
-
});
|
|
233
|
-
it('should return empty array when no tokens stored', ()=>{
|
|
234
|
-
const tenantIds = store.getAllProjectTokenTenantIds();
|
|
235
|
-
expect(tenantIds).toEqual([]);
|
|
236
|
-
});
|
|
237
|
-
it('should return correct IDs after removing a token', ()=>{
|
|
238
|
-
const token1 = createProjectToken(tenantId1, 30);
|
|
239
|
-
const token2 = createProjectToken(tenantId2, 30);
|
|
240
|
-
store.setProjectToken(tenantId1, token1);
|
|
241
|
-
store.setProjectToken(tenantId2, token2);
|
|
242
|
-
store.clearProjectToken(tenantId1);
|
|
243
|
-
const tenantIds = store.getAllProjectTokenTenantIds();
|
|
244
|
-
expect(tenantIds).toEqual([
|
|
245
|
-
tenantId2
|
|
246
|
-
]);
|
|
247
|
-
});
|
|
248
|
-
});
|
|
249
|
-
describe('getProjectTokenClaims', ()=>{
|
|
250
|
-
it('should return claims for valid token', ()=>{
|
|
251
|
-
const projectToken = createProjectToken(tenantId1, 30);
|
|
252
|
-
store.setProjectToken(tenantId1, projectToken);
|
|
253
|
-
const claims = store.getProjectTokenClaims(tenantId1);
|
|
254
|
-
expect(claims).toEqual(projectToken.claims);
|
|
255
|
-
expect(claims?.aud).toBe(tenantId1);
|
|
256
|
-
expect(claims?.email).toBe('test@example.com');
|
|
257
|
-
});
|
|
258
|
-
it('should return null for non-existent token', ()=>{
|
|
259
|
-
const claims = store.getProjectTokenClaims('non-existent');
|
|
260
|
-
expect(claims).toBeNull();
|
|
261
|
-
});
|
|
262
|
-
it('should return null for token without claims', ()=>{
|
|
263
|
-
const tokenWithoutClaims = {
|
|
264
|
-
expiresAt: Date.now() + 30 * 60 * 1000,
|
|
265
|
-
tenantId: tenantId1,
|
|
266
|
-
token: 'jwt_token'
|
|
267
|
-
};
|
|
268
|
-
store.setProjectToken(tenantId1, tokenWithoutClaims);
|
|
269
|
-
const claims = store.getProjectTokenClaims(tenantId1);
|
|
270
|
-
expect(claims).toBeNull();
|
|
271
|
-
});
|
|
272
|
-
});
|
|
273
|
-
});
|
|
274
|
-
});
|
|
275
|
-
|
|
276
|
-
//# sourceMappingURL=token-store.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/auth/token-store.spec.ts"],"sourcesContent":["import { afterEach, beforeEach, describe, expect, it } from 'vitest'\n\nimport {\n mockExpiredTokens,\n mockFigmaTokens,\n mockFreshTokens,\n mockTokensExpiringSoon,\n} from './__tests__/fixtures.js'\nimport { TokenStore } from './token-store.js'\n\ndescribe('TokenStore', () => {\n let store: TokenStore\n\n beforeEach(() => {\n // Create a new store with a unique config name for each test\n store = new TokenStore({ configName: `payloadcms-figma-test-${Date.now()}` })\n })\n\n afterEach(() => {\n // Clean up after each test\n store.clearTokens()\n })\n\n describe('setTokens and getTokens', () => {\n it('should store and retrieve tokens', () => {\n const tokens = mockFigmaTokens()\n store.setTokens(tokens)\n\n const retrieved = store.getTokens()\n expect(retrieved).toEqual(tokens)\n })\n })\n\n describe('clearTokens', () => {\n it('should remove stored tokens', () => {\n const tokens = mockFigmaTokens()\n store.setTokens(tokens)\n\n store.clearTokens()\n\n const retrieved = store.getTokens()\n expect(retrieved).toBeNull()\n })\n })\n\n describe('hasValidTokens', () => {\n it('should return true when valid tokens exist', () => {\n const tokens = mockFreshTokens()\n store.setTokens(tokens)\n\n expect(store.hasValidTokens()).toBe(true)\n })\n\n it('should return false when tokens are expired', () => {\n const tokens = mockExpiredTokens()\n store.setTokens(tokens)\n\n expect(store.hasValidTokens()).toBe(false)\n })\n\n it('should return false when tokens are expiring soon (within buffer)', () => {\n const tokens = mockTokensExpiringSoon()\n store.setTokens(tokens)\n\n expect(store.hasValidTokens()).toBe(false)\n })\n })\n\n describe('getAccessToken', () => {\n it('should return null when tokens are expired', () => {\n const tokens = mockExpiredTokens()\n store.setTokens(tokens)\n\n const accessToken = store.getAccessToken()\n expect(accessToken).toBeNull()\n })\n })\n\n describe('getRefreshToken', () => {\n it('should return refresh token even if access token is expired', () => {\n const tokens = mockExpiredTokens()\n store.setTokens(tokens)\n\n const refreshToken = store.getRefreshToken()\n expect(refreshToken).toBe(tokens.refreshToken)\n })\n })\n\n describe('updateAccessToken', () => {\n it('should update access token and expiration time', () => {\n const originalTokens = mockFigmaTokens()\n store.setTokens(originalTokens)\n\n const newAccessToken = 'figt_new_access_token'\n const expiresIn = 7200 // 2 hours\n\n store.updateAccessToken(newAccessToken, expiresIn)\n\n const updatedTokens = store.getTokens()\n expect(updatedTokens?.accessToken).toBe(newAccessToken)\n expect(updatedTokens?.refreshToken).toBe(originalTokens.refreshToken)\n expect(updatedTokens?.expiresAt).toBeGreaterThan(Date.now())\n })\n })\n\n describe('Project Token Methods', () => {\n const tenantId1 = 'tenant-123'\n const tenantId2 = 'tenant-456'\n\n const createProjectToken = (tenantId: string, expiresInMinutes: number) => ({\n claims: {\n aud: tenantId, // Audience claim contains the CMS ID\n email: 'test@example.com',\n exp: Math.floor(Date.now() / 1000) + expiresInMinutes * 60,\n iat: Math.floor(Date.now() / 1000),\n seat_type: 'full',\n },\n expiresAt: Date.now() + expiresInMinutes * 60 * 1000,\n tenantId,\n token: `jwt_token_${tenantId}`,\n })\n\n describe('getProjectToken and setProjectToken', () => {\n it('should store and retrieve a project token', () => {\n const projectToken = createProjectToken(tenantId1, 30)\n store.setProjectToken(tenantId1, projectToken)\n\n const retrieved = store.getProjectToken(tenantId1)\n expect(retrieved).toEqual(projectToken)\n })\n\n it('should return null for non-existent tenant', () => {\n const retrieved = store.getProjectToken('non-existent')\n expect(retrieved).toBeNull()\n })\n\n it('should store multiple project tokens independently', () => {\n const token1 = createProjectToken(tenantId1, 30)\n const token2 = createProjectToken(tenantId2, 45)\n\n store.setProjectToken(tenantId1, token1)\n store.setProjectToken(tenantId2, token2)\n\n expect(store.getProjectToken(tenantId1)).toEqual(token1)\n expect(store.getProjectToken(tenantId2)).toEqual(token2)\n })\n\n it('should overwrite existing token for same tenant', () => {\n const oldToken = createProjectToken(tenantId1, 30)\n const newToken = createProjectToken(tenantId1, 60)\n\n store.setProjectToken(tenantId1, oldToken)\n store.setProjectToken(tenantId1, newToken)\n\n const retrieved = store.getProjectToken(tenantId1)\n expect(retrieved).toEqual(newToken)\n expect(retrieved?.token).toBe(newToken.token)\n })\n })\n\n describe('isProjectTokenExpired', () => {\n it('should return false for valid token (30 minutes remaining)', () => {\n const validToken = createProjectToken(tenantId1, 30)\n expect(store.isProjectTokenExpired(validToken)).toBe(false)\n })\n\n it('should return true for expired token (past expiresAt)', () => {\n const expiredToken = createProjectToken(tenantId1, -10) // 10 minutes ago\n expect(store.isProjectTokenExpired(expiredToken)).toBe(true)\n })\n\n it('should return true for token within buffer window (4 minutes remaining)', () => {\n // TOKEN_EXPIRY_BUFFER_SECONDS is 5 minutes (300 seconds)\n // Token expires in 4 minutes = within buffer\n const expiringToken = createProjectToken(tenantId1, 4)\n expect(store.isProjectTokenExpired(expiringToken)).toBe(true)\n })\n\n it('should return false for token just outside buffer window (6 minutes remaining)', () => {\n // 6 minutes > 5 minute buffer\n const validToken = createProjectToken(tenantId1, 6)\n expect(store.isProjectTokenExpired(validToken)).toBe(false)\n })\n\n it('should handle token expiring exactly at buffer boundary', () => {\n // Exactly 5 minutes = at buffer boundary\n const boundaryToken = createProjectToken(tenantId1, 5)\n // Should be considered expired (>= check in implementation)\n expect(store.isProjectTokenExpired(boundaryToken)).toBe(true)\n })\n })\n\n describe('hasValidProjectToken', () => {\n it('should return true for valid token', () => {\n const validToken = createProjectToken(tenantId1, 30)\n store.setProjectToken(tenantId1, validToken)\n\n expect(store.hasValidProjectToken(tenantId1)).toBe(true)\n })\n\n it('should return false for expired token', () => {\n const expiredToken = createProjectToken(tenantId1, -10)\n store.setProjectToken(tenantId1, expiredToken)\n\n expect(store.hasValidProjectToken(tenantId1)).toBe(false)\n })\n\n it('should return false for missing token', () => {\n expect(store.hasValidProjectToken('non-existent')).toBe(false)\n })\n\n it('should return false for token within buffer window', () => {\n const expiringToken = createProjectToken(tenantId1, 4) // Within 5-min buffer\n store.setProjectToken(tenantId1, expiringToken)\n\n expect(store.hasValidProjectToken(tenantId1)).toBe(false)\n })\n })\n\n describe('clearProjectToken', () => {\n it('should remove specific tenant token', () => {\n const token1 = createProjectToken(tenantId1, 30)\n const token2 = createProjectToken(tenantId2, 30)\n\n store.setProjectToken(tenantId1, token1)\n store.setProjectToken(tenantId2, token2)\n\n store.clearProjectToken(tenantId1)\n\n expect(store.getProjectToken(tenantId1)).toBeNull()\n expect(store.getProjectToken(tenantId2)).toEqual(token2)\n })\n\n it('should handle clearing non-existent token gracefully', () => {\n expect(() => store.clearProjectToken('non-existent')).not.toThrow()\n expect(store.getProjectToken('non-existent')).toBeNull()\n })\n\n it('should not affect OAuth tokens', () => {\n const oauthTokens = mockFigmaTokens()\n const projectToken = createProjectToken(tenantId1, 30)\n\n store.setTokens(oauthTokens)\n store.setProjectToken(tenantId1, projectToken)\n\n store.clearProjectToken(tenantId1)\n\n expect(store.getTokens()).toEqual(oauthTokens)\n expect(store.getProjectToken(tenantId1)).toBeNull()\n })\n })\n\n describe('clearAllProjectTokens', () => {\n it('should remove all project tokens', () => {\n const token1 = createProjectToken(tenantId1, 30)\n const token2 = createProjectToken(tenantId2, 30)\n\n store.setProjectToken(tenantId1, token1)\n store.setProjectToken(tenantId2, token2)\n\n store.clearAllProjectTokens()\n\n expect(store.getProjectToken(tenantId1)).toBeNull()\n expect(store.getProjectToken(tenantId2)).toBeNull()\n expect(store.getAllProjectTokenTenantIds()).toEqual([])\n })\n\n it('should not affect OAuth tokens', () => {\n const oauthTokens = mockFigmaTokens()\n const projectToken = createProjectToken(tenantId1, 30)\n\n store.setTokens(oauthTokens)\n store.setProjectToken(tenantId1, projectToken)\n\n store.clearAllProjectTokens()\n\n expect(store.getTokens()).toEqual(oauthTokens)\n expect(store.getProjectToken(tenantId1)).toBeNull()\n })\n\n it('should handle clearing when no project tokens exist', () => {\n expect(() => store.clearAllProjectTokens()).not.toThrow()\n expect(store.getAllProjectTokenTenantIds()).toEqual([])\n })\n })\n\n describe('getAllProjectTokenTenantIds', () => {\n it('should return all tenant IDs with stored tokens', () => {\n const token1 = createProjectToken(tenantId1, 30)\n const token2 = createProjectToken(tenantId2, 30)\n\n store.setProjectToken(tenantId1, token1)\n store.setProjectToken(tenantId2, token2)\n\n const tenantIds = store.getAllProjectTokenTenantIds()\n expect(tenantIds).toHaveLength(2)\n expect(tenantIds).toContain(tenantId1)\n expect(tenantIds).toContain(tenantId2)\n })\n\n it('should return empty array when no tokens stored', () => {\n const tenantIds = store.getAllProjectTokenTenantIds()\n expect(tenantIds).toEqual([])\n })\n\n it('should return correct IDs after removing a token', () => {\n const token1 = createProjectToken(tenantId1, 30)\n const token2 = createProjectToken(tenantId2, 30)\n\n store.setProjectToken(tenantId1, token1)\n store.setProjectToken(tenantId2, token2)\n store.clearProjectToken(tenantId1)\n\n const tenantIds = store.getAllProjectTokenTenantIds()\n expect(tenantIds).toEqual([tenantId2])\n })\n })\n\n describe('getProjectTokenClaims', () => {\n it('should return claims for valid token', () => {\n const projectToken = createProjectToken(tenantId1, 30)\n store.setProjectToken(tenantId1, projectToken)\n\n const claims = store.getProjectTokenClaims(tenantId1)\n expect(claims).toEqual(projectToken.claims)\n expect(claims?.aud).toBe(tenantId1)\n expect(claims?.email).toBe('test@example.com')\n })\n\n it('should return null for non-existent token', () => {\n const claims = store.getProjectTokenClaims('non-existent')\n expect(claims).toBeNull()\n })\n\n it('should return null for token without claims', () => {\n const tokenWithoutClaims = {\n expiresAt: Date.now() + 30 * 60 * 1000,\n tenantId: tenantId1,\n token: 'jwt_token',\n }\n store.setProjectToken(tenantId1, tokenWithoutClaims)\n\n const claims = store.getProjectTokenClaims(tenantId1)\n expect(claims).toBeNull()\n })\n })\n })\n})\n"],"names":["afterEach","beforeEach","describe","expect","it","mockExpiredTokens","mockFigmaTokens","mockFreshTokens","mockTokensExpiringSoon","TokenStore","store","configName","Date","now","clearTokens","tokens","setTokens","retrieved","getTokens","toEqual","toBeNull","hasValidTokens","toBe","accessToken","getAccessToken","refreshToken","getRefreshToken","originalTokens","newAccessToken","expiresIn","updateAccessToken","updatedTokens","expiresAt","toBeGreaterThan","tenantId1","tenantId2","createProjectToken","tenantId","expiresInMinutes","claims","aud","email","exp","Math","floor","iat","seat_type","token","projectToken","setProjectToken","getProjectToken","token1","token2","oldToken","newToken","validToken","isProjectTokenExpired","expiredToken","expiringToken","boundaryToken","hasValidProjectToken","clearProjectToken","not","toThrow","oauthTokens","clearAllProjectTokens","getAllProjectTokenTenantIds","tenantIds","toHaveLength","toContain","getProjectTokenClaims","tokenWithoutClaims"],"mappings":"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"}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { vi } from 'vitest';
|
|
2
|
-
/**
|
|
3
|
-
* Mock process.exit to capture exit calls without actually exiting
|
|
4
|
-
* Returns a function to restore the original process.exit
|
|
5
|
-
*/
|
|
6
|
-
export declare function mockProcessExit(): {
|
|
7
|
-
exitMock: ReturnType<typeof vi.spyOn<[code?: null | number | string | undefined], never>>;
|
|
8
|
-
restore: () => void;
|
|
9
|
-
};
|
|
10
|
-
/**
|
|
11
|
-
* Create mock for OAuth flow module with sensible defaults
|
|
12
|
-
*/
|
|
13
|
-
export declare function createOAuthFlowMocks(): {
|
|
14
|
-
executeOAuthFlow: import("vitest").Mock<(...args: any[]) => any>;
|
|
15
|
-
getValidAccessToken: import("vitest").Mock<(...args: any[]) => any>;
|
|
16
|
-
OAuthFlowError: {
|
|
17
|
-
new (message: string, cause?: Error): {
|
|
18
|
-
cause?: Error;
|
|
19
|
-
name: string;
|
|
20
|
-
message: string;
|
|
21
|
-
stack?: string;
|
|
22
|
-
};
|
|
23
|
-
captureStackTrace(targetObject: object, constructorOpt?: Function): void;
|
|
24
|
-
prepareStackTrace?: ((err: Error, stackTraces: NodeJS.CallSite[]) => any) | undefined;
|
|
25
|
-
stackTraceLimit: number;
|
|
26
|
-
};
|
|
27
|
-
};
|
|
28
|
-
//# sourceMappingURL=test-utils.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"test-utils.d.ts","sourceRoot":"","sources":["../../../src/commands/__tests__/test-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAE3B;;;GAGG;AACH,wBAAgB,eAAe,IAAI;IACjC,QAAQ,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,EAAE,KAAK,CAAC,CAAC,CAAA;IACzF,OAAO,EAAE,MAAM,IAAI,CAAA;CACpB,CAYA;AAED;;GAEG;AACH,wBAAgB,oBAAoB;;;;sBAMT,MAAM,UAAU,KAAK;oBADlC,KAAK;;;;;;uDASitJ,OAAQ,QAAQ;;;EADnvJ"}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { vi } from 'vitest';
|
|
2
|
-
/**
|
|
3
|
-
* Mock process.exit to capture exit calls without actually exiting
|
|
4
|
-
* Returns a function to restore the original process.exit
|
|
5
|
-
*/ export function mockProcessExit() {
|
|
6
|
-
const exitMock = vi.spyOn(process, 'exit').mockImplementation((code)=>{
|
|
7
|
-
// Throw to stop execution in tests
|
|
8
|
-
throw new Error(`process.exit(${code})`);
|
|
9
|
-
});
|
|
10
|
-
return {
|
|
11
|
-
exitMock,
|
|
12
|
-
restore: ()=>{
|
|
13
|
-
exitMock.mockRestore();
|
|
14
|
-
}
|
|
15
|
-
};
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* Create mock for OAuth flow module with sensible defaults
|
|
19
|
-
*/ export function createOAuthFlowMocks() {
|
|
20
|
-
return {
|
|
21
|
-
executeOAuthFlow: vi.fn(),
|
|
22
|
-
getValidAccessToken: vi.fn(),
|
|
23
|
-
OAuthFlowError: class OAuthFlowError extends Error {
|
|
24
|
-
cause;
|
|
25
|
-
constructor(message, cause){
|
|
26
|
-
super(message);
|
|
27
|
-
this.cause = cause;
|
|
28
|
-
this.name = 'OAuthFlowError';
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
//# sourceMappingURL=test-utils.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/commands/__tests__/test-utils.ts"],"sourcesContent":["import { vi } from 'vitest'\n\n/**\n * Mock process.exit to capture exit calls without actually exiting\n * Returns a function to restore the original process.exit\n */\nexport function mockProcessExit(): {\n exitMock: ReturnType<typeof vi.spyOn<[code?: null | number | string | undefined], never>>\n restore: () => void\n} {\n const exitMock = vi.spyOn(process, 'exit').mockImplementation(((code?: number) => {\n // Throw to stop execution in tests\n throw new Error(`process.exit(${code})`)\n }) as never)\n\n return {\n exitMock,\n restore: () => {\n exitMock.mockRestore()\n },\n }\n}\n\n/**\n * Create mock for OAuth flow module with sensible defaults\n */\nexport function createOAuthFlowMocks() {\n return {\n executeOAuthFlow: vi.fn(),\n getValidAccessToken: vi.fn(),\n OAuthFlowError: class OAuthFlowError extends Error {\n cause?: Error\n constructor(message: string, cause?: Error) {\n super(message)\n this.cause = cause\n this.name = 'OAuthFlowError'\n }\n },\n }\n}\n"],"names":["vi","mockProcessExit","exitMock","spyOn","process","mockImplementation","code","Error","restore","mockRestore","createOAuthFlowMocks","executeOAuthFlow","fn","getValidAccessToken","OAuthFlowError","cause","message","name"],"mappings":"AAAA,SAASA,EAAE,QAAQ,SAAQ;AAE3B;;;CAGC,GACD,OAAO,SAASC;IAId,MAAMC,WAAWF,GAAGG,KAAK,CAACC,SAAS,QAAQC,kBAAkB,CAAE,CAACC;QAC9D,mCAAmC;QACnC,MAAM,IAAIC,MAAM,CAAC,aAAa,EAAED,KAAK,CAAC,CAAC;IACzC;IAEA,OAAO;QACLJ;QACAM,SAAS;YACPN,SAASO,WAAW;QACtB;IACF;AACF;AAEA;;CAEC,GACD,OAAO,SAASC;IACd,OAAO;QACLC,kBAAkBX,GAAGY,EAAE;QACvBC,qBAAqBb,GAAGY,EAAE;QAC1BE,gBAAgB,MAAMA,uBAAuBP;YAC3CQ,MAAa;YACb,YAAYC,OAAe,EAAED,KAAa,CAAE;gBAC1C,KAAK,CAACC;gBACN,IAAI,CAACD,KAAK,GAAGA;gBACb,IAAI,CAACE,IAAI,GAAG;YACd;QACF;IACF;AACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"deploy.spec.d.ts","sourceRoot":"","sources":["../../src/commands/deploy.spec.ts"],"names":[],"mappings":""}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { describe, expect, it } from 'vitest';
|
|
2
|
-
import { deployCommand } from './deploy.js';
|
|
3
|
-
describe('deploy command', ()=>{
|
|
4
|
-
describe('pre-flight checks', ()=>{
|
|
5
|
-
it('should export deployCommand function', ()=>{
|
|
6
|
-
expect(deployCommand).toBeDefined();
|
|
7
|
-
expect(typeof deployCommand).toBe('function');
|
|
8
|
-
});
|
|
9
|
-
it('should accept options parameter', async ()=>{
|
|
10
|
-
// This will fail during pre-flight checks but tests signature
|
|
11
|
-
await expect(deployCommand({
|
|
12
|
-
debug: true
|
|
13
|
-
})).rejects.toThrow();
|
|
14
|
-
});
|
|
15
|
-
});
|
|
16
|
-
});
|
|
17
|
-
|
|
18
|
-
//# sourceMappingURL=deploy.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/commands/deploy.spec.ts"],"sourcesContent":["import { describe, expect, it } from 'vitest'\n\nimport { deployCommand } from './deploy.js'\n\ndescribe('deploy command', () => {\n describe('pre-flight checks', () => {\n it('should export deployCommand function', () => {\n expect(deployCommand).toBeDefined()\n expect(typeof deployCommand).toBe('function')\n })\n\n it('should accept options parameter', async () => {\n // This will fail during pre-flight checks but tests signature\n await expect(deployCommand({ debug: true })).rejects.toThrow()\n })\n })\n})\n"],"names":["describe","expect","it","deployCommand","toBeDefined","toBe","debug","rejects","toThrow"],"mappings":"AAAA,SAASA,QAAQ,EAAEC,MAAM,EAAEC,EAAE,QAAQ,SAAQ;AAE7C,SAASC,aAAa,QAAQ,cAAa;AAE3CH,SAAS,kBAAkB;IACzBA,SAAS,qBAAqB;QAC5BE,GAAG,wCAAwC;YACzCD,OAAOE,eAAeC,WAAW;YACjCH,OAAO,OAAOE,eAAeE,IAAI,CAAC;QACpC;QAEAH,GAAG,mCAAmC;YACpC,8DAA8D;YAC9D,MAAMD,OAAOE,cAAc;gBAAEG,OAAO;YAAK,IAAIC,OAAO,CAACC,OAAO;QAC9D;IACF;AACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"init.spec.d.ts","sourceRoot":"","sources":["../../src/commands/init.spec.ts"],"names":[],"mappings":""}
|