kubricate
Version:
A TypeScript framework for building reusable, type-safe Kubernetes infrastructure — without the YAML mess.
68 lines (66 loc) • 2.96 kB
JavaScript
;
var _vitest = /*#__PURE__*/require("vitest");
var _SecretInjectionBuilder = /*#__PURE__*/require("./SecretInjectionBuilder.js");
var _SecretsInjectionContext = /*#__PURE__*/require("./SecretsInjectionContext.js");
/* eslint-disable @typescript-eslint/no-explicit-any */
(0, _vitest.describe)('SecretsInjectionContext', () => {
let mockStack;
let mockManager;
// eslint-disable-next-line @typescript-eslint/no-unused-vars
let builderInstance;
(0, _vitest.beforeEach)(() => {
mockStack = {
registerSecretInjection: _vitest.vi.fn(),
getComposer: _vitest.vi.fn().mockReturnValue({
findResourceIdsByKind: () => ['my-deployment']
})
};
builderInstance = {
resolveInjection: _vitest.vi.fn()
};
mockManager = {
resolveProviderFor: _vitest.vi.fn().mockImplementation(key => ({
providerInstance: {
supportedStrategies: ['env'],
targetKind: 'Deployment',
getTargetPath: _vitest.vi.fn(() => ['spec.template.spec.containers[0].env'])
},
providerId: `provider-${key}`
}))
};
});
(0, _vitest.it)('should set the default resource ID', () => {
const ctx = new _SecretsInjectionContext.SecretsInjectionContext(mockStack, mockManager, 99);
ctx.setDefaultResourceId('default-deploy');
const result = ctx.secrets('MY_SECRET');
(0, _vitest.expect)(result['ctx'].defaultResourceId).toBe('default-deploy');
});
(0, _vitest.it)('should create a builder and push it to the list', () => {
const ctx = new _SecretsInjectionContext.SecretsInjectionContext(mockStack, mockManager, 99);
const builder = ctx.secrets('MY_SECRET');
(0, _vitest.expect)(builder).toBeInstanceOf(_SecretInjectionBuilder.SecretInjectionBuilder);
(0, _vitest.expect)(ctx['builders']).toHaveLength(1);
});
(0, _vitest.it)('should resolve all builder injections on resolveAll()', () => {
const ctx = new _SecretsInjectionContext.SecretsInjectionContext(mockStack, mockManager, 99);
// Monkey patch builder manually to test call propagation
const builder1 = {
resolveInjection: _vitest.vi.fn()
};
const builder2 = {
resolveInjection: _vitest.vi.fn()
};
ctx['builders'].push(builder1, builder2);
ctx.resolveAll();
(0, _vitest.expect)(builder1.resolveInjection).toHaveBeenCalled();
(0, _vitest.expect)(builder2.resolveInjection).toHaveBeenCalled();
});
(0, _vitest.it)('builder returned by .secrets() should include correct context and provider', () => {
const ctx = new _SecretsInjectionContext.SecretsInjectionContext(mockStack, mockManager, 88);
const builder = ctx.secrets('MY_SECRET');
(0, _vitest.expect)(builder['secretName']).toBe('MY_SECRET');
(0, _vitest.expect)(builder['ctx'].secretManagerId).toBe(88);
(0, _vitest.expect)(builder['ctx'].providerId).toBe('provider-MY_SECRET');
});
});
//# sourceMappingURL=SecretsInjectionContext.test.js.map