50 lines
1.6 KiB
TypeScript
50 lines
1.6 KiB
TypeScript
import 'reflect-metadata';
|
|
import assert from 'node:assert/strict';
|
|
import test from 'node:test';
|
|
import { validate } from 'class-validator';
|
|
import { CreateRoleDto } from '../../src/administration/roles/dto/create-role.dto';
|
|
import { CreateUserDto } from '../../src/administration/users/dto/create-user.dto';
|
|
|
|
const ROLE_ID = '9c3e6a45-8de3-4acf-a078-7994168231f7';
|
|
const PERMISSION_ID = '35f62a40-5fd0-4ee7-89fc-381c3c0eceaf';
|
|
|
|
test('CreateUserDto accepts a controlled temporary credential and role ids', async () => {
|
|
const dto = Object.assign(new CreateUserDto(), {
|
|
username: 'nuevo.inspector',
|
|
email: 'inspector@example.com',
|
|
password: 'Temporal-segura-2026',
|
|
firstName: 'Nuevo',
|
|
lastName: 'Inspector',
|
|
mustChangePassword: true,
|
|
roleIds: [ROLE_ID],
|
|
});
|
|
|
|
assert.deepEqual(await validate(dto), []);
|
|
});
|
|
|
|
test('CreateUserDto rejects weak passwords and malformed role ids', async () => {
|
|
const dto = Object.assign(new CreateUserDto(), {
|
|
username: 'nuevo inspector',
|
|
password: 'corta',
|
|
firstName: 'Nuevo',
|
|
lastName: 'Inspector',
|
|
roleIds: ['no-es-uuid'],
|
|
});
|
|
|
|
const properties = new Set((await validate(dto)).map((error) => error.property));
|
|
assert.equal(properties.has('username'), true);
|
|
assert.equal(properties.has('password'), true);
|
|
assert.equal(properties.has('roleIds'), true);
|
|
});
|
|
|
|
test('CreateRoleDto validates dynamic permission identifiers', async () => {
|
|
const dto = Object.assign(new CreateRoleDto(), {
|
|
code: 'coordinador_campo',
|
|
name: 'Coordinador de campo',
|
|
description: 'Coordina equipos operativos',
|
|
permissionIds: [PERMISSION_ID],
|
|
});
|
|
|
|
assert.deepEqual(await validate(dto), []);
|
|
});
|