Initial import from garrytan/gstack@026751e (main snapshot via local relay)
Some checks failed
Workflow Lint / actionlint (push) Has been cancelled
Build CI Image / build (push) Has been cancelled
Skill Docs Freshness / check-freshness (push) Has been cancelled
Periodic Evals / build-image (push) Has been cancelled
Periodic Evals / evals (map[file:test/codex-e2e.test.ts name:e2e-codex]) (push) Has been cancelled
Periodic Evals / evals (map[file:test/gemini-e2e.test.ts name:e2e-gemini]) (push) Has been cancelled
Periodic Evals / evals (map[file:test/skill-e2e-design.test.ts name:e2e-design]) (push) Has been cancelled
Periodic Evals / evals (map[file:test/skill-e2e-plan.test.ts name:e2e-plan]) (push) Has been cancelled
Periodic Evals / evals (map[file:test/skill-e2e-qa-bugs.test.ts name:e2e-qa-bugs]) (push) Has been cancelled
Periodic Evals / evals (map[file:test/skill-e2e-qa-workflow.test.ts name:e2e-qa-workflow]) (push) Has been cancelled
Periodic Evals / evals (map[file:test/skill-e2e-review.test.ts name:e2e-review]) (push) Has been cancelled
Periodic Evals / evals (map[file:test/skill-e2e-workflow.test.ts name:e2e-workflow]) (push) Has been cancelled
Periodic Evals / evals (map[file:test/skill-routing-e2e.test.ts name:e2e-routing]) (push) Has been cancelled

Source: https://github.com/garrytan/gstack/commit/026751e
This commit is contained in:
Rocky
2026-05-19 21:18:17 +02:00
commit 834c6db075
797 changed files with 267839 additions and 0 deletions

View File

@@ -0,0 +1,64 @@
import { describe, test, expect } from 'bun:test';
import { redactProxyUrl, redactUpstream } from '../src/proxy-redact';
describe('redactProxyUrl', () => {
test('replaces user:pass with ***:*** in socks5 URL', () => {
const out = redactProxyUrl('socks5://alice:secret@host.example.com:1080');
expect(out).toContain('***:***');
expect(out).not.toContain('alice');
expect(out).not.toContain('secret');
expect(out).toContain('host.example.com:1080');
});
test('replaces creds in http URL', () => {
const out = redactProxyUrl('http://bob:hunter2@proxy.corp:3128');
expect(out).not.toContain('bob');
expect(out).not.toContain('hunter2');
expect(out).toContain('proxy.corp:3128');
});
test('returns URL unchanged when no creds present', () => {
const out = redactProxyUrl('http://proxy.corp:3128');
expect(out).toContain('proxy.corp:3128');
expect(out).not.toContain('***');
});
test('returns placeholder for malformed input', () => {
expect(redactProxyUrl('not-a-url')).toBe('<malformed proxy url>');
expect(redactProxyUrl('http://')).toBe('<malformed proxy url>');
});
test('returns placeholder for empty/null', () => {
expect(redactProxyUrl(null)).toBe('<no proxy>');
expect(redactProxyUrl(undefined)).toBe('<no proxy>');
expect(redactProxyUrl('')).toBe('<no proxy>');
});
test('does not echo cred bytes when URL is malformed but contains creds', () => {
// Defensive: if input has creds AND is malformed, we still don't echo.
const out = redactProxyUrl('socks5://leaked:password-bad-host');
expect(out).not.toContain('leaked');
expect(out).not.toContain('password');
});
});
describe('redactUpstream', () => {
test('redacts userId and password', () => {
const out = redactUpstream({
host: 'proxy.example.com',
port: 1080,
userId: 'realuser',
password: 'realpass',
});
expect(out.host).toBe('proxy.example.com');
expect(out.port).toBe(1080);
expect(out.userId).toBe('***');
expect(out.password).toBe('***');
});
test('omits userId/password when not present', () => {
const out = redactUpstream({ host: 'proxy.example.com', port: 1080 });
expect(out.userId).toBeUndefined();
expect(out.password).toBeUndefined();
});
});