@fias/plugin-dev-harness 1.3.0 → 1.4.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.
@@ -1,29 +1,44 @@
1
1
  /**
2
2
  * Credentials Manager
3
3
  *
4
- * Manages the ~/.fias/credentials file for storing API keys.
5
- * Supports per-environment keys (staging, production).
4
+ * Manages the ~/.fias/credentials file for storing session tokens.
5
+ * Supports per-environment sessions (staging, production).
6
6
  */
7
7
  export type Environment = 'staging' | 'production';
8
+ export interface SessionTokens {
9
+ idToken: string;
10
+ refreshToken: string;
11
+ expiresAt: number;
12
+ }
8
13
  export interface Credentials {
9
- /** Per-environment API keys */
10
14
  environments?: {
11
- staging?: string;
12
- production?: string;
15
+ staging?: SessionTokens | string;
16
+ production?: SessionTokens | string;
13
17
  };
14
- /** @deprecated Legacy single-key field — migrated to environments.staging on save */
18
+ /** @deprecated Legacy single-key field */
15
19
  apiKey?: string;
16
20
  }
17
21
  export declare function loadCredentials(): Credentials;
18
22
  /**
19
- * Returns the API key for a specific environment.
20
- * Handles backward compat: old `{ apiKey }` format is treated as staging.
23
+ * Returns the auth token (Bearer value) for a specific environment.
24
+ * Handles session tokens (returns idToken) and legacy API keys (returns key string).
21
25
  */
22
- export declare function loadApiKeyForEnvironment(env: Environment): string;
26
+ export declare function loadAuthTokenForEnvironment(env: Environment): string;
23
27
  /**
24
- * Saves an API key for a specific environment.
25
- * Preserves keys for other environments. Migrates legacy format on first save.
28
+ * Returns the full session tokens for an environment, or null if not a session.
29
+ */
30
+ export declare function loadSessionForEnvironment(env: Environment): SessionTokens | null;
31
+ /**
32
+ * Saves session tokens for a specific environment.
33
+ */
34
+ export declare function saveSessionForEnvironment(env: Environment, session: SessionTokens): void;
35
+ /**
36
+ * Saves an API key for a specific environment (used by CLI login).
26
37
  */
27
38
  export declare function saveApiKeyForEnvironment(env: Environment, apiKey: string): void;
39
+ /**
40
+ * Backward-compatible: returns an API key string for CLI commands.
41
+ */
42
+ export declare function loadApiKeyForEnvironment(env: Environment): string;
28
43
  export declare function saveCredentials(credentials: Credentials): void;
29
44
  //# sourceMappingURL=credentials.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../../src/config/credentials.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,YAAY,CAAC;AAEnD,MAAM,WAAW,WAAW;IAC1B,+BAA+B;IAC/B,YAAY,CAAC,EAAE;QACb,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,qFAAqF;IACrF,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAKD,wBAAgB,eAAe,IAAI,WAAW,CAW7C;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,WAAW,GAAG,MAAM,CAcjE;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAsB/E;AAED,wBAAgB,eAAe,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI,CAQ9D"}
1
+ {"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../../src/config/credentials.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,YAAY,CAAC;AAEnD,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,YAAY,CAAC,EAAE;QACb,OAAO,CAAC,EAAE,aAAa,GAAG,MAAM,CAAC;QACjC,UAAU,CAAC,EAAE,aAAa,GAAG,MAAM,CAAC;KACrC,CAAC;IACF,0CAA0C;IAC1C,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAKD,wBAAgB,eAAe,IAAI,WAAW,CAW7C;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,WAAW,GAAG,MAAM,CAapE;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,WAAW,GAAG,aAAa,GAAG,IAAI,CAOhF;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE,aAAa,GAAG,IAAI,CAYxF;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAY/E;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,WAAW,GAAG,MAAM,CAMjE;AAED,wBAAgB,eAAe,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI,CAQ9D"}
@@ -2,8 +2,8 @@
2
2
  /**
3
3
  * Credentials Manager
4
4
  *
5
- * Manages the ~/.fias/credentials file for storing API keys.
6
- * Supports per-environment keys (staging, production).
5
+ * Manages the ~/.fias/credentials file for storing session tokens.
6
+ * Supports per-environment sessions (staging, production).
7
7
  */
8
8
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
9
9
  if (k2 === undefined) k2 = k;
@@ -40,8 +40,11 @@ var __importStar = (this && this.__importStar) || (function () {
40
40
  })();
41
41
  Object.defineProperty(exports, "__esModule", { value: true });
42
42
  exports.loadCredentials = loadCredentials;
43
- exports.loadApiKeyForEnvironment = loadApiKeyForEnvironment;
43
+ exports.loadAuthTokenForEnvironment = loadAuthTokenForEnvironment;
44
+ exports.loadSessionForEnvironment = loadSessionForEnvironment;
45
+ exports.saveSessionForEnvironment = saveSessionForEnvironment;
44
46
  exports.saveApiKeyForEnvironment = saveApiKeyForEnvironment;
47
+ exports.loadApiKeyForEnvironment = loadApiKeyForEnvironment;
45
48
  exports.saveCredentials = saveCredentials;
46
49
  const fs = __importStar(require("fs"));
47
50
  const path = __importStar(require("path"));
@@ -61,45 +64,78 @@ function loadCredentials() {
61
64
  }
62
65
  }
63
66
  /**
64
- * Returns the API key for a specific environment.
65
- * Handles backward compat: old `{ apiKey }` format is treated as staging.
67
+ * Returns the auth token (Bearer value) for a specific environment.
68
+ * Handles session tokens (returns idToken) and legacy API keys (returns key string).
66
69
  */
67
- function loadApiKeyForEnvironment(env) {
70
+ function loadAuthTokenForEnvironment(env) {
68
71
  const creds = loadCredentials();
69
- // New format
70
- if (creds.environments?.[env]) {
71
- return creds.environments[env];
72
+ const envCred = creds.environments?.[env];
73
+ if (envCred) {
74
+ if (typeof envCred === 'string')
75
+ return envCred; // Legacy API key
76
+ return envCred.idToken || '';
72
77
  }
73
- // Legacy format — treat as staging
74
- if (env === 'staging' && creds.apiKey) {
78
+ // Legacy format — treat apiKey as staging
79
+ if (env === 'staging' && creds.apiKey)
75
80
  return creds.apiKey;
76
- }
77
81
  return '';
78
82
  }
79
83
  /**
80
- * Saves an API key for a specific environment.
81
- * Preserves keys for other environments. Migrates legacy format on first save.
84
+ * Returns the full session tokens for an environment, or null if not a session.
85
+ */
86
+ function loadSessionForEnvironment(env) {
87
+ const creds = loadCredentials();
88
+ const envCred = creds.environments?.[env];
89
+ if (envCred && typeof envCred === 'object' && envCred.idToken) {
90
+ return envCred;
91
+ }
92
+ return null;
93
+ }
94
+ /**
95
+ * Saves session tokens for a specific environment.
96
+ */
97
+ function saveSessionForEnvironment(env, session) {
98
+ const creds = loadCredentials();
99
+ const environments = {};
100
+ // Carry forward existing entries
101
+ if (creds.environments) {
102
+ if (creds.environments.staging)
103
+ environments.staging = creds.environments.staging;
104
+ if (creds.environments.production)
105
+ environments.production = creds.environments.production;
106
+ }
107
+ environments[env] = session;
108
+ saveCredentials({ environments });
109
+ }
110
+ /**
111
+ * Saves an API key for a specific environment (used by CLI login).
82
112
  */
83
113
  function saveApiKeyForEnvironment(env, apiKey) {
84
114
  const creds = loadCredentials();
85
- // Build new environments map, migrating legacy apiKey if present
86
115
  const environments = {};
87
- // Carry forward legacy apiKey as staging if it exists
88
- if (creds.apiKey) {
116
+ if (creds.apiKey)
89
117
  environments.staging = creds.apiKey;
90
- }
91
- // Carry forward existing per-env keys
92
118
  if (creds.environments) {
93
119
  if (creds.environments.staging)
94
120
  environments.staging = creds.environments.staging;
95
121
  if (creds.environments.production)
96
122
  environments.production = creds.environments.production;
97
123
  }
98
- // Set the new key
99
124
  environments[env] = apiKey;
100
- // Write in new format only (drop legacy apiKey field)
101
125
  saveCredentials({ environments });
102
126
  }
127
+ /**
128
+ * Backward-compatible: returns an API key string for CLI commands.
129
+ */
130
+ function loadApiKeyForEnvironment(env) {
131
+ const creds = loadCredentials();
132
+ const envCred = creds.environments?.[env];
133
+ if (typeof envCred === 'string')
134
+ return envCred;
135
+ if (env === 'staging' && creds.apiKey)
136
+ return creds.apiKey;
137
+ return '';
138
+ }
103
139
  function saveCredentials(credentials) {
104
140
  if (!fs.existsSync(CREDENTIALS_DIR)) {
105
141
  fs.mkdirSync(CREDENTIALS_DIR, { recursive: true, mode: 0o700 });
@@ -1 +1 @@
1
- {"version":3,"file":"credentials.js","sourceRoot":"","sources":["../../src/config/credentials.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqBH,0CAWC;AAMD,4DAcC;AAMD,4DAsBC;AAED,0CAQC;AAxFD,uCAAyB;AACzB,2CAA6B;AAC7B,uCAAyB;AAczB,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;AACzD,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC;AAEnE,SAAgB,eAAe;IAC7B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACrC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;QAC3D,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAgB,wBAAwB,CAAC,GAAgB;IACvD,MAAM,KAAK,GAAG,eAAe,EAAE,CAAC;IAEhC,aAAa;IACb,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC,YAAY,CAAC,GAAG,CAAE,CAAC;IAClC,CAAC;IAED,mCAAmC;IACnC,IAAI,GAAG,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACtC,OAAO,KAAK,CAAC,MAAM,CAAC;IACtB,CAAC;IAED,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;;;GAGG;AACH,SAAgB,wBAAwB,CAAC,GAAgB,EAAE,MAAc;IACvE,MAAM,KAAK,GAAG,eAAe,EAAE,CAAC;IAEhC,iEAAiE;IACjE,MAAM,YAAY,GAA2B,EAAE,CAAC;IAEhD,sDAAsD;IACtD,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACjB,YAAY,CAAC,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC;IACtC,CAAC;IAED,sCAAsC;IACtC,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;QACvB,IAAI,KAAK,CAAC,YAAY,CAAC,OAAO;YAAE,YAAY,CAAC,OAAO,GAAG,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC;QAClF,IAAI,KAAK,CAAC,YAAY,CAAC,UAAU;YAAE,YAAY,CAAC,UAAU,GAAG,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC;IAC7F,CAAC;IAED,kBAAkB;IAClB,YAAY,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;IAE3B,sDAAsD;IACtD,eAAe,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC;AACpC,CAAC;AAED,SAAgB,eAAe,CAAC,WAAwB;IACtD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QACpC,EAAE,CAAC,SAAS,CAAC,eAAe,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAClE,CAAC;IAED,EAAE,CAAC,aAAa,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE;QAC9E,IAAI,EAAE,KAAK;KACZ,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"credentials.js","sourceRoot":"","sources":["../../src/config/credentials.ts"],"names":[],"mappings":"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"}
@@ -42,115 +42,139 @@ describe('config/credentials', () => {
42
42
  jest.resetAllMocks();
43
43
  });
44
44
  describe('loadCredentials()', () => {
45
- it('returns empty object when credentials file does not exist', () => {
45
+ it('returns empty object when file does not exist', () => {
46
46
  mockedFs.existsSync.mockReturnValue(false);
47
- const creds = (0, credentials_1.loadCredentials)();
48
- expect(creds).toEqual({});
47
+ expect((0, credentials_1.loadCredentials)()).toEqual({});
49
48
  });
50
- it('loads new format with environments', () => {
49
+ it('returns empty object on invalid JSON', () => {
51
50
  mockedFs.existsSync.mockReturnValue(true);
52
- mockedFs.readFileSync.mockReturnValue(JSON.stringify({ environments: { staging: 'fias_sk_stg', production: 'fias_sk_prod' } }));
53
- const creds = (0, credentials_1.loadCredentials)();
54
- expect(creds.environments?.staging).toBe('fias_sk_stg');
55
- expect(creds.environments?.production).toBe('fias_sk_prod');
51
+ mockedFs.readFileSync.mockReturnValue('not json');
52
+ expect((0, credentials_1.loadCredentials)()).toEqual({});
56
53
  });
57
- it('loads legacy format with apiKey', () => {
54
+ it('loads session tokens from new format', () => {
58
55
  mockedFs.existsSync.mockReturnValue(true);
59
- mockedFs.readFileSync.mockReturnValue(JSON.stringify({ apiKey: 'fias_sk_legacy' }));
56
+ mockedFs.readFileSync.mockReturnValue(JSON.stringify({
57
+ environments: {
58
+ staging: { idToken: 'tok', refreshToken: 'ref', expiresAt: 123 },
59
+ },
60
+ }));
60
61
  const creds = (0, credentials_1.loadCredentials)();
61
- expect(creds.apiKey).toBe('fias_sk_legacy');
62
+ expect(creds.environments?.staging).toEqual({
63
+ idToken: 'tok',
64
+ refreshToken: 'ref',
65
+ expiresAt: 123,
66
+ });
62
67
  });
63
- it('returns empty object when file has invalid JSON', () => {
68
+ });
69
+ describe('loadAuthTokenForEnvironment()', () => {
70
+ it('returns idToken from session', () => {
64
71
  mockedFs.existsSync.mockReturnValue(true);
65
- mockedFs.readFileSync.mockReturnValue('not json');
66
- const creds = (0, credentials_1.loadCredentials)();
67
- expect(creds).toEqual({});
72
+ mockedFs.readFileSync.mockReturnValue(JSON.stringify({
73
+ environments: { staging: { idToken: 'my-jwt', refreshToken: 'r', expiresAt: 999 } },
74
+ }));
75
+ expect((0, credentials_1.loadAuthTokenForEnvironment)('staging')).toBe('my-jwt');
68
76
  });
69
- it('returns empty object when readFileSync throws', () => {
77
+ it('returns API key string from legacy per-env format', () => {
70
78
  mockedFs.existsSync.mockReturnValue(true);
71
- mockedFs.readFileSync.mockImplementation(() => {
72
- throw new Error('EACCES');
73
- });
74
- const creds = (0, credentials_1.loadCredentials)();
75
- expect(creds).toEqual({});
79
+ mockedFs.readFileSync.mockReturnValue(JSON.stringify({ environments: { staging: 'fias_sk_old' } }));
80
+ expect((0, credentials_1.loadAuthTokenForEnvironment)('staging')).toBe('fias_sk_old');
76
81
  });
77
- });
78
- describe('loadApiKeyForEnvironment()', () => {
79
- it('returns staging key from new format', () => {
82
+ it('returns legacy apiKey as staging', () => {
80
83
  mockedFs.existsSync.mockReturnValue(true);
81
- mockedFs.readFileSync.mockReturnValue(JSON.stringify({ environments: { staging: 'fias_sk_stg' } }));
82
- expect((0, credentials_1.loadApiKeyForEnvironment)('staging')).toBe('fias_sk_stg');
84
+ mockedFs.readFileSync.mockReturnValue(JSON.stringify({ apiKey: 'fias_sk_legacy' }));
85
+ expect((0, credentials_1.loadAuthTokenForEnvironment)('staging')).toBe('fias_sk_legacy');
86
+ expect((0, credentials_1.loadAuthTokenForEnvironment)('production')).toBe('');
83
87
  });
84
- it('returns production key from new format', () => {
85
- mockedFs.existsSync.mockReturnValue(true);
86
- mockedFs.readFileSync.mockReturnValue(JSON.stringify({ environments: { production: 'fias_sk_prod' } }));
87
- expect((0, credentials_1.loadApiKeyForEnvironment)('production')).toBe('fias_sk_prod');
88
+ it('returns empty string when no file', () => {
89
+ mockedFs.existsSync.mockReturnValue(false);
90
+ expect((0, credentials_1.loadAuthTokenForEnvironment)('staging')).toBe('');
88
91
  });
89
- it('returns staging key from legacy apiKey field', () => {
92
+ });
93
+ describe('loadSessionForEnvironment()', () => {
94
+ it('returns session tokens object', () => {
90
95
  mockedFs.existsSync.mockReturnValue(true);
91
- mockedFs.readFileSync.mockReturnValue(JSON.stringify({ apiKey: 'fias_sk_old' }));
92
- expect((0, credentials_1.loadApiKeyForEnvironment)('staging')).toBe('fias_sk_old');
96
+ mockedFs.readFileSync.mockReturnValue(JSON.stringify({
97
+ environments: { staging: { idToken: 't', refreshToken: 'r', expiresAt: 1 } },
98
+ }));
99
+ const session = (0, credentials_1.loadSessionForEnvironment)('staging');
100
+ expect(session).toEqual({ idToken: 't', refreshToken: 'r', expiresAt: 1 });
93
101
  });
94
- it('returns empty string for production with legacy format', () => {
102
+ it('returns null for API key string', () => {
95
103
  mockedFs.existsSync.mockReturnValue(true);
96
- mockedFs.readFileSync.mockReturnValue(JSON.stringify({ apiKey: 'fias_sk_old' }));
97
- expect((0, credentials_1.loadApiKeyForEnvironment)('production')).toBe('');
104
+ mockedFs.readFileSync.mockReturnValue(JSON.stringify({ environments: { staging: 'fias_sk_key' } }));
105
+ expect((0, credentials_1.loadSessionForEnvironment)('staging')).toBeNull();
98
106
  });
99
- it('returns empty string when no credentials file exists', () => {
107
+ it('returns null when no credentials', () => {
100
108
  mockedFs.existsSync.mockReturnValue(false);
101
- expect((0, credentials_1.loadApiKeyForEnvironment)('staging')).toBe('');
109
+ expect((0, credentials_1.loadSessionForEnvironment)('staging')).toBeNull();
102
110
  });
103
111
  });
104
- describe('saveApiKeyForEnvironment()', () => {
105
- it('saves staging key in new format', () => {
106
- // First call: existsSync for loadCredentials (file doesn't exist)
107
- // Second call: existsSync for saveCredentials (dir exists)
112
+ describe('saveSessionForEnvironment()', () => {
113
+ it('saves session tokens', () => {
108
114
  mockedFs.existsSync.mockReturnValueOnce(false).mockReturnValue(true);
109
- (0, credentials_1.saveApiKeyForEnvironment)('staging', 'fias_sk_new_stg');
110
- const writtenContent = mockedFs.writeFileSync.mock.calls[0][1];
111
- const parsed = JSON.parse(writtenContent.trim());
112
- expect(parsed.environments.staging).toBe('fias_sk_new_stg');
113
- expect(parsed.apiKey).toBeUndefined();
115
+ (0, credentials_1.saveSessionForEnvironment)('staging', {
116
+ idToken: 'jwt',
117
+ refreshToken: 'ref',
118
+ expiresAt: 999,
119
+ });
120
+ const written = JSON.parse(mockedFs.writeFileSync.mock.calls[0][1].trim());
121
+ expect(written.environments.staging).toEqual({
122
+ idToken: 'jwt',
123
+ refreshToken: 'ref',
124
+ expiresAt: 999,
125
+ });
114
126
  });
115
- it('preserves existing keys when saving another environment', () => {
127
+ it('preserves other environment entries', () => {
116
128
  mockedFs.existsSync.mockReturnValue(true);
117
- mockedFs.readFileSync.mockReturnValue(JSON.stringify({ environments: { staging: 'fias_sk_stg' } }));
118
- (0, credentials_1.saveApiKeyForEnvironment)('production', 'fias_sk_prod');
119
- const writtenContent = mockedFs.writeFileSync.mock.calls[0][1];
120
- const parsed = JSON.parse(writtenContent.trim());
121
- expect(parsed.environments.staging).toBe('fias_sk_stg');
122
- expect(parsed.environments.production).toBe('fias_sk_prod');
123
- });
124
- it('migrates legacy apiKey to staging on save', () => {
129
+ mockedFs.readFileSync.mockReturnValue(JSON.stringify({ environments: { staging: 'fias_sk_old' } }));
130
+ (0, credentials_1.saveSessionForEnvironment)('production', {
131
+ idToken: 'p',
132
+ refreshToken: 'r',
133
+ expiresAt: 1,
134
+ });
135
+ const written = JSON.parse(mockedFs.writeFileSync.mock.calls[0][1].trim());
136
+ expect(written.environments.staging).toBe('fias_sk_old');
137
+ expect(written.environments.production).toEqual({
138
+ idToken: 'p',
139
+ refreshToken: 'r',
140
+ expiresAt: 1,
141
+ });
142
+ });
143
+ });
144
+ describe('loadApiKeyForEnvironment()', () => {
145
+ it('returns API key string', () => {
125
146
  mockedFs.existsSync.mockReturnValue(true);
126
- mockedFs.readFileSync.mockReturnValue(JSON.stringify({ apiKey: 'fias_sk_legacy' }));
127
- (0, credentials_1.saveApiKeyForEnvironment)('production', 'fias_sk_prod');
128
- const writtenContent = mockedFs.writeFileSync.mock.calls[0][1];
129
- const parsed = JSON.parse(writtenContent.trim());
130
- expect(parsed.environments.staging).toBe('fias_sk_legacy');
131
- expect(parsed.environments.production).toBe('fias_sk_prod');
132
- expect(parsed.apiKey).toBeUndefined();
147
+ mockedFs.readFileSync.mockReturnValue(JSON.stringify({ environments: { staging: 'fias_sk_test' } }));
148
+ expect((0, credentials_1.loadApiKeyForEnvironment)('staging')).toBe('fias_sk_test');
149
+ });
150
+ it('returns empty for session tokens (not API key)', () => {
151
+ mockedFs.existsSync.mockReturnValue(true);
152
+ mockedFs.readFileSync.mockReturnValue(JSON.stringify({
153
+ environments: { staging: { idToken: 'x', refreshToken: 'y', expiresAt: 1 } },
154
+ }));
155
+ expect((0, credentials_1.loadApiKeyForEnvironment)('staging')).toBe('');
156
+ });
157
+ });
158
+ describe('saveApiKeyForEnvironment()', () => {
159
+ it('saves API key string', () => {
160
+ mockedFs.existsSync.mockReturnValueOnce(false).mockReturnValue(true);
161
+ (0, credentials_1.saveApiKeyForEnvironment)('staging', 'fias_sk_new');
162
+ const written = JSON.parse(mockedFs.writeFileSync.mock.calls[0][1].trim());
163
+ expect(written.environments.staging).toBe('fias_sk_new');
133
164
  });
134
165
  });
135
166
  describe('saveCredentials()', () => {
136
- it('creates directory if it does not exist and writes file', () => {
167
+ it('creates directory with mode 0o700 if missing', () => {
137
168
  mockedFs.existsSync.mockReturnValue(false);
138
- (0, credentials_1.saveCredentials)({ environments: { staging: 'fias_sk_test' } });
169
+ (0, credentials_1.saveCredentials)({ environments: { staging: 'test' } });
139
170
  expect(mockedFs.mkdirSync).toHaveBeenCalledWith(expect.stringContaining('.fias'), {
140
171
  recursive: true,
141
172
  mode: 0o700,
142
173
  });
143
- expect(mockedFs.writeFileSync).toHaveBeenCalledWith(expect.stringContaining('credentials'), expect.stringContaining('fias_sk_test'), { mode: 0o600 });
144
- });
145
- it('does not create directory if it already exists', () => {
146
- mockedFs.existsSync.mockReturnValue(true);
147
- (0, credentials_1.saveCredentials)({ environments: { staging: 'fias_sk_abc' } });
148
- expect(mockedFs.mkdirSync).not.toHaveBeenCalled();
149
- expect(mockedFs.writeFileSync).toHaveBeenCalled();
150
174
  });
151
- it('writes file with restricted permissions (0o600)', () => {
175
+ it('writes with mode 0o600', () => {
152
176
  mockedFs.existsSync.mockReturnValue(true);
153
- (0, credentials_1.saveCredentials)({ environments: { staging: 'fias_sk_test' } });
177
+ (0, credentials_1.saveCredentials)({ environments: { staging: 'test' } });
154
178
  expect(mockedFs.writeFileSync).toHaveBeenCalledWith(expect.any(String), expect.any(String), {
155
179
  mode: 0o600,
156
180
  });
@@ -1 +1 @@
1
- {"version":3,"file":"credentials.test.js","sourceRoot":"","sources":["../../src/config/credentials.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"credentials.test.js","sourceRoot":"","sources":["../../src/config/credentials.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"harness-server.d.ts","sourceRoot":"","sources":["../../src/server/harness-server.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAKhE,OAAO,EAGL,KAAK,WAAW,EACjB,MAAM,uBAAuB,CAAC;AAE/B,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB,EAAE,WAAW,CAAC;IAChC,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,QAAQ,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IACzE,SAAS,EAAE,OAAO,GAAG,MAAM,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;CACjD;AAED,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAqRrF"}
1
+ {"version":3,"file":"harness-server.d.ts","sourceRoot":"","sources":["../../src/server/harness-server.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAKhE,OAAO,EAIL,KAAK,WAAW,EAEjB,MAAM,uBAAuB,CAAC;AAE/B,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB,EAAE,WAAW,CAAC;IAChC,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,QAAQ,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IACzE,SAAS,EAAE,OAAO,GAAG,MAAM,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;CACjD;AAED,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6SrF"}