UNPKG

kubricate

Version:

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

121 lines (119 loc) 6.04 kB
"use strict"; var _vitest = /*#__PURE__*/require("vitest"); var _InMemoryConnector = /*#__PURE__*/require("./connectors/InMemoryConnector.js"); var _InMemoryProvider = /*#__PURE__*/require("./providers/InMemoryProvider.js"); var _SecretManager = /*#__PURE__*/require("./SecretManager.js"); // SecretManager.test.ts (0, _vitest.describe)('SecretManager', () => { let manager; (0, _vitest.beforeEach)(() => { manager = new _SecretManager.SecretManager(); }); (0, _vitest.it)('throws if no connector or provider is registered', () => { (0, _vitest.expect)(() => manager.build()).toThrow('No connectors registered'); }); (0, _vitest.it)('adds and retrieves a connector and provider', () => { manager = manager.addConnector('memory', new _InMemoryConnector.InMemoryConnector({})); manager = manager.addProvider('kube', new _InMemoryProvider.InMemoryProvider({ name: 'my-secret' })); (0, _vitest.expect)(() => manager.build()).toThrow('No secrets registered'); }); (0, _vitest.it)('adds a secret with full options object', () => { manager = manager.addConnector('memory', new _InMemoryConnector.InMemoryConnector({ DB_PASS: 'pw' })).addProvider('kube', new _InMemoryProvider.InMemoryProvider({ name: 'secret' })).setDefaultConnector('memory').setDefaultProvider('kube').addSecret({ name: 'DB_PASS', connector: 'memory', provider: 'kube' }); (0, _vitest.expect)(() => manager.build()).not.toThrow(); }); (0, _vitest.it)('adds a secret and prepares it', async () => { manager = manager.addConnector('memory', new _InMemoryConnector.InMemoryConnector({ API_KEY: '12345' })).addProvider('kube', new _InMemoryProvider.InMemoryProvider({ name: 'my-secret' })).setDefaultConnector('memory').setDefaultProvider('kube').addSecret('API_KEY'); const result = await manager.prepare(); (0, _vitest.expect)(result.length).toBe(1); (0, _vitest.expect)(result[0].name).toBe('API_KEY'); (0, _vitest.expect)(result[0].value).toBe('12345'); (0, _vitest.expect)(Array.isArray(result[0].effects)).toBe(true); }); (0, _vitest.it)('throws if connector or provider does not exist', () => { manager = manager.addConnector('valid', new _InMemoryConnector.InMemoryConnector({})); (0, _vitest.expect)(() => manager.getConnector('not-exist')).toThrow('Connector not-exist not found'); (0, _vitest.expect)(() => manager.getProvider('not-exist')).toThrow('Provider not-exist not found'); }); (0, _vitest.it)('prevents duplicate connector, provider, and secret', () => { manager = manager.addConnector('memory', new _InMemoryConnector.InMemoryConnector({})); (0, _vitest.expect)(() => manager.addConnector('memory', new _InMemoryConnector.InMemoryConnector({}))).toThrow('Connector memory already exists'); manager = manager.addProvider('kube', new _InMemoryProvider.InMemoryProvider({ name: 'my-secret' })); (0, _vitest.expect)(() => manager.addProvider('kube', new _InMemoryProvider.InMemoryProvider({ name: 'my-secret' }))).toThrow('Provider kube already exists'); manager = manager.addSecret('DUPLICATE_SECRET'); (0, _vitest.expect)(() => manager.addSecret('DUPLICATE_SECRET')).toThrow('Secret DUPLICATE_SECRET already exists'); }); (0, _vitest.it)('auto-assigns default connector/provider when only one is registered', async () => { manager = manager.addConnector('memory', new _InMemoryConnector.InMemoryConnector({ AUTO: 'ok' })).addProvider('kube', new _InMemoryProvider.InMemoryProvider({ name: 'auto-secret' })).addSecret('AUTO'); const result = await manager.prepare(); (0, _vitest.expect)(result).toHaveLength(1); (0, _vitest.expect)(result[0].name).toBe('AUTO'); (0, _vitest.expect)(result[0].value).toBe('ok'); }); (0, _vitest.it)('throws when only secrets exist but no providers or connectors', () => { manager = manager.addSecret('MISSING_BACKENDS'); (0, _vitest.expect)(() => manager.build()).toThrow('No connectors registered'); }); (0, _vitest.it)('throws when multiple providers but no default set', () => { manager = manager.addConnector('memory', new _InMemoryConnector.InMemoryConnector({ X: '1' })).addProvider('kube1', new _InMemoryProvider.InMemoryProvider({ name: 's1' })).addProvider('kube2', new _InMemoryProvider.InMemoryProvider({ name: 's2' })).addSecret('X'); (0, _vitest.expect)(() => manager.build()).toThrow('No default provider set, and multiple providers registered'); }); (0, _vitest.it)('throws when multiple connectors but no default set', () => { manager = manager.addConnector('m1', new _InMemoryConnector.InMemoryConnector({ Y: '2' })).addConnector('m2', new _InMemoryConnector.InMemoryConnector({ Y: '2' })).addProvider('kube', new _InMemoryProvider.InMemoryProvider({ name: 's' })).addSecret('Y'); (0, _vitest.expect)(() => manager.build()).toThrow('No default connector set, and multiple connectors registered'); }); (0, _vitest.it)('throws when adding duplicate secret via object form', () => { manager = manager.addConnector('memory', new _InMemoryConnector.InMemoryConnector({})).addProvider('kube', new _InMemoryProvider.InMemoryProvider({ name: 'my-secret' })).setDefaultConnector('memory').setDefaultProvider('kube').addSecret({ name: 'DB_PASSWORD', connector: 'memory', provider: 'kube' }); (0, _vitest.expect)(() => // Attempting to add the same secret again manager.addSecret({ name: 'DB_PASSWORD' })).toThrow('Secret DB_PASSWORD already exists'); }); (0, _vitest.it)('throws when no providers are registered', () => { manager = manager.addConnector('memory', new _InMemoryConnector.InMemoryConnector({ MY_TOKEN: 'secure' })).addSecret('MY_TOKEN'); (0, _vitest.expect)(() => manager.build()).toThrow('No providers registered'); }); }); //# sourceMappingURL=SecretManager.test.js.map