42 lines
1.2 KiB
TypeScript
42 lines
1.2 KiB
TypeScript
// Google OAuth route validation tests
|
|
import { describe, expect, it } from 'bun:test';
|
|
import { app } from '../index';
|
|
|
|
const baseEnv = {
|
|
JWT_SECRET: 'test-jwt-secret',
|
|
TURSO_DATABASE_URL: 'file:./test.db',
|
|
TURSO_AUTH_TOKEN: 'test-token',
|
|
GOOGLE_CLIENT_ID: 'test-google-client-id',
|
|
GOOGLE_CLIENT_SECRET: 'test-google-client-secret',
|
|
};
|
|
|
|
describe('Auth API - Google OAuth', () => {
|
|
it('should reject request when Google client config is missing', async () => {
|
|
const res = await app.request('/api/auth/google', {
|
|
env: {
|
|
JWT_SECRET: 'test-jwt-secret',
|
|
TURSO_DATABASE_URL: 'file:./test.db',
|
|
TURSO_AUTH_TOKEN: 'test-token',
|
|
},
|
|
});
|
|
|
|
expect(res.status).toBe(400);
|
|
|
|
const data = await res.json();
|
|
expect(data).toHaveProperty('error');
|
|
});
|
|
|
|
it('should redirect to Google when config is provided', async () => {
|
|
const res = await app.request('/api/auth/google', {
|
|
env: baseEnv,
|
|
});
|
|
|
|
expect(res.status).toBe(302);
|
|
|
|
const location = res.headers.get('location');
|
|
expect(location).toContain('https://accounts.google.com/o/oauth2/v2/auth?');
|
|
expect(location).toContain('client_id=test-google-client-id');
|
|
expect(location).toContain('scope=openid');
|
|
});
|
|
});
|