Skip to content
This repository has been archived by the owner on Dec 6, 2024. It is now read-only.

Commit

Permalink
feat: Add user's email to JSON response of egress request (#771)
Browse files Browse the repository at this point in the history
  • Loading branch information
nguyen102 authored Oct 26, 2021
1 parent b10f4b0 commit e3c6c22
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ jest.mock('@aws-ee/base-services/lib/db-service');
jest.mock('@aws-ee/base-services/lib/lock/lock-service');
jest.mock('@aws-ee/base-services/lib/settings/env-settings-service');
jest.mock('../../environment/service-catalog/environment-sc-service');
jest.mock('@aws-ee/base-services/lib/user/user-service');

const AWSMock = require('aws-sdk-mock');
const SettingsServiceMock = require('@aws-ee/base-services/lib/settings/env-settings-service');
Expand All @@ -28,6 +29,7 @@ const JsonSchemaValidationService = require('@aws-ee/base-services/lib/json-sche
const DbServiceMock = require('@aws-ee/base-services/lib/db-service');
const AuditWriterService = require('@aws-ee/base-services/lib/audit/audit-writer-service');
const S3Service = require('@aws-ee/base-services/lib/s3-service');
const UserService = require('@aws-ee/base-services/lib/user/user-service');
const LockService = require('@aws-ee/base-services/lib/lock/lock-service');
const EnvironmentScService = require('../../environment/service-catalog/environment-sc-service');
const DataEgressService = require('../data-egress-service');
Expand All @@ -50,6 +52,7 @@ describe('DataEgressService', () => {
let lockService;
let dbService;
let auditWriterService;
let userService;

const testS3PolicyFn = () => {
return {
Expand Down Expand Up @@ -103,6 +106,7 @@ describe('DataEgressService', () => {
container.register('lockService', new LockService());
container.register('environmentScService', new EnvironmentScService());
container.register('dataEgressService', new DataEgressService());
container.register('userService', new UserService());
await container.initServices();

// Get instance of the service we are testing
Expand All @@ -115,6 +119,7 @@ describe('DataEgressService', () => {
lockService = await container.find('lockService');
dbService = await dataEgressService.service('dbService');
auditWriterService = await container.find('auditWriterService');
userService = await container.find('userService');
});

afterEach(() => {
Expand Down Expand Up @@ -944,6 +949,16 @@ describe('DataEgressService', () => {
callback(null, {});
});

userService.mustFindUser = jest.fn(({ uid }) => {
if (uid === 'createdBy') {
return { email: 'sampleCreatedByUser@example.com' };
}
if (uid === 'updatedBy') {
return { email: 'sampledUpdateByUser@example.com' };
}
return '';
});

dbService.table.get.mockResolvedValue(mockEgressStoreInfo);
const mockRequestContext = { principalIdentifier: { uid: 'createdBy' } };
dataEgressService.lockAndUpdate = jest.fn();
Expand All @@ -958,6 +973,7 @@ describe('DataEgressService', () => {
body: {
created_at: 'createdAt',
created_by: 'createdBy',
created_by_email: 'sampleCreatedByUser@example.com',
egress_store_id: 'id',
egress_store_name: 'egressStoreName',
egress_store_object_list_location:
Expand All @@ -969,6 +985,7 @@ describe('DataEgressService', () => {
status: 'PENDING',
updated_at: expect.anything(),
updated_by: 'createdBy',
updated_by_email: 'sampleCreatedByUser@example.com',
ver: 1,
workspace_id: 'workspaceId',
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ class DataEgressService extends Service {
's3Service',
'environmentScService',
'lockService',
'userService',
]);
}

Expand Down Expand Up @@ -337,6 +338,11 @@ class DataEgressService extends Service {
egressStoreInfo.isAbleToSubmitEgressRequest = false;
egressStoreInfo.egressStoreObjectListLocation = `arn:aws:s3:::${egressStoreObjectList.bucket}/${egressStoreObjectList.key}`;
egressStoreInfo.ver = parseInt(egressStoreInfo.ver, 10) + 1; // parseInt(string, radix) string: The value to parse. radix: An integer between 2 and 36 that represents the radix of the string.

const userService = await this.service('userService');
const createdByUser = await userService.mustFindUser({ uid: egressStoreInfo.createdBy, fields: 'email' });
const updatedByUser = await userService.mustFindUser({ uid: egressStoreInfo.updatedBy, fields: 'email' });

await this.lockAndUpdate(egressStoreDdbLockId, egressStoreInfo.id, egressStoreInfo);

const message = {
Expand All @@ -346,12 +352,14 @@ class DataEgressService extends Service {
egress_store_name: egressStoreInfo.egressStoreName,
created_at: egressStoreInfo.createdAt,
created_by: egressStoreInfo.createdBy,
created_by_email: createdByUser.email,
workspace_id: egressStoreInfo.workspaceId,
project_id: egressStoreInfo.projectId,
s3_bucketname: egressStoreInfo.s3BucketName,
s3_bucketpath: egressStoreInfo.s3BucketPath,
status: egressStoreInfo.status,
updated_by: egressStoreInfo.updatedBy,
updated_by_email: updatedByUser.email,
updated_at: egressStoreInfo.updatedAt,
ver: egressStoreInfo.ver,
};
Expand Down

0 comments on commit e3c6c22

Please sign in to comment.