UNPKG

kubricate

Version:

A TypeScript framework for building reusable, type-safe Kubernetes infrastructure — without the YAML mess.

105 lines (103 loc) 3.63 kB
"use strict"; var _vitest = /*#__PURE__*/require("vitest"); var _InMemoryProvider = /*#__PURE__*/require("./InMemoryProvider.js"); /* eslint-disable @typescript-eslint/no-explicit-any */ (0, _vitest.describe)('InMemoryProvider', () => { (0, _vitest.it)('should return correct path for env strategy', () => { const provider = new _InMemoryProvider.InMemoryProvider(); const path = provider.getTargetPath({ kind: 'env', containerIndex: 1 }); (0, _vitest.expect)(path).toBe('spec.template.spec.containers[1].env'); }); (0, _vitest.it)('should fallback to index 0 for env path if not provided', () => { const provider = new _InMemoryProvider.InMemoryProvider(); (0, _vitest.expect)(provider.getTargetPath({ kind: 'env' })).toBe('spec.template.spec.containers[0].env'); }); (0, _vitest.it)('should throw for unsupported strategy', () => { const provider = new _InMemoryProvider.InMemoryProvider(); (0, _vitest.expect)(() => provider.getTargetPath({ kind: 'volume' })).toThrow('[InMemoryProvider] Unsupported strategy: volume'); }); (0, _vitest.it)('should return correct injection payload', () => { const provider = new _InMemoryProvider.InMemoryProvider({ name: 'my-secret' }); provider.setInjects([{ meta: { secretName: 'SECRET1', targetName: 'API_KEY' }, path: 'some.path', provider, providerId: 'p-id', resourceId: 'res-id' }]); (0, _vitest.expect)(provider.getInjectionPayload()).toEqual([{ name: 'API_KEY', valueFrom: { secretKeyRef: { name: 'my-secret', key: 'SECRET1' } } }]); }); (0, _vitest.it)('should fallback to "in-memory" if no name in config', () => { const provider = new _InMemoryProvider.InMemoryProvider(); provider.setInjects([{ meta: { secretName: 'S1', targetName: 'ENV1' }, path: '', provider, providerId: '', resourceId: '' }]); const payload = provider.getInjectionPayload(); (0, _vitest.expect)(payload[0].valueFrom.secretKeyRef.name).toBe('in-memory'); }); (0, _vitest.it)('should prepare a secret into a PreparedEffect', () => { const provider = new _InMemoryProvider.InMemoryProvider({ name: 'store-a' }); const result = provider.prepare('TOKEN', 'abc123'); (0, _vitest.expect)(result).toEqual([{ secretName: 'TOKEN', type: 'custom', providerName: undefined, value: { storeName: 'store-a', rawData: { TOKEN: 'abc123' } } }]); }); (0, _vitest.it)('should merge multiple effects correctly using mergeSecrets()', () => { const provider = new _InMemoryProvider.InMemoryProvider({ name: 'merged' }); const effects = [provider.prepare('DB_USER', 'admin')[0], provider.prepare('DB_PASS', '1234')[0]]; const result = provider.mergeSecrets(effects); (0, _vitest.expect)(result).toHaveLength(1); (0, _vitest.expect)(result[0].value.rawData).toEqual({ DB_USER: 'admin', DB_PASS: '1234' }); }); (0, _vitest.it)('should throw on merge if keys conflict in same store', () => { const provider = new _InMemoryProvider.InMemoryProvider({ name: 'store-x' }); const eff1 = provider.prepare('KEY', 'val1')[0]; const eff2 = provider.prepare('KEY', 'val2')[0]; (0, _vitest.expect)(() => provider.mergeSecrets([eff1, eff2])).toThrow(/Conflict detected: key "KEY" already exists in Secret "store-x"/); }); }); //# sourceMappingURL=InMemoryProvider.test.js.map