test(server): add unit tests for requireLocalUser guard
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
import { describe, it, expect, vi } from 'vitest';
|
||||
import { requireLocalUser } from './auth.js';
|
||||
|
||||
function mockRequest(homeInstance: string | null) {
|
||||
return { homeInstance } as any;
|
||||
}
|
||||
|
||||
function mockReply() {
|
||||
const reply: any = {};
|
||||
reply.code = vi.fn().mockReturnValue(reply);
|
||||
reply.send = vi.fn().mockReturnValue(reply);
|
||||
return reply;
|
||||
}
|
||||
|
||||
describe('requireLocalUser', () => {
|
||||
it('passes through for local users (homeInstance is null)', async () => {
|
||||
const request = mockRequest(null);
|
||||
const reply = mockReply();
|
||||
|
||||
await requireLocalUser(request, reply);
|
||||
|
||||
expect(reply.code).not.toHaveBeenCalled();
|
||||
expect(reply.send).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it('returns 403 for federated users (homeInstance is set)', async () => {
|
||||
const request = mockRequest('nova.ddns.net');
|
||||
const reply = mockReply();
|
||||
|
||||
await requireLocalUser(request, reply);
|
||||
|
||||
expect(reply.code).toHaveBeenCalledWith(403);
|
||||
expect(reply.send).toHaveBeenCalledWith({
|
||||
error: 'Federated users must use their home instance for DM operations',
|
||||
statusCode: 403,
|
||||
});
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user