mirror of
https://github.com/Syngnat/GoNavi.git
synced 2026-05-14 17:07:35 +08:00
87 lines
2.6 KiB
TypeScript
87 lines
2.6 KiB
TypeScript
import { describe, expect, it } from 'vitest';
|
|
|
|
import { resolveConnectionSecretDraft } from './connectionSecretDraft';
|
|
|
|
describe('resolveConnectionSecretDraft', () => {
|
|
it('keeps an existing stored secret when edit form leaves the field blank', () => {
|
|
const result = resolveConnectionSecretDraft({
|
|
hasSecret: true,
|
|
valueInput: '',
|
|
clearSecret: false,
|
|
});
|
|
|
|
expect(result.value).toBe('');
|
|
expect(result.clearStoredSecret).toBe(false);
|
|
expect(result.keepsStoredSecret).toBe(true);
|
|
expect(result.hasSecretAfterSave).toBe(true);
|
|
});
|
|
|
|
it('replaces the stored secret when a new value is entered', () => {
|
|
const result = resolveConnectionSecretDraft({
|
|
hasSecret: true,
|
|
valueInput: ' mongodb://demo ',
|
|
clearSecret: false,
|
|
trimInput: true,
|
|
});
|
|
|
|
expect(result.value).toBe('mongodb://demo');
|
|
expect(result.clearStoredSecret).toBe(false);
|
|
expect(result.keepsStoredSecret).toBe(false);
|
|
expect(result.hasSecretAfterSave).toBe(true);
|
|
});
|
|
|
|
it('clears the stored secret when explicitly requested', () => {
|
|
const result = resolveConnectionSecretDraft({
|
|
hasSecret: true,
|
|
valueInput: '',
|
|
clearSecret: true,
|
|
});
|
|
|
|
expect(result.value).toBe('');
|
|
expect(result.clearStoredSecret).toBe(true);
|
|
expect(result.keepsStoredSecret).toBe(false);
|
|
expect(result.hasSecretAfterSave).toBe(false);
|
|
});
|
|
|
|
it('prefers a newly entered value over a stale clear toggle', () => {
|
|
const result = resolveConnectionSecretDraft({
|
|
hasSecret: true,
|
|
valueInput: 'new-password',
|
|
clearSecret: true,
|
|
});
|
|
|
|
expect(result.value).toBe('new-password');
|
|
expect(result.clearStoredSecret).toBe(false);
|
|
expect(result.keepsStoredSecret).toBe(false);
|
|
expect(result.hasSecretAfterSave).toBe(true);
|
|
});
|
|
|
|
it('does not emit a clear flag for a brand new blank field', () => {
|
|
const result = resolveConnectionSecretDraft({
|
|
hasSecret: false,
|
|
valueInput: '',
|
|
clearSecret: false,
|
|
});
|
|
|
|
expect(result.value).toBe('');
|
|
expect(result.clearStoredSecret).toBe(false);
|
|
expect(result.keepsStoredSecret).toBe(false);
|
|
expect(result.hasSecretAfterSave).toBe(false);
|
|
});
|
|
|
|
it('supports force clearing stored secrets', () => {
|
|
const result = resolveConnectionSecretDraft({
|
|
hasSecret: true,
|
|
valueInput: 'temporary',
|
|
clearSecret: false,
|
|
forceClear: true,
|
|
});
|
|
|
|
expect(result.value).toBe('');
|
|
expect(result.clearStoredSecret).toBe(true);
|
|
expect(result.keepsStoredSecret).toBe(false);
|
|
expect(result.hasSecretAfterSave).toBe(false);
|
|
});
|
|
});
|
|
|