mirror of
https://github.com/mountain-loop/yaak.git
synced 2026-01-29 08:42:08 -05:00
Handle undefined username/password values by defaulting to empty string, preventing "undefined" from being encoded in the Authorization header. Fixes https://feedback.yaak.app/p/strange-basic-auth-behaviour-in-202612 Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
78 lines
2.2 KiB
TypeScript
78 lines
2.2 KiB
TypeScript
import type { Context } from '@yaakapp/api';
|
|
import { describe, expect, test } from 'vitest';
|
|
import { plugin } from '../src';
|
|
|
|
const ctx = {} as Context;
|
|
|
|
describe('auth-basic', () => {
|
|
test('Both username and password', async () => {
|
|
expect(
|
|
await plugin.authentication?.onApply(ctx, {
|
|
values: { username: 'user', password: 'pass' },
|
|
headers: [],
|
|
url: 'https://yaak.app',
|
|
method: 'POST',
|
|
contextId: '111',
|
|
}),
|
|
).toEqual({
|
|
setHeaders: [{ name: 'Authorization', value: `Basic ${Buffer.from('user:pass').toString('base64')}` }],
|
|
});
|
|
});
|
|
|
|
test('Empty password', async () => {
|
|
expect(
|
|
await plugin.authentication?.onApply(ctx, {
|
|
values: { username: 'apikey', password: '' },
|
|
headers: [],
|
|
url: 'https://yaak.app',
|
|
method: 'POST',
|
|
contextId: '111',
|
|
}),
|
|
).toEqual({
|
|
setHeaders: [{ name: 'Authorization', value: `Basic ${Buffer.from('apikey:').toString('base64')}` }],
|
|
});
|
|
});
|
|
|
|
test('Missing password (undefined)', async () => {
|
|
expect(
|
|
await plugin.authentication?.onApply(ctx, {
|
|
values: { username: 'apikey' },
|
|
headers: [],
|
|
url: 'https://yaak.app',
|
|
method: 'POST',
|
|
contextId: '111',
|
|
}),
|
|
).toEqual({
|
|
setHeaders: [{ name: 'Authorization', value: `Basic ${Buffer.from('apikey:').toString('base64')}` }],
|
|
});
|
|
});
|
|
|
|
test('Missing username (undefined)', async () => {
|
|
expect(
|
|
await plugin.authentication?.onApply(ctx, {
|
|
values: { password: 'secret' },
|
|
headers: [],
|
|
url: 'https://yaak.app',
|
|
method: 'POST',
|
|
contextId: '111',
|
|
}),
|
|
).toEqual({
|
|
setHeaders: [{ name: 'Authorization', value: `Basic ${Buffer.from(':secret').toString('base64')}` }],
|
|
});
|
|
});
|
|
|
|
test('No values (both undefined)', async () => {
|
|
expect(
|
|
await plugin.authentication?.onApply(ctx, {
|
|
values: {},
|
|
headers: [],
|
|
url: 'https://yaak.app',
|
|
method: 'POST',
|
|
contextId: '111',
|
|
}),
|
|
).toEqual({
|
|
setHeaders: [{ name: 'Authorization', value: `Basic ${Buffer.from(':').toString('base64')}` }],
|
|
});
|
|
});
|
|
});
|