All checks were successful
Queue Release Build / prepare (push) Successful in 19s
Deploy Web Apps / deploy (push) Successful in 8m12s
Queue Release Build / build-windows (push) Successful in 27m44s
Queue Release Build / build-linux (push) Successful in 48m1s
Queue Release Build / build-android (push) Successful in 22m7s
Queue Release Build / finalize (push) Successful in 2m42s
66 lines
2.1 KiB
TypeScript
66 lines
2.1 KiB
TypeScript
import {
|
|
describe,
|
|
it,
|
|
expect,
|
|
beforeEach,
|
|
vi
|
|
} from 'vitest';
|
|
import { ProvisionSecretStoreService } from './provision-secret-store.service';
|
|
import { ElectronBridgeService } from '../../../../core/platform/electron/electron-bridge.service';
|
|
|
|
describe('ProvisionSecretStoreService', () => {
|
|
let service: ProvisionSecretStoreService;
|
|
let electronBridge: ElectronBridgeService;
|
|
|
|
beforeEach(() => {
|
|
const sessionStorageMap = new Map<string, string>();
|
|
|
|
vi.stubGlobal('sessionStorage', {
|
|
getItem: (key: string) => sessionStorageMap.get(key) ?? null,
|
|
setItem: (key: string, value: string) => { sessionStorageMap.set(key, value); },
|
|
removeItem: (key: string) => { sessionStorageMap.delete(key); },
|
|
clear: () => { sessionStorageMap.clear(); }
|
|
});
|
|
|
|
electronBridge = {
|
|
isAvailable: false,
|
|
getApi: () => null,
|
|
requireApi: () => {
|
|
throw new Error('Electron API is not available in this runtime.');
|
|
}
|
|
} as ElectronBridgeService;
|
|
|
|
service = new ProvisionSecretStoreService(electronBridge);
|
|
});
|
|
|
|
it('stores and retrieves provision secrets in session storage when electron is unavailable', async () => {
|
|
await service.storeSecret('home-user-1', 'secret-abc');
|
|
await expect(service.getSecret('home-user-1')).resolves.toBe('secret-abc');
|
|
});
|
|
|
|
it('uses electron secure storage when available', async () => {
|
|
const storeProvisionSecret = vi.fn(async () => true);
|
|
const getProvisionSecret = vi.fn(async () => 'electron-secret');
|
|
|
|
electronBridge = {
|
|
isAvailable: true,
|
|
getApi: () => ({
|
|
storeProvisionSecret,
|
|
getProvisionSecret
|
|
}),
|
|
requireApi: () => ({
|
|
storeProvisionSecret,
|
|
getProvisionSecret
|
|
})
|
|
} as unknown as ElectronBridgeService;
|
|
|
|
service = new ProvisionSecretStoreService(electronBridge);
|
|
|
|
await service.storeSecret('home-user-1', 'secret-abc');
|
|
await expect(service.getSecret('home-user-1')).resolves.toBe('electron-secret');
|
|
|
|
expect(storeProvisionSecret).toHaveBeenCalledWith('home-user-1', 'secret-abc');
|
|
expect(getProvisionSecret).toHaveBeenCalledWith('home-user-1');
|
|
});
|
|
});
|