refactor: strengthen client boundaries and quality gates
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
import { BadRequestException } from '@nestjs/common';
|
||||
import { strictValidationPipe } from '../common/strict-validation.pipe';
|
||||
import { ClientCreateUserDto, ClientUserPasswordDto } from './client-user.dto';
|
||||
|
||||
describe('client user DTOs', () => {
|
||||
it('rejects tenant, role and operator identity supplied by a client', async () => {
|
||||
await expect(
|
||||
strictValidationPipe.transform(
|
||||
{
|
||||
displayName: '测试用户',
|
||||
email: 'user@example.com',
|
||||
password: 'StrongPass-2026!',
|
||||
tenantId: 'other',
|
||||
roleCode: 'platform_admin',
|
||||
operatorId: 'other-user',
|
||||
},
|
||||
{ type: 'body', metatype: ClientCreateUserDto, data: undefined },
|
||||
),
|
||||
).rejects.toBeInstanceOf(BadRequestException);
|
||||
});
|
||||
|
||||
it('requires a bounded password', async () => {
|
||||
await expect(
|
||||
strictValidationPipe.transform(
|
||||
{ password: '1234567' },
|
||||
{
|
||||
type: 'body',
|
||||
metatype: ClientUserPasswordDto,
|
||||
data: undefined,
|
||||
},
|
||||
),
|
||||
).rejects.toBeInstanceOf(BadRequestException);
|
||||
});
|
||||
|
||||
it('normalizes optional blank login fields without rejecting the existing client form', async () => {
|
||||
await expect(
|
||||
strictValidationPipe.transform(
|
||||
{ displayName: '测试用户', username: ' user ', email: ' ', phone: '', password: 'StrongPass-2026!' },
|
||||
{ type: 'body', metatype: ClientCreateUserDto, data: undefined },
|
||||
),
|
||||
).resolves.toEqual(expect.objectContaining({ username: 'user', email: undefined, phone: undefined }));
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user