This example shows a simple Express app with a login route. It uses supertest to test logging in with correct and incorrect passwords.
const express = require('express');
const bodyParser = require('body-parser');
const request = require('supertest');
const app = express();
app.use(bodyParser.json());
// Simple user data
const users = [{ username: 'user', password: 'pass' }];
// Login route
app.post('/login', (req, res) => {
const { username, password } = req.body;
const user = users.find(u => u.username === username && u.password === password);
if (user) {
return res.status(200).json({ token: 'fake-jwt-token' });
}
return res.status(401).json({ error: 'Invalid credentials' });
});
// Test suite
describe('Authentication flow', () => {
it('logs in with correct credentials', async () => {
const response = await request(app)
.post('/login')
.send({ username: 'user', password: 'pass' });
expect(response.statusCode).toBe(200);
expect(response.body).toHaveProperty('token');
});
it('fails login with wrong password', async () => {
const response = await request(app)
.post('/login')
.send({ username: 'user', password: 'wrong' });
expect(response.statusCode).toBe(401);
expect(response.body).toHaveProperty('error', 'Invalid credentials');
});
});