@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.
- package/dist/config/credentials.d.ts +26 -11
- package/dist/config/credentials.d.ts.map +1 -1
- package/dist/config/credentials.js +57 -21
- package/dist/config/credentials.js.map +1 -1
- package/dist/config/credentials.test.js +98 -74
- package/dist/config/credentials.test.js.map +1 -1
- package/dist/server/harness-server.d.ts.map +1 -1
- package/dist/server/harness-server.js +110 -371
- package/dist/server/harness-server.js.map +1 -1
- package/dist/server/harness-server.test.js +8 -37
- package/dist/server/harness-server.test.js.map +1 -1
- package/dist/server/static/harness.css +0 -58
- package/dist/server/static/harness.html +7 -20
- package/dist/server/static/harness.js +6 -162
- package/dist/server/static/static/harness.css +390 -0
- package/dist/server/static/static/harness.html +57 -0
- package/dist/server/static/static/harness.js +603 -0
- package/package.json +2 -2
|
@@ -1,29 +1,44 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Credentials Manager
|
|
3
3
|
*
|
|
4
|
-
* Manages the ~/.fias/credentials file for storing
|
|
5
|
-
* Supports per-environment
|
|
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
|
|
18
|
+
/** @deprecated Legacy single-key field */
|
|
15
19
|
apiKey?: string;
|
|
16
20
|
}
|
|
17
21
|
export declare function loadCredentials(): Credentials;
|
|
18
22
|
/**
|
|
19
|
-
* Returns the
|
|
20
|
-
* Handles
|
|
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
|
|
26
|
+
export declare function loadAuthTokenForEnvironment(env: Environment): string;
|
|
23
27
|
/**
|
|
24
|
-
*
|
|
25
|
-
|
|
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
|
|
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
|
|
6
|
-
* Supports per-environment
|
|
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.
|
|
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
|
|
65
|
-
* Handles
|
|
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
|
|
70
|
+
function loadAuthTokenForEnvironment(env) {
|
|
68
71
|
const creds = loadCredentials();
|
|
69
|
-
|
|
70
|
-
if (
|
|
71
|
-
|
|
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
|
-
*
|
|
81
|
-
|
|
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
|
-
|
|
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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
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
|
|
45
|
+
it('returns empty object when file does not exist', () => {
|
|
46
46
|
mockedFs.existsSync.mockReturnValue(false);
|
|
47
|
-
|
|
48
|
-
expect(creds).toEqual({});
|
|
47
|
+
expect((0, credentials_1.loadCredentials)()).toEqual({});
|
|
49
48
|
});
|
|
50
|
-
it('
|
|
49
|
+
it('returns empty object on invalid JSON', () => {
|
|
51
50
|
mockedFs.existsSync.mockReturnValue(true);
|
|
52
|
-
mockedFs.readFileSync.mockReturnValue(
|
|
53
|
-
|
|
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
|
|
54
|
+
it('loads session tokens from new format', () => {
|
|
58
55
|
mockedFs.existsSync.mockReturnValue(true);
|
|
59
|
-
mockedFs.readFileSync.mockReturnValue(JSON.stringify({
|
|
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.
|
|
62
|
+
expect(creds.environments?.staging).toEqual({
|
|
63
|
+
idToken: 'tok',
|
|
64
|
+
refreshToken: 'ref',
|
|
65
|
+
expiresAt: 123,
|
|
66
|
+
});
|
|
62
67
|
});
|
|
63
|
-
|
|
68
|
+
});
|
|
69
|
+
describe('loadAuthTokenForEnvironment()', () => {
|
|
70
|
+
it('returns idToken from session', () => {
|
|
64
71
|
mockedFs.existsSync.mockReturnValue(true);
|
|
65
|
-
mockedFs.readFileSync.mockReturnValue(
|
|
66
|
-
|
|
67
|
-
|
|
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
|
|
77
|
+
it('returns API key string from legacy per-env format', () => {
|
|
70
78
|
mockedFs.existsSync.mockReturnValue(true);
|
|
71
|
-
mockedFs.readFileSync.
|
|
72
|
-
|
|
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({
|
|
82
|
-
expect((0, credentials_1.
|
|
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
|
|
85
|
-
mockedFs.existsSync.mockReturnValue(
|
|
86
|
-
|
|
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
|
-
|
|
92
|
+
});
|
|
93
|
+
describe('loadSessionForEnvironment()', () => {
|
|
94
|
+
it('returns session tokens object', () => {
|
|
90
95
|
mockedFs.existsSync.mockReturnValue(true);
|
|
91
|
-
mockedFs.readFileSync.mockReturnValue(JSON.stringify({
|
|
92
|
-
|
|
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
|
|
102
|
+
it('returns null for API key string', () => {
|
|
95
103
|
mockedFs.existsSync.mockReturnValue(true);
|
|
96
|
-
mockedFs.readFileSync.mockReturnValue(JSON.stringify({
|
|
97
|
-
expect((0, credentials_1.
|
|
104
|
+
mockedFs.readFileSync.mockReturnValue(JSON.stringify({ environments: { staging: 'fias_sk_key' } }));
|
|
105
|
+
expect((0, credentials_1.loadSessionForEnvironment)('staging')).toBeNull();
|
|
98
106
|
});
|
|
99
|
-
it('returns
|
|
107
|
+
it('returns null when no credentials', () => {
|
|
100
108
|
mockedFs.existsSync.mockReturnValue(false);
|
|
101
|
-
expect((0, credentials_1.
|
|
109
|
+
expect((0, credentials_1.loadSessionForEnvironment)('staging')).toBeNull();
|
|
102
110
|
});
|
|
103
111
|
});
|
|
104
|
-
describe('
|
|
105
|
-
it('saves
|
|
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.
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
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
|
|
127
|
+
it('preserves other environment entries', () => {
|
|
116
128
|
mockedFs.existsSync.mockReturnValue(true);
|
|
117
|
-
mockedFs.readFileSync.mockReturnValue(JSON.stringify({ environments: { staging: '
|
|
118
|
-
(0, credentials_1.
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
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({
|
|
127
|
-
(0, credentials_1.
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
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
|
|
167
|
+
it('creates directory with mode 0o700 if missing', () => {
|
|
137
168
|
mockedFs.existsSync.mockReturnValue(false);
|
|
138
|
-
(0, credentials_1.saveCredentials)({ environments: { staging: '
|
|
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
|
|
175
|
+
it('writes with mode 0o600', () => {
|
|
152
176
|
mockedFs.existsSync.mockReturnValue(true);
|
|
153
|
-
(0, credentials_1.saveCredentials)({ environments: { staging: '
|
|
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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAyB;AACzB,+
|
|
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;
|
|
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"}
|