@authrim/setup 0.1.62 → 0.1.64

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/dist/__tests__/migrate.test.d.ts +5 -0
  2. package/dist/__tests__/migrate.test.d.ts.map +1 -0
  3. package/dist/__tests__/migrate.test.js +273 -0
  4. package/dist/__tests__/migrate.test.js.map +1 -0
  5. package/dist/__tests__/paths.test.d.ts +2 -0
  6. package/dist/__tests__/paths.test.d.ts.map +1 -0
  7. package/dist/__tests__/paths.test.js +257 -0
  8. package/dist/__tests__/paths.test.js.map +1 -0
  9. package/dist/cli/commands/config.d.ts +1 -0
  10. package/dist/cli/commands/config.d.ts.map +1 -1
  11. package/dist/cli/commands/config.js +41 -7
  12. package/dist/cli/commands/config.js.map +1 -1
  13. package/dist/cli/commands/deploy.d.ts +1 -0
  14. package/dist/cli/commands/deploy.d.ts.map +1 -1
  15. package/dist/cli/commands/deploy.js +181 -19
  16. package/dist/cli/commands/deploy.js.map +1 -1
  17. package/dist/cli/commands/init.d.ts.map +1 -1
  18. package/dist/cli/commands/init.js +267 -82
  19. package/dist/cli/commands/init.js.map +1 -1
  20. package/dist/cli/commands/migrate.d.ts +21 -0
  21. package/dist/cli/commands/migrate.d.ts.map +1 -0
  22. package/dist/cli/commands/migrate.js +166 -0
  23. package/dist/cli/commands/migrate.js.map +1 -0
  24. package/dist/core/admin.d.ts +18 -1
  25. package/dist/core/admin.d.ts.map +1 -1
  26. package/dist/core/admin.js +36 -7
  27. package/dist/core/admin.js.map +1 -1
  28. package/dist/core/config.d.ts +10 -2
  29. package/dist/core/config.d.ts.map +1 -1
  30. package/dist/core/config.js +6 -2
  31. package/dist/core/config.js.map +1 -1
  32. package/dist/core/keys.d.ts +55 -4
  33. package/dist/core/keys.d.ts.map +1 -1
  34. package/dist/core/keys.js +104 -12
  35. package/dist/core/keys.js.map +1 -1
  36. package/dist/core/lock.d.ts +60 -3
  37. package/dist/core/lock.d.ts.map +1 -1
  38. package/dist/core/lock.js +108 -4
  39. package/dist/core/lock.js.map +1 -1
  40. package/dist/core/migrate.d.ts +95 -0
  41. package/dist/core/migrate.d.ts.map +1 -0
  42. package/dist/core/migrate.js +549 -0
  43. package/dist/core/migrate.js.map +1 -0
  44. package/dist/core/paths.d.ts +171 -0
  45. package/dist/core/paths.d.ts.map +1 -0
  46. package/dist/core/paths.js +319 -0
  47. package/dist/core/paths.js.map +1 -0
  48. package/dist/core/wrangler-sync.d.ts +88 -0
  49. package/dist/core/wrangler-sync.d.ts.map +1 -0
  50. package/dist/core/wrangler-sync.js +242 -0
  51. package/dist/core/wrangler-sync.js.map +1 -0
  52. package/dist/index.js +16 -1
  53. package/dist/index.js.map +1 -1
  54. package/dist/web/api.d.ts.map +1 -1
  55. package/dist/web/api.js +102 -28
  56. package/dist/web/api.js.map +1 -1
  57. package/dist/web/ui.d.ts.map +1 -1
  58. package/dist/web/ui.js +1140 -286
  59. package/dist/web/ui.js.map +1 -1
  60. package/package.json +1 -1
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Tests for migrate.ts - Migration from legacy to new structure
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=migrate.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrate.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/migrate.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,273 @@
1
+ /**
2
+ * Tests for migrate.ts - Migration from legacy to new structure
3
+ */
4
+ import { describe, it, expect, beforeEach, afterEach } from 'vitest';
5
+ import { existsSync, mkdirSync, writeFileSync, rmSync, readFileSync } from 'node:fs';
6
+ import { join } from 'node:path';
7
+ import { tmpdir } from 'node:os';
8
+ import { needsMigration, getEnvironmentsToMigrate, createBackup, migrateToNewStructure, validateMigration, getMigrationStatus, } from '../core/migrate.js';
9
+ import { LEGACY_CONFIG_FILE, LEGACY_LOCK_FILE, LEGACY_KEYS_DIR, AUTHRIM_DIR, } from '../core/paths.js';
10
+ // =============================================================================
11
+ // Test Helpers
12
+ // =============================================================================
13
+ function createTempDir() {
14
+ const tempDir = join(tmpdir(), `authrim-migrate-test-${Date.now()}-${Math.random().toString(36).slice(2)}`);
15
+ mkdirSync(tempDir, { recursive: true });
16
+ return tempDir;
17
+ }
18
+ function createLegacyStructure(baseDir, env = 'dev') {
19
+ // Create legacy config
20
+ const config = {
21
+ version: '1.0.0',
22
+ environment: { prefix: env },
23
+ profile: 'basic-op',
24
+ tenant: { name: 'test', displayName: 'Test' },
25
+ components: { api: true, loginUi: true, adminUi: true },
26
+ oidc: { accessTokenTtl: 3600, refreshTokenTtl: 86400, authCodeTtl: 600, pkceRequired: true, responseTypes: ['code'], grantTypes: ['authorization_code'] },
27
+ sharding: { authCodeShards: 4, refreshTokenShards: 4 },
28
+ features: {},
29
+ keys: { secretsPath: './.keys/' },
30
+ };
31
+ writeFileSync(join(baseDir, LEGACY_CONFIG_FILE), JSON.stringify(config, null, 2));
32
+ // Create legacy lock
33
+ const lock = {
34
+ version: '1.0.0',
35
+ env,
36
+ createdAt: new Date().toISOString(),
37
+ d1: { CORE_DB: { id: 'db-123', name: `${env}-authrim-core-db` } },
38
+ kv: { SETTINGS: { id: 'kv-123', name: `${env}-SETTINGS` } },
39
+ };
40
+ writeFileSync(join(baseDir, LEGACY_LOCK_FILE), JSON.stringify(lock, null, 2));
41
+ // Create legacy keys directory
42
+ const keysDir = join(baseDir, LEGACY_KEYS_DIR, env);
43
+ mkdirSync(keysDir, { recursive: true });
44
+ writeFileSync(join(keysDir, 'private.pem'), '-----BEGIN PRIVATE KEY-----\ntest\n-----END PRIVATE KEY-----');
45
+ writeFileSync(join(keysDir, 'public.jwk.json'), JSON.stringify({ kty: 'RSA', n: 'test', e: 'AQAB' }));
46
+ writeFileSync(join(keysDir, 'admin_api_secret.txt'), 'secret-123');
47
+ }
48
+ function createNewStructure(baseDir, env = 'dev') {
49
+ const envDir = join(baseDir, AUTHRIM_DIR, env);
50
+ mkdirSync(envDir, { recursive: true });
51
+ mkdirSync(join(envDir, 'keys'), { recursive: true });
52
+ // Create config
53
+ const config = {
54
+ version: '1.0.0',
55
+ environment: { prefix: env },
56
+ profile: 'basic-op',
57
+ tenant: { name: 'test', displayName: 'Test' },
58
+ components: { api: true },
59
+ oidc: { accessTokenTtl: 3600, refreshTokenTtl: 86400, authCodeTtl: 600, pkceRequired: true, responseTypes: ['code'], grantTypes: ['authorization_code'] },
60
+ sharding: { authCodeShards: 4, refreshTokenShards: 4 },
61
+ features: {},
62
+ keys: { secretsPath: './keys/' },
63
+ };
64
+ writeFileSync(join(envDir, 'config.json'), JSON.stringify(config, null, 2));
65
+ // Create lock
66
+ const lock = {
67
+ version: '1.0.0',
68
+ env,
69
+ createdAt: new Date().toISOString(),
70
+ d1: {},
71
+ kv: {},
72
+ };
73
+ writeFileSync(join(envDir, 'lock.json'), JSON.stringify(lock, null, 2));
74
+ // Create version.txt
75
+ writeFileSync(join(envDir, 'version.txt'), '0.1.0');
76
+ // Create keys
77
+ writeFileSync(join(envDir, 'keys', 'private.pem'), '-----BEGIN PRIVATE KEY-----\ntest\n-----END PRIVATE KEY-----');
78
+ writeFileSync(join(envDir, 'keys', 'public.jwk.json'), JSON.stringify({ kty: 'RSA' }));
79
+ }
80
+ // =============================================================================
81
+ // Tests
82
+ // =============================================================================
83
+ describe('migrate.ts', () => {
84
+ let tempDir;
85
+ beforeEach(() => {
86
+ tempDir = createTempDir();
87
+ });
88
+ afterEach(() => {
89
+ if (existsSync(tempDir)) {
90
+ rmSync(tempDir, { recursive: true, force: true });
91
+ }
92
+ });
93
+ describe('needsMigration', () => {
94
+ it('should return true for legacy structure', () => {
95
+ createLegacyStructure(tempDir, 'dev');
96
+ expect(needsMigration(tempDir)).toBe(true);
97
+ });
98
+ it('should return false for new structure', () => {
99
+ createNewStructure(tempDir, 'dev');
100
+ expect(needsMigration(tempDir)).toBe(false);
101
+ });
102
+ it('should return false for empty directory', () => {
103
+ expect(needsMigration(tempDir)).toBe(false);
104
+ });
105
+ });
106
+ describe('getEnvironmentsToMigrate', () => {
107
+ it('should detect environment from legacy config', () => {
108
+ createLegacyStructure(tempDir, 'prod');
109
+ const envs = getEnvironmentsToMigrate(tempDir);
110
+ expect(envs).toContain('prod');
111
+ });
112
+ it('should detect environments from .keys directory', () => {
113
+ // Create .keys with multiple environments but no config
114
+ mkdirSync(join(tempDir, LEGACY_KEYS_DIR, 'dev'), { recursive: true });
115
+ mkdirSync(join(tempDir, LEGACY_KEYS_DIR, 'staging'), { recursive: true });
116
+ const envs = getEnvironmentsToMigrate(tempDir);
117
+ expect(envs).toContain('dev');
118
+ expect(envs).toContain('staging');
119
+ });
120
+ it('should return empty array for empty directory', () => {
121
+ const envs = getEnvironmentsToMigrate(tempDir);
122
+ expect(envs).toEqual([]);
123
+ });
124
+ });
125
+ describe('createBackup', () => {
126
+ it('should create backup of legacy files', async () => {
127
+ createLegacyStructure(tempDir, 'dev');
128
+ const result = await createBackup(tempDir);
129
+ expect(result.success).toBe(true);
130
+ expect(result.backupPath).toContain('.authrim-backup-');
131
+ expect(result.files.length).toBeGreaterThan(0);
132
+ expect(existsSync(result.backupPath)).toBe(true);
133
+ expect(existsSync(join(result.backupPath, LEGACY_CONFIG_FILE))).toBe(true);
134
+ expect(existsSync(join(result.backupPath, LEGACY_LOCK_FILE))).toBe(true);
135
+ });
136
+ it('should handle empty directory gracefully', async () => {
137
+ const result = await createBackup(tempDir);
138
+ expect(result.success).toBe(true);
139
+ expect(result.files).toEqual([]);
140
+ });
141
+ });
142
+ describe('migrateToNewStructure', () => {
143
+ it('should migrate legacy structure to new structure', async () => {
144
+ createLegacyStructure(tempDir, 'dev');
145
+ const result = await migrateToNewStructure({
146
+ baseDir: tempDir,
147
+ noBackup: true,
148
+ });
149
+ expect(result.success).toBe(true);
150
+ expect(result.migratedEnvs).toContain('dev');
151
+ expect(result.errors).toEqual([]);
152
+ // Check new structure exists
153
+ const newConfigPath = join(tempDir, AUTHRIM_DIR, 'dev', 'config.json');
154
+ const newLockPath = join(tempDir, AUTHRIM_DIR, 'dev', 'lock.json');
155
+ const newVersionPath = join(tempDir, AUTHRIM_DIR, 'dev', 'version.txt');
156
+ const newKeysDir = join(tempDir, AUTHRIM_DIR, 'dev', 'keys');
157
+ expect(existsSync(newConfigPath)).toBe(true);
158
+ expect(existsSync(newLockPath)).toBe(true);
159
+ expect(existsSync(newVersionPath)).toBe(true);
160
+ expect(existsSync(newKeysDir)).toBe(true);
161
+ expect(existsSync(join(newKeysDir, 'private.pem'))).toBe(true);
162
+ });
163
+ it('should create backup by default', async () => {
164
+ createLegacyStructure(tempDir, 'dev');
165
+ const result = await migrateToNewStructure({
166
+ baseDir: tempDir,
167
+ });
168
+ expect(result.success).toBe(true);
169
+ expect(result.backupPath).toBeDefined();
170
+ expect(existsSync(result.backupPath)).toBe(true);
171
+ });
172
+ it('should handle dry run mode', async () => {
173
+ createLegacyStructure(tempDir, 'dev');
174
+ const result = await migrateToNewStructure({
175
+ baseDir: tempDir,
176
+ dryRun: true,
177
+ });
178
+ expect(result.success).toBe(true);
179
+ expect(result.migratedEnvs).toContain('dev');
180
+ // New structure should NOT exist in dry run
181
+ const newConfigPath = join(tempDir, AUTHRIM_DIR, 'dev', 'config.json');
182
+ expect(existsSync(newConfigPath)).toBe(false);
183
+ });
184
+ it('should skip migration for new structure', async () => {
185
+ createNewStructure(tempDir, 'dev');
186
+ const result = await migrateToNewStructure({
187
+ baseDir: tempDir,
188
+ });
189
+ expect(result.success).toBe(true);
190
+ expect(result.migratedEnvs).toEqual([]);
191
+ });
192
+ it('should update secretsPath in migrated config', async () => {
193
+ createLegacyStructure(tempDir, 'dev');
194
+ await migrateToNewStructure({
195
+ baseDir: tempDir,
196
+ noBackup: true,
197
+ });
198
+ const newConfigPath = join(tempDir, AUTHRIM_DIR, 'dev', 'config.json');
199
+ const config = JSON.parse(readFileSync(newConfigPath, 'utf-8'));
200
+ expect(config.keys.secretsPath).toBe('./keys/');
201
+ });
202
+ });
203
+ describe('validateMigration', () => {
204
+ it('should validate successful migration', async () => {
205
+ createLegacyStructure(tempDir, 'dev');
206
+ const migrateResult = await migrateToNewStructure({ baseDir: tempDir, noBackup: true });
207
+ expect(migrateResult.success).toBe(true);
208
+ const result = await validateMigration(tempDir, 'dev');
209
+ // If validation fails, show the issues for debugging
210
+ if (!result.valid) {
211
+ console.log('Validation issues:', result.issues);
212
+ }
213
+ expect(result.valid).toBe(true);
214
+ expect(result.issues).toEqual([]);
215
+ });
216
+ it('should detect missing config.json', async () => {
217
+ const envDir = join(tempDir, AUTHRIM_DIR, 'dev');
218
+ mkdirSync(envDir, { recursive: true });
219
+ // Only create lock.json, not config.json
220
+ writeFileSync(join(envDir, 'lock.json'), '{}');
221
+ const result = await validateMigration(tempDir, 'dev');
222
+ expect(result.valid).toBe(false);
223
+ expect(result.issues).toContain('config.json not found');
224
+ });
225
+ it('should detect missing keys directory', async () => {
226
+ const envDir = join(tempDir, AUTHRIM_DIR, 'dev');
227
+ mkdirSync(envDir, { recursive: true });
228
+ // Create minimal valid config and lock
229
+ const config = {
230
+ version: '1.0.0',
231
+ environment: { prefix: 'dev' },
232
+ profile: 'basic-op',
233
+ tenant: { name: 'test', displayName: 'Test' },
234
+ components: { api: true },
235
+ oidc: { accessTokenTtl: 3600, refreshTokenTtl: 86400, authCodeTtl: 600, pkceRequired: true, responseTypes: ['code'], grantTypes: ['authorization_code'] },
236
+ sharding: { authCodeShards: 4, refreshTokenShards: 4 },
237
+ features: {},
238
+ keys: { secretsPath: './keys/' },
239
+ };
240
+ writeFileSync(join(envDir, 'config.json'), JSON.stringify(config));
241
+ writeFileSync(join(envDir, 'lock.json'), JSON.stringify({ version: '1.0.0', env: 'dev', d1: {}, kv: {}, createdAt: new Date().toISOString() }));
242
+ writeFileSync(join(envDir, 'version.txt'), '0.1.0');
243
+ const result = await validateMigration(tempDir, 'dev');
244
+ expect(result.valid).toBe(false);
245
+ expect(result.issues).toContain('keys/ directory not found');
246
+ });
247
+ });
248
+ describe('getMigrationStatus', () => {
249
+ it('should return correct status for legacy structure', () => {
250
+ createLegacyStructure(tempDir, 'dev');
251
+ const status = getMigrationStatus(tempDir);
252
+ expect(status.needsMigration).toBe(true);
253
+ expect(status.currentStructure).toBe('legacy');
254
+ expect(status.environments).toContain('dev');
255
+ expect(status.legacyFiles).toContain(LEGACY_CONFIG_FILE);
256
+ expect(status.legacyFiles).toContain(LEGACY_LOCK_FILE);
257
+ });
258
+ it('should return correct status for new structure', () => {
259
+ createNewStructure(tempDir, 'prod');
260
+ const status = getMigrationStatus(tempDir);
261
+ expect(status.needsMigration).toBe(false);
262
+ expect(status.currentStructure).toBe('new');
263
+ expect(status.environments).toContain('prod');
264
+ });
265
+ it('should return correct status for empty directory', () => {
266
+ const status = getMigrationStatus(tempDir);
267
+ expect(status.needsMigration).toBe(false);
268
+ expect(status.currentStructure).toBe('none');
269
+ expect(status.environments).toEqual([]);
270
+ });
271
+ });
272
+ });
273
+ //# sourceMappingURL=migrate.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrate.test.js","sourceRoot":"","sources":["../../src/__tests__/migrate.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=paths.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/paths.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,257 @@
1
+ import { describe, it, expect, beforeEach, afterEach } from 'vitest';
2
+ import { mkdirSync, writeFileSync, rmSync, existsSync } from 'node:fs';
3
+ import { join } from 'node:path';
4
+ import { tmpdir } from 'node:os';
5
+ import { getEnvironmentPaths, getLegacyPaths, detectStructure, needsMigration, listEnvironments, environmentExists, resolvePaths, validateEnvName, getRelativeKeysPath, getLegacyRelativeKeysPath, AUTHRIM_DIR, LEGACY_CONFIG_FILE, LEGACY_LOCK_FILE, LEGACY_KEYS_DIR, } from '../core/paths.js';
6
+ describe('paths module', () => {
7
+ let testDir;
8
+ beforeEach(() => {
9
+ testDir = join(tmpdir(), `authrim-test-${Date.now()}-${Math.random().toString(36).slice(2)}`);
10
+ mkdirSync(testDir, { recursive: true });
11
+ });
12
+ afterEach(() => {
13
+ if (existsSync(testDir)) {
14
+ rmSync(testDir, { recursive: true, force: true });
15
+ }
16
+ });
17
+ describe('getEnvironmentPaths', () => {
18
+ it('should generate correct paths for environment', () => {
19
+ const paths = getEnvironmentPaths({ baseDir: '/project', env: 'dev' });
20
+ expect(paths.root).toBe('/project/.authrim/dev');
21
+ expect(paths.config).toBe('/project/.authrim/dev/config.json');
22
+ expect(paths.lock).toBe('/project/.authrim/dev/lock.json');
23
+ expect(paths.version).toBe('/project/.authrim/dev/version.txt');
24
+ expect(paths.keys).toBe('/project/.authrim/dev/keys');
25
+ expect(paths.keyFiles.privateKey).toBe('/project/.authrim/dev/keys/private.pem');
26
+ expect(paths.keyFiles.publicKey).toBe('/project/.authrim/dev/keys/public.jwk.json');
27
+ expect(paths.keyFiles.setupToken).toBe('/project/.authrim/dev/keys/setup_token.txt');
28
+ });
29
+ it('should handle environment names with hyphens', () => {
30
+ const paths = getEnvironmentPaths({ baseDir: '/project', env: 'my-staging-env' });
31
+ expect(paths.root).toBe('/project/.authrim/my-staging-env');
32
+ expect(paths.config).toBe('/project/.authrim/my-staging-env/config.json');
33
+ });
34
+ it('should handle relative base directory', () => {
35
+ const paths = getEnvironmentPaths({ baseDir: '.', env: 'prod' });
36
+ // join('.', 'path') returns 'path' without leading './'
37
+ expect(paths.root).toBe('.authrim/prod');
38
+ expect(paths.config).toBe('.authrim/prod/config.json');
39
+ });
40
+ });
41
+ describe('getLegacyPaths', () => {
42
+ it('should generate correct legacy paths', () => {
43
+ const paths = getLegacyPaths('/project', 'dev');
44
+ expect(paths.config).toBe('/project/authrim-config.json');
45
+ expect(paths.lock).toBe('/project/authrim-lock.json');
46
+ expect(paths.keys).toBe('/project/.keys/dev');
47
+ expect(paths.keyFiles.privateKey).toBe('/project/.keys/dev/private.pem');
48
+ });
49
+ it('should handle different environments', () => {
50
+ const devPaths = getLegacyPaths('/project', 'dev');
51
+ const prodPaths = getLegacyPaths('/project', 'prod');
52
+ // Config and lock are the same (global)
53
+ expect(devPaths.config).toBe(prodPaths.config);
54
+ expect(devPaths.lock).toBe(prodPaths.lock);
55
+ // Keys are different per environment
56
+ expect(devPaths.keys).toBe('/project/.keys/dev');
57
+ expect(prodPaths.keys).toBe('/project/.keys/prod');
58
+ });
59
+ });
60
+ describe('detectStructure', () => {
61
+ it('should detect new structure', () => {
62
+ // Create new structure
63
+ const envDir = join(testDir, AUTHRIM_DIR, 'dev');
64
+ mkdirSync(envDir, { recursive: true });
65
+ writeFileSync(join(envDir, 'config.json'), '{}');
66
+ const result = detectStructure(testDir);
67
+ expect(result.type).toBe('new');
68
+ expect(result.envs).toContain('dev');
69
+ });
70
+ it('should detect multiple environments in new structure', () => {
71
+ // Create multiple environments
72
+ for (const env of ['dev', 'staging', 'prod']) {
73
+ const envDir = join(testDir, AUTHRIM_DIR, env);
74
+ mkdirSync(envDir, { recursive: true });
75
+ writeFileSync(join(envDir, 'config.json'), '{}');
76
+ }
77
+ const result = detectStructure(testDir);
78
+ expect(result.type).toBe('new');
79
+ expect(result.envs).toHaveLength(3);
80
+ expect(result.envs).toContain('dev');
81
+ expect(result.envs).toContain('staging');
82
+ expect(result.envs).toContain('prod');
83
+ });
84
+ it('should detect legacy structure with config file', () => {
85
+ writeFileSync(join(testDir, LEGACY_CONFIG_FILE), JSON.stringify({ environment: { prefix: 'myenv' } }));
86
+ const result = detectStructure(testDir);
87
+ expect(result.type).toBe('legacy');
88
+ expect(result.legacyEnv).toBe('myenv');
89
+ });
90
+ it('should detect legacy structure with lock file', () => {
91
+ writeFileSync(join(testDir, LEGACY_LOCK_FILE), JSON.stringify({ env: 'testenv' }));
92
+ const result = detectStructure(testDir);
93
+ expect(result.type).toBe('legacy');
94
+ expect(result.legacyEnv).toBe('testenv');
95
+ });
96
+ it('should detect legacy structure from .keys directory', () => {
97
+ const keysDir = join(testDir, LEGACY_KEYS_DIR, 'fromkeys');
98
+ mkdirSync(keysDir, { recursive: true });
99
+ const result = detectStructure(testDir);
100
+ expect(result.type).toBe('legacy');
101
+ expect(result.legacyEnv).toBe('fromkeys');
102
+ });
103
+ it('should return none for empty directory', () => {
104
+ const result = detectStructure(testDir);
105
+ expect(result.type).toBe('none');
106
+ expect(result.envs).toHaveLength(0);
107
+ });
108
+ it('should prefer new structure over legacy when both exist', () => {
109
+ // Create both structures
110
+ const newEnvDir = join(testDir, AUTHRIM_DIR, 'newenv');
111
+ mkdirSync(newEnvDir, { recursive: true });
112
+ writeFileSync(join(newEnvDir, 'config.json'), '{}');
113
+ writeFileSync(join(testDir, LEGACY_CONFIG_FILE), JSON.stringify({ environment: { prefix: 'legacyenv' } }));
114
+ const result = detectStructure(testDir);
115
+ expect(result.type).toBe('new');
116
+ expect(result.envs).toContain('newenv');
117
+ });
118
+ });
119
+ describe('needsMigration', () => {
120
+ it('should return true for legacy structure', () => {
121
+ writeFileSync(join(testDir, LEGACY_CONFIG_FILE), '{}');
122
+ expect(needsMigration(testDir)).toBe(true);
123
+ });
124
+ it('should return false for new structure', () => {
125
+ const envDir = join(testDir, AUTHRIM_DIR, 'dev');
126
+ mkdirSync(envDir, { recursive: true });
127
+ writeFileSync(join(envDir, 'config.json'), '{}');
128
+ expect(needsMigration(testDir)).toBe(false);
129
+ });
130
+ it('should return false for empty directory', () => {
131
+ expect(needsMigration(testDir)).toBe(false);
132
+ });
133
+ });
134
+ describe('listEnvironments', () => {
135
+ it('should list environments from new structure', () => {
136
+ for (const env of ['alpha', 'beta']) {
137
+ const envDir = join(testDir, AUTHRIM_DIR, env);
138
+ mkdirSync(envDir, { recursive: true });
139
+ writeFileSync(join(envDir, 'config.json'), '{}');
140
+ }
141
+ const envs = listEnvironments(testDir);
142
+ expect(envs).toHaveLength(2);
143
+ expect(envs).toContain('alpha');
144
+ expect(envs).toContain('beta');
145
+ });
146
+ it('should list environments from legacy .keys structure', () => {
147
+ for (const env of ['dev', 'prod']) {
148
+ const keysDir = join(testDir, LEGACY_KEYS_DIR, env);
149
+ mkdirSync(keysDir, { recursive: true });
150
+ }
151
+ const envs = listEnvironments(testDir);
152
+ expect(envs).toHaveLength(2);
153
+ expect(envs).toContain('dev');
154
+ expect(envs).toContain('prod');
155
+ });
156
+ it('should combine environments from both structures', () => {
157
+ // New structure
158
+ const newEnvDir = join(testDir, AUTHRIM_DIR, 'new-env');
159
+ mkdirSync(newEnvDir, { recursive: true });
160
+ writeFileSync(join(newEnvDir, 'config.json'), '{}');
161
+ // Legacy structure
162
+ const legacyKeysDir = join(testDir, LEGACY_KEYS_DIR, 'legacy-env');
163
+ mkdirSync(legacyKeysDir, { recursive: true });
164
+ const envs = listEnvironments(testDir);
165
+ expect(envs).toHaveLength(2);
166
+ expect(envs).toContain('new-env');
167
+ expect(envs).toContain('legacy-env');
168
+ });
169
+ it('should return sorted list', () => {
170
+ for (const env of ['zebra', 'alpha', 'beta']) {
171
+ const envDir = join(testDir, AUTHRIM_DIR, env);
172
+ mkdirSync(envDir, { recursive: true });
173
+ writeFileSync(join(envDir, 'config.json'), '{}');
174
+ }
175
+ const envs = listEnvironments(testDir);
176
+ expect(envs).toEqual(['alpha', 'beta', 'zebra']);
177
+ });
178
+ it('should return empty array for empty directory', () => {
179
+ const envs = listEnvironments(testDir);
180
+ expect(envs).toHaveLength(0);
181
+ });
182
+ });
183
+ describe('environmentExists', () => {
184
+ it('should return true for existing new structure environment', () => {
185
+ const envDir = join(testDir, AUTHRIM_DIR, 'existing');
186
+ mkdirSync(envDir, { recursive: true });
187
+ writeFileSync(join(envDir, 'config.json'), '{}');
188
+ expect(environmentExists(testDir, 'existing')).toBe(true);
189
+ });
190
+ it('should return true for existing legacy environment', () => {
191
+ const keysDir = join(testDir, LEGACY_KEYS_DIR, 'legacy-existing');
192
+ mkdirSync(keysDir, { recursive: true });
193
+ expect(environmentExists(testDir, 'legacy-existing')).toBe(true);
194
+ });
195
+ it('should return false for non-existing environment', () => {
196
+ expect(environmentExists(testDir, 'nonexistent')).toBe(false);
197
+ });
198
+ });
199
+ describe('resolvePaths', () => {
200
+ it('should use new structure when forceNew is true', () => {
201
+ const result = resolvePaths({ baseDir: testDir, env: 'test', forceNew: true });
202
+ expect(result.type).toBe('new');
203
+ expect(result.paths.config).toContain('.authrim');
204
+ });
205
+ it('should use legacy structure when forceLegacy is true', () => {
206
+ const result = resolvePaths({ baseDir: testDir, env: 'test', forceLegacy: true });
207
+ expect(result.type).toBe('legacy');
208
+ expect(result.paths.config).toContain('authrim-config.json');
209
+ });
210
+ it('should detect existing new structure', () => {
211
+ const envDir = join(testDir, AUTHRIM_DIR, 'detected');
212
+ mkdirSync(envDir, { recursive: true });
213
+ const result = resolvePaths({ baseDir: testDir, env: 'detected' });
214
+ expect(result.type).toBe('new');
215
+ });
216
+ it('should detect existing legacy structure', () => {
217
+ writeFileSync(join(testDir, LEGACY_CONFIG_FILE), '{}');
218
+ const result = resolvePaths({ baseDir: testDir, env: 'any' });
219
+ expect(result.type).toBe('legacy');
220
+ });
221
+ it('should default to new structure for new environments', () => {
222
+ const result = resolvePaths({ baseDir: testDir, env: 'brandnew' });
223
+ expect(result.type).toBe('new');
224
+ });
225
+ });
226
+ describe('validateEnvName', () => {
227
+ it('should accept valid environment names', () => {
228
+ expect(validateEnvName('dev')).toBe(true);
229
+ expect(validateEnvName('prod')).toBe(true);
230
+ expect(validateEnvName('staging')).toBe(true);
231
+ expect(validateEnvName('my-env')).toBe(true);
232
+ expect(validateEnvName('env123')).toBe(true);
233
+ expect(validateEnvName('a1-b2-c3')).toBe(true);
234
+ });
235
+ it('should reject invalid environment names', () => {
236
+ expect(validateEnvName('')).toBe(false);
237
+ expect(validateEnvName('123')).toBe(false); // Must start with letter
238
+ expect(validateEnvName('Dev')).toBe(false); // No uppercase
239
+ expect(validateEnvName('my_env')).toBe(false); // No underscores
240
+ expect(validateEnvName('-env')).toBe(false); // Must start with letter
241
+ expect(validateEnvName('env-')).toBe(true); // Trailing hyphen is OK
242
+ expect(validateEnvName('my env')).toBe(false); // No spaces
243
+ });
244
+ });
245
+ describe('getRelativeKeysPath', () => {
246
+ it('should return relative path for new structure', () => {
247
+ expect(getRelativeKeysPath()).toBe('./keys/');
248
+ });
249
+ });
250
+ describe('getLegacyRelativeKeysPath', () => {
251
+ it('should return relative path for legacy structure', () => {
252
+ expect(getLegacyRelativeKeysPath('dev')).toBe('./.keys/dev/');
253
+ expect(getLegacyRelativeKeysPath('prod')).toBe('./.keys/prod/');
254
+ });
255
+ });
256
+ });
257
+ //# sourceMappingURL=paths.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.test.js","sourceRoot":"","sources":["../../src/__tests__/paths.test.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,7 @@ export interface ConfigCommandOptions {
8
8
  validate?: boolean;
9
9
  json?: boolean;
10
10
  config?: string;
11
+ env?: string;
11
12
  }
12
13
  export declare function configCommand(options: ConfigCommandOptions): Promise<void>;
13
14
  //# sourceMappingURL=config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAaH,MAAM,WAAW,oBAAoB;IACnC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAMD,wBAAsB,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAahF"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAoBH,MAAM,WAAW,oBAAoB;IACnC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAMD,wBAAsB,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAyChF"}