mirror of
https://github.com/dadosfera/maestro.git
synced 2026-10-25 18:59:09 +00:00
Compare commits
1
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f78c5a00dd |
@@ -0,0 +1,57 @@
|
|||||||
|
import { HttpException, HttpStatus } from '@nestjs/common';
|
||||||
|
import { Metadata } from '@grpc/grpc-js';
|
||||||
|
import { of } from 'rxjs';
|
||||||
|
|
||||||
|
import { AuthClientService } from './auth.service';
|
||||||
|
|
||||||
|
describe('AuthClientService.resetUsers', () => {
|
||||||
|
const logger = {
|
||||||
|
info: jest.fn(),
|
||||||
|
debug: jest.fn(),
|
||||||
|
error: jest.fn(),
|
||||||
|
};
|
||||||
|
const resetUser = jest.fn();
|
||||||
|
let service: AuthClientService;
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
jest.clearAllMocks();
|
||||||
|
service = new AuthClientService({ logger } as any, {} as any);
|
||||||
|
(service as any).authService = { ResetUser: resetUser };
|
||||||
|
});
|
||||||
|
|
||||||
|
it('returns the DUC response when every requested user was reset', async () => {
|
||||||
|
const response = {
|
||||||
|
message: 'Users reset successfully',
|
||||||
|
successfulUsers: ['user-1'],
|
||||||
|
failedUsers: [],
|
||||||
|
};
|
||||||
|
resetUser.mockReturnValue(of(response));
|
||||||
|
|
||||||
|
await expect(
|
||||||
|
service.resetUsers(['user-1'], new Metadata()),
|
||||||
|
).resolves.toEqual(response);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('returns a non-2xx error instead of masking failed resets', async () => {
|
||||||
|
const response = {
|
||||||
|
message: 'Some users failed',
|
||||||
|
successfulUsers: ['user-1'],
|
||||||
|
failedUsers: ['user-2'],
|
||||||
|
};
|
||||||
|
resetUser.mockReturnValue(of(response));
|
||||||
|
|
||||||
|
try {
|
||||||
|
await service.resetUsers(['user-1', 'user-2'], new Metadata());
|
||||||
|
fail('Expected resetUsers to reject');
|
||||||
|
} catch (error) {
|
||||||
|
expect(error).toBeInstanceOf(HttpException);
|
||||||
|
expect((error as HttpException).getStatus()).toBe(HttpStatus.BAD_GATEWAY);
|
||||||
|
expect((error as HttpException).getResponse()).toEqual({
|
||||||
|
statusCode: HttpStatus.BAD_GATEWAY,
|
||||||
|
message: 'Failed to reset MFA for one or more users.',
|
||||||
|
successfulUsers: ['user-1'],
|
||||||
|
failedUsers: ['user-2'],
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
@@ -295,6 +295,22 @@ export class AuthClientService implements OnModuleInit {
|
|||||||
this.authService.ResetUser({ users }, metadata),
|
this.authService.ResetUser({ users }, metadata),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
if (response.failedUsers?.length > 0) {
|
||||||
|
this.logger.error('resetUsers - Partial or total failure', {
|
||||||
|
successfulUsers: response.successfulUsers,
|
||||||
|
failedUsers: response.failedUsers,
|
||||||
|
});
|
||||||
|
throw new HttpException(
|
||||||
|
{
|
||||||
|
statusCode: HttpStatus.BAD_GATEWAY,
|
||||||
|
message: 'Failed to reset MFA for one or more users.',
|
||||||
|
successfulUsers: response.successfulUsers,
|
||||||
|
failedUsers: response.failedUsers,
|
||||||
|
},
|
||||||
|
HttpStatus.BAD_GATEWAY,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
this.logger.info('resetUsers - Success', { response });
|
this.logger.info('resetUsers - Success', { response });
|
||||||
return response;
|
return response;
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
|||||||
Reference in New Issue
Block a user