const request = require('supertest'); const express = require('express'); const authRoutes = require('../../routes/authRoutes'); // Mock dependencies jest.mock('../../models/Admin'); jest.mock('../../utils/logger'); describe('Auth Controller', () => { let app; beforeAll(() => { // Setup express app for testing app = express(); app.use(express.json()); app.use('/api/auth', authRoutes); }); describe('POST /api/auth/login', () => { it('should return 400 if username is missing', async () => { const response = await request(app) .post('/api/auth/login') .send({ password: 'test123' }); expect(response.status).toBe(400); expect(response.body.success).toBe(false); expect(response.body.message).toBeDefined(); }); it('should return 400 if password is missing', async () => { const response = await request(app) .post('/api/auth/login') .send({ username: 'admin' }); expect(response.status).toBe(400); expect(response.body.success).toBe(false); expect(response.body.message).toBeDefined(); }); it('should return 400 if both username and password are missing', async () => { const response = await request(app) .post('/api/auth/login') .send({}); expect(response.status).toBe(400); expect(response.body.success).toBe(false); }); }); });