diff --git a/gateway/src/routes/admin-dashboard.ts b/gateway/src/routes/admin-dashboard.ts
index 5bf257a..ce41d10 100644
--- a/gateway/src/routes/admin-dashboard.ts
+++ b/gateway/src/routes/admin-dashboard.ts
@@ -147,7 +147,7 @@ export function createAdminDashboardRoutes(
-
+
@@ -258,7 +258,7 @@ export function createAdminDashboardRoutes(
-
+
@@ -340,7 +340,7 @@ export function createAdminDashboardRoutes(
description: description || null,
});
res.redirect('/admin/dashboard/access?msg=Rule+added');
- } catch (_e) {
+ } catch {
res.redirect('/admin/dashboard/access?msg=Failed+to+add+rule');
}
});
@@ -1053,7 +1053,7 @@ export function createAdminDashboardRoutes(
-
+
diff --git a/gateway/src/routes/admin.proxy.test.ts b/gateway/src/routes/admin.proxy.test.ts
index 0b0f7b6..aa4751c 100644
--- a/gateway/src/routes/admin.proxy.test.ts
+++ b/gateway/src/routes/admin.proxy.test.ts
@@ -65,10 +65,10 @@ describe('Admin Proxy Origins', () => {
const res = await request(app)
.post('/admin/proxy/origins')
.set(authHeader())
- .send({ origin: 'https://search.arcnode.xyz', name: 'SearXNG' });
+ .send({ origin: 'https://search.example.com', name: 'SearXNG' });
expect(res.status).toBe(201);
- expect(res.body.origin).toBe('https://search.arcnode.xyz');
+ expect(res.body.origin).toBe('https://search.example.com');
expect(res.body.name).toBe('SearXNG');
expect(res.body.id).toBeGreaterThan(0);
});
@@ -95,7 +95,7 @@ describe('Admin Proxy Origins', () => {
const res = await request(app)
.post('/admin/proxy/origins')
.set(authHeader())
- .send({ origin: 'https://search.arcnode.xyz/path', name: 'Bad' });
+ .send({ origin: 'https://search.example.com/path', name: 'Bad' });
expect(res.status).toBe(400);
});
@@ -104,12 +104,12 @@ describe('Admin Proxy Origins', () => {
await request(app)
.post('/admin/proxy/origins')
.set(authHeader())
- .send({ origin: 'https://search.arcnode.xyz', name: 'SearXNG' });
+ .send({ origin: 'https://search.example.com', name: 'SearXNG' });
const res = await request(app)
.post('/admin/proxy/origins')
.set(authHeader())
- .send({ origin: 'https://search.arcnode.xyz', name: 'Duplicate' });
+ .send({ origin: 'https://search.example.com', name: 'Duplicate' });
expect(res.status).toBe(409);
});
@@ -118,11 +118,11 @@ describe('Admin Proxy Origins', () => {
await request(app)
.post('/admin/proxy/origins')
.set(authHeader())
- .send({ origin: 'https://search.arcnode.xyz', name: 'SearXNG' });
+ .send({ origin: 'https://search.example.com', name: 'SearXNG' });
await request(app)
.post('/admin/proxy/origins')
.set(authHeader())
- .send({ origin: 'https://element.arcnode.xyz', name: 'Element' });
+ .send({ origin: 'https://element.example.com', name: 'Element' });
const res = await request(app)
.get('/admin/proxy/origins')
@@ -136,7 +136,7 @@ describe('Admin Proxy Origins', () => {
const created = await request(app)
.post('/admin/proxy/origins')
.set(authHeader())
- .send({ origin: 'https://search.arcnode.xyz', name: 'SearXNG' });
+ .send({ origin: 'https://search.example.com', name: 'SearXNG' });
const res = await request(app)
.delete(`/admin/proxy/origins/${created.body.id}`)
@@ -246,13 +246,13 @@ describe('Admin Access Rules API', () => {
origin_id: null,
rule_type: 'allow',
subject_type: 'handle_pattern',
- subject_value: '*.arcnode.xyz',
+ subject_value: '*.example.com',
description: 'PDS users',
});
expect(res.status).toBe(201);
expect(res.body.rule_type).toBe('allow');
- expect(res.body.subject_value).toBe('*.arcnode.xyz');
+ expect(res.body.subject_value).toBe('*.example.com');
});
it('should create a deny rule', async () => {
@@ -362,7 +362,7 @@ describe('Admin Access Rules API', () => {
const origin = await request(app)
.post('/admin/proxy/origins')
.set(authHeader())
- .send({ origin: 'https://search.arcnode.xyz', name: 'SearXNG' });
+ .send({ origin: 'https://search.example.com', name: 'SearXNG' });
await request(app)
.post('/admin/proxy/access')
@@ -380,7 +380,7 @@ describe('Admin Access Rules API', () => {
origin_id: null,
rule_type: 'allow',
subject_type: 'handle_pattern',
- subject_value: '*.arcnode.xyz',
+ subject_value: '*.example.com',
});
const res = await request(app)
@@ -397,7 +397,7 @@ describe('Admin Access Rules API', () => {
const origin = await request(app)
.post('/admin/proxy/origins')
.set(authHeader())
- .send({ origin: 'https://search.arcnode.xyz', name: 'SearXNG' });
+ .send({ origin: 'https://search.example.com', name: 'SearXNG' });
await request(app)
.post('/admin/proxy/access')
@@ -406,13 +406,13 @@ describe('Admin Access Rules API', () => {
origin_id: null,
rule_type: 'allow',
subject_type: 'handle_pattern',
- subject_value: '*.arcnode.xyz',
+ subject_value: '*.example.com',
});
const allowed = await request(app)
.post('/admin/proxy/access/check')
.set(authHeader())
- .send({ did: 'did:plc:test', handle: 'bkb.arcnode.xyz', origin_id: origin.body.id });
+ .send({ did: 'did:plc:test', handle: 'user.example.com', origin_id: origin.body.id });
expect(allowed.status).toBe(200);
expect(allowed.body.allowed).toBe(true);
@@ -430,7 +430,7 @@ describe('Admin Access Rules API', () => {
const origin = await request(app)
.post('/admin/proxy/origins')
.set(authHeader())
- .send({ origin: 'https://search.arcnode.xyz', name: 'SearXNG' });
+ .send({ origin: 'https://search.example.com', name: 'SearXNG' });
const res = await request(app)
.post('/admin/proxy/access/check')
diff --git a/gateway/src/routes/oidc/authorize.test.ts b/gateway/src/routes/oidc/authorize.test.ts
index 6edc48d..0bc7f48 100644
--- a/gateway/src/routes/oidc/authorize.test.ts
+++ b/gateway/src/routes/oidc/authorize.test.ts
@@ -159,10 +159,8 @@ describe('POST /oauth/authorize/passkey', () => {
it('should return 400 for already-used auth code', async () => {
createPendingAuthCode(db, 'used-code');
- // Mark it as used
+ // Mark it as used via raw SQL since there's no direct method
db.updateAuthorizationCodeUser('used-code', 'did:plc:old', 'old.bsky.social');
- const authData = db.getAuthorizationCode('used-code');
- // Manually mark as used via raw SQL since there's no direct method
db['db'].prepare('UPDATE authorization_codes SET used = 1 WHERE code = ?').run('used-code');
const res = await request(app)
diff --git a/gateway/src/utils/proxy-auth.test.ts b/gateway/src/utils/proxy-auth.test.ts
index 6fd5d48..825fdc2 100644
--- a/gateway/src/utils/proxy-auth.test.ts
+++ b/gateway/src/utils/proxy-auth.test.ts
@@ -85,21 +85,21 @@ describe('Auth Ticket', () => {
it('should create and verify an auth ticket', () => {
const ticket = createAuthTicket(
'session-789', 'did:plc:abc123', 'user.bsky.social',
- 'https://search.arcnode.xyz', TEST_SECRET,
+ 'https://search.example.com', TEST_SECRET,
);
const result = verifyAuthTicket(ticket, TEST_SECRET);
expect(result).not.toBeNull();
expect(result!.sid).toBe('session-789');
expect(result!.did).toBe('did:plc:abc123');
expect(result!.handle).toBe('user.bsky.social');
- expect(result!.origin).toBe('https://search.arcnode.xyz');
+ expect(result!.origin).toBe('https://search.example.com');
});
it('should reject an expired ticket', () => {
vi.useFakeTimers();
const ticket = createAuthTicket(
'session-789', 'did:plc:abc123', 'user.bsky.social',
- 'https://search.arcnode.xyz', TEST_SECRET,
+ 'https://search.example.com', TEST_SECRET,
);
// Advance past 60s expiry
vi.advanceTimersByTime(61 * 1000);
@@ -111,7 +111,7 @@ describe('Auth Ticket', () => {
it('should reject a ticket with wrong origin', () => {
const ticket = createAuthTicket(
'session-789', 'did:plc:abc123', 'user.bsky.social',
- 'https://search.arcnode.xyz', TEST_SECRET,
+ 'https://search.example.com', TEST_SECRET,
);
const result = verifyAuthTicket(ticket, TEST_SECRET, 'https://evil.example.com');
expect(result).toBeNull();
@@ -120,9 +120,9 @@ describe('Auth Ticket', () => {
it('should accept a ticket with matching expected origin', () => {
const ticket = createAuthTicket(
'session-789', 'did:plc:abc123', 'user.bsky.social',
- 'https://search.arcnode.xyz', TEST_SECRET,
+ 'https://search.example.com', TEST_SECRET,
);
- const result = verifyAuthTicket(ticket, TEST_SECRET, 'https://search.arcnode.xyz');
+ const result = verifyAuthTicket(ticket, TEST_SECRET, 'https://search.example.com');
expect(result).not.toBeNull();
expect(result!.sid).toBe('session-789');
});
@@ -130,7 +130,7 @@ describe('Auth Ticket', () => {
it('should reject a tampered ticket', () => {
const ticket = createAuthTicket(
'session-789', 'did:plc:abc123', 'user.bsky.social',
- 'https://search.arcnode.xyz', TEST_SECRET,
+ 'https://search.example.com', TEST_SECRET,
);
const tampered = ticket.slice(0, -1) + 'x';
const result = verifyAuthTicket(tampered, TEST_SECRET);
@@ -164,11 +164,11 @@ describe('parseCookies', () => {
});
describe('isAllowedRedirect', () => {
- const allowed = ['https://search.arcnode.xyz', 'https://element.arcnode.xyz'];
+ const allowed = ['https://search.example.com', 'https://element.example.com'];
it('should allow a URL with an allowed origin', () => {
- expect(isAllowedRedirect('https://search.arcnode.xyz/some/path', allowed)).toBe(true);
- expect(isAllowedRedirect('https://element.arcnode.xyz/', allowed)).toBe(true);
+ expect(isAllowedRedirect('https://search.example.com/some/path', allowed)).toBe(true);
+ expect(isAllowedRedirect('https://element.example.com/', allowed)).toBe(true);
});
it('should reject a URL with a disallowed origin', () => {
@@ -180,17 +180,17 @@ describe('isAllowedRedirect', () => {
});
it('should reject a URL with different port', () => {
- expect(isAllowedRedirect('https://search.arcnode.xyz:8443/path', allowed)).toBe(false);
+ expect(isAllowedRedirect('https://search.example.com:8443/path', allowed)).toBe(false);
});
it('should reject a URL with different scheme', () => {
- expect(isAllowedRedirect('http://search.arcnode.xyz/path', allowed)).toBe(false);
+ expect(isAllowedRedirect('http://search.example.com/path', allowed)).toBe(false);
});
});
describe('extractOrigin', () => {
it('should extract origin from a full URL', () => {
- expect(extractOrigin('https://search.arcnode.xyz/some/path?q=test')).toBe('https://search.arcnode.xyz');
+ expect(extractOrigin('https://search.example.com/some/path?q=test')).toBe('https://search.example.com');
});
it('should return null for invalid URL', () => {