- src/schemas/index.test.ts: 8 tests defining acceptance criteria for BACKEND_SCHEMAS (Plan 03) - src/store/reducer.test.ts: 8 tests defining acceptance criteria for wizardReducer (Plan 04) - Both files fail with "Cannot find module" — correct RED phase, implementation deferred to Plans 03-04
73 lines
2.2 KiB
TypeScript
73 lines
2.2 KiB
TypeScript
import { describe, it, expect } from 'vitest';
|
|
import { BACKEND_SCHEMAS } from './index';
|
|
|
|
describe('Azure Blob Zod schema', () => {
|
|
it('accepts valid account + access key', () => {
|
|
const result = BACKEND_SCHEMAS.azureblob.safeParse({
|
|
account: 'mystorageaccount',
|
|
key: 'dGVzdGtleQ==',
|
|
});
|
|
expect(result.success).toBe(true);
|
|
});
|
|
|
|
it('accepts valid account + sas_url', () => {
|
|
const result = BACKEND_SCHEMAS.azureblob.safeParse({
|
|
account: 'mystorageaccount',
|
|
sas_url: 'https://mystorageaccount.blob.core.windows.net/?sv=2021-01-01',
|
|
});
|
|
expect(result.success).toBe(true);
|
|
});
|
|
|
|
it('rejects empty account (required field)', () => {
|
|
const result = BACKEND_SCHEMAS.azureblob.safeParse({ account: '' });
|
|
expect(result.success).toBe(false);
|
|
});
|
|
|
|
it('rejects missing account (required field)', () => {
|
|
const result = BACKEND_SCHEMAS.azureblob.safeParse({ key: 'dGVzdGtleQ==' });
|
|
expect(result.success).toBe(false);
|
|
});
|
|
});
|
|
|
|
describe('S3 Zod schema', () => {
|
|
it('accepts valid S3 credentials', () => {
|
|
const result = BACKEND_SCHEMAS.s3.safeParse({
|
|
provider: 'AWS',
|
|
access_key_id: 'AKIAIOSFODNN7EXAMPLE',
|
|
secret_access_key: 'wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY',
|
|
region: 'us-east-1',
|
|
});
|
|
expect(result.success).toBe(true);
|
|
});
|
|
|
|
it('rejects missing access_key_id (required field)', () => {
|
|
const result = BACKEND_SCHEMAS.s3.safeParse({
|
|
provider: 'AWS',
|
|
secret_access_key: 'secret',
|
|
region: 'us-east-1',
|
|
});
|
|
expect(result.success).toBe(false);
|
|
});
|
|
});
|
|
|
|
describe('S3-compatible Zod schema', () => {
|
|
it('accepts valid S3-compatible credentials with endpoint', () => {
|
|
const result = BACKEND_SCHEMAS['s3-compatible'].safeParse({
|
|
provider: 'Other',
|
|
access_key_id: 'mykey',
|
|
secret_access_key: 'mysecret',
|
|
endpoint: 'https://s3.wasabisys.com',
|
|
});
|
|
expect(result.success).toBe(true);
|
|
});
|
|
|
|
it('rejects missing endpoint (required for s3-compatible)', () => {
|
|
const result = BACKEND_SCHEMAS['s3-compatible'].safeParse({
|
|
provider: 'Other',
|
|
access_key_id: 'mykey',
|
|
secret_access_key: 'mysecret',
|
|
});
|
|
expect(result.success).toBe(false);
|
|
});
|
|
});
|