add missing unit test suite

This commit is contained in:
Jarek Krochmalski committed 2026-08-22 09:09:50 +02:00
1 parent 7227b334f9
commit 5f9e6bde3c
160 files changed
+19260 -1164

No files matched your search

+35
View File
@@ -0,0 +1,35 @@
/**
* Regression test for #1273 — HTTPS token auth with an empty username.
*
* A token credential with a blank username produced a Basic header of
* base64(":token"). GitHub rejects that with 401 and git falls back to an
* interactive prompt, dying with "could not read Username ... terminal prompts
* disabled". buildBasicAuthHeader must default an empty username to a non-empty
* placeholder (`x-access-token`) so GitHub accepts the header.
*/
import { describe, test, expect } from 'bun:test';
import { buildBasicAuthHeader } from '../src/lib/server/git-auth';
function decode(header: string): string {
const b64 = header.replace(/^Authorization: Basic /, '');
return Buffer.from(b64, 'base64').toString('utf8');
}
describe('buildBasicAuthHeader (#1273)', () => {
test('empty username defaults to x-access-token (not base64(":token"))', () => {
const header = buildBasicAuthHeader('', 'ghp_sometoken');
// The bug: empty username → "..:token". The fix: "x-access-token:token".
expect(decode(header)).toBe('x-access-token:ghp_sometoken');
expect(decode(header).startsWith(':')).toBe(false);
});
test('a user-supplied username is preserved', () => {
const header = buildBasicAuthHeader('user', 'ghp_sometoken');
expect(decode(header)).toBe('user:ghp_sometoken');
});
test('produces a well-formed Basic Authorization header', () => {
const header = buildBasicAuthHeader('x-access-token', 'tok');
expect(header).toBe(`Authorization: Basic ${Buffer.from('x-access-token:tok').toString('base64')}`);
});
});