Files
sso-manager-node/nodejs/tests/auth.test.js
T
2026-07-01 11:10:09 -04:00

58 lines
1.5 KiB
JavaScript

'use strict';
const { TEST_CREDS, login, request, app } = require('./setup');
describe('Auth — POST /api/auth/login', () => {
test('valid credentials return a token', async () => {
const res = await request(app)
.post('/api/auth/login')
.send(TEST_CREDS);
expect(res.status).toBe(200);
expect(res.body).toHaveProperty('token');
expect(typeof res.body.token).toBe('string');
expect(res.body.token.length).toBeGreaterThan(0);
});
test('wrong password returns 401', async () => {
const res = await request(app)
.post('/api/auth/login')
.send({ uid: TEST_CREDS.uid, password: 'wrongpassword' });
expect(res.status).toBe(401);
});
test('unknown user returns 401', async () => {
const res = await request(app)
.post('/api/auth/login')
.send({ uid: 'no_such_user_xyz', password: 'whatever' });
expect(res.status).toBe(401);
});
test('missing body fields returns an error', async () => {
const res = await request(app)
.post('/api/auth/login')
.send({});
expect(res.status).toBeGreaterThanOrEqual(400);
});
});
describe('Auth — POST /api/auth/logout', () => {
test('logout with a valid token returns 200', async () => {
const token = await login();
const res = await request(app)
.post('/api/auth/logout')
.set('auth-token', token);
expect(res.status).toBe(200);
expect(res.body).toHaveProperty('message');
});
test('logout without a token still returns 200', async () => {
const res = await request(app).post('/api/auth/logout');
expect(res.status).toBe(200);
});
});