mirror of
https://github.com/dadosfera/maestro.git
synced 2026-09-06 07:54:49 +00:00
Compare commits
6
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9354738abc | ||
|
|
740540d4dc | ||
|
|
94c9ab7939 | ||
|
|
a211b8593e | ||
|
|
25661613d5 | ||
|
|
3d8ea3576d |
@@ -56,6 +56,8 @@ maestro:
|
||||
redis_tls: "true"
|
||||
cookie_secret: "13cc5e136d3074bcc05bec8697092ec1f5f376bf"
|
||||
firebase_base_url: https://feature-flag-25bf6-default-rtdb.firebaseio.com/prd
|
||||
connections_api_url: https://wv6fw7ayj4.execute-api.us-east-1.amazonaws.com
|
||||
|
||||
autoscaling:
|
||||
enabled: false
|
||||
minReplicas: 1
|
||||
|
||||
Generated
+5
-4
@@ -16,7 +16,7 @@
|
||||
"@aws-sdk/lib-dynamodb": "^3.414.0",
|
||||
"@aws-sdk/signature-v4": "^3.370.0",
|
||||
"@dadosfera/dadosfera-logs": "^1.0.0-beta.4",
|
||||
"@dadosfera/protospack-v2": "^3.40.0-beta.14",
|
||||
"@dadosfera/protospack-v2": "3.40.0",
|
||||
"@grpc/grpc-js": "^1.9.3",
|
||||
"@grpc/proto-loader": "^0.7.9",
|
||||
"@nestjs/cli": "^9.5.0",
|
||||
@@ -1735,9 +1735,10 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@dadosfera/protospack-v2": {
|
||||
"version": "3.40.0-beta.14",
|
||||
"resolved": "https://dadosfera-611330257153.d.codeartifact.us-east-1.amazonaws.com/npm/dadosfera-npm/@dadosfera/protospack-v2/-/protospack-v2-3.40.0-beta.14.tgz",
|
||||
"integrity": "sha512-pv3pxq0x1XcBgf3ajD6QOFRLOduh8iEozKFA3AKlIW4gid+gT4iL0GcU2M+O7h0QFeO4JIzRZe/nEMN82nqk7A==",
|
||||
"version": "3.40.0",
|
||||
"resolved": "https://dadosfera-611330257153.d.codeartifact.us-east-1.amazonaws.com/npm/dadosfera-npm/@dadosfera/protospack-v2/-/protospack-v2-3.40.0.tgz",
|
||||
"integrity": "sha512-tzYAGosFjGUgi3pAvXqv+Eqqjca9tH1kU9kJdRI5d1rLXNimo0fIuPWxWng0C4OBH/2sIgC1WLHseq+DZ6qgdw==",
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"@grpc/grpc-js": "^1.9.3",
|
||||
"rxjs": "^7.5.5"
|
||||
|
||||
+1
-1
@@ -34,7 +34,7 @@
|
||||
"@aws-sdk/lib-dynamodb": "^3.414.0",
|
||||
"@aws-sdk/signature-v4": "^3.370.0",
|
||||
"@dadosfera/dadosfera-logs": "^1.0.0-beta.4",
|
||||
"@dadosfera/protospack-v2": "^3.40.0-beta.14",
|
||||
"@dadosfera/protospack-v2": "3.40.0",
|
||||
"@grpc/grpc-js": "^1.9.3",
|
||||
"@grpc/proto-loader": "^0.7.9",
|
||||
"@nestjs/cli": "^9.5.0",
|
||||
|
||||
@@ -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),
|
||||
);
|
||||
|
||||
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 });
|
||||
return response;
|
||||
} catch (error) {
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
{
|
||||
"extends": "./tsconfig.json",
|
||||
"exclude": ["node_modules", "test", "dist", "**/*spec.ts", "jest.config.ts"]
|
||||
"exclude": ["node_modules", "test", "dist", "**/*spec.ts", "jest.*.ts"]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user