feat(approved-access-domain): QA (#10681)
This commit is contained in:
@ -9,7 +9,9 @@ export class ApprovedAccessDomainException extends CustomException {
|
||||
export enum ApprovedAccessDomainExceptionCode {
|
||||
APPROVED_ACCESS_DOMAIN_NOT_FOUND = 'APPROVED_ACCESS_DOMAIN_NOT_FOUND',
|
||||
APPROVED_ACCESS_DOMAIN_ALREADY_VERIFIED = 'APPROVED_ACCESS_DOMAIN_ALREADY_VERIFIED',
|
||||
APPROVED_ACCESS_DOMAIN_ALREADY_REGISTERED = 'APPROVED_ACCESS_DOMAIN_ALREADY_REGISTERED',
|
||||
APPROVED_ACCESS_DOMAIN_DOES_NOT_MATCH_DOMAIN_EMAIL = 'APPROVED_ACCESS_DOMAIN_DOES_NOT_MATCH_DOMAIN_EMAIL',
|
||||
APPROVED_ACCESS_DOMAIN_VALIDATION_TOKEN_INVALID = 'APPROVED_ACCESS_DOMAIN_VALIDATION_TOKEN_INVALID',
|
||||
APPROVED_ACCESS_DOMAIN_ALREADY_VALIDATED = 'APPROVED_ACCESS_DOMAIN_ALREADY_VALIDATED',
|
||||
APPROVED_ACCESS_DOMAIN_MUST_BE_A_COMPANY_DOMAIN = 'APPROVED_ACCESS_DOMAIN_MUST_BE_A_COMPANY_DOMAIN',
|
||||
}
|
||||
|
||||
@ -19,6 +19,7 @@ import {
|
||||
ApprovedAccessDomainException,
|
||||
ApprovedAccessDomainExceptionCode,
|
||||
} from 'src/engine/core-modules/approved-access-domain/approved-access-domain.exception';
|
||||
import { isWorkDomain } from 'src/utils/is-work-email';
|
||||
|
||||
@Injectable()
|
||||
// eslint-disable-next-line @nx/workspace-inject-workspace-repository
|
||||
@ -142,6 +143,25 @@ export class ApprovedAccessDomainService {
|
||||
fromUser: User,
|
||||
emailToValidateDomain: string,
|
||||
): Promise<ApprovedAccessDomainEntity> {
|
||||
if (!isWorkDomain(domain)) {
|
||||
throw new ApprovedAccessDomainException(
|
||||
'Approved access domain must be a company domain',
|
||||
ApprovedAccessDomainExceptionCode.APPROVED_ACCESS_DOMAIN_MUST_BE_A_COMPANY_DOMAIN,
|
||||
);
|
||||
}
|
||||
|
||||
if (
|
||||
await this.approvedAccessDomainRepository.findOneBy({
|
||||
domain,
|
||||
workspaceId: inWorkspace.id,
|
||||
})
|
||||
) {
|
||||
throw new ApprovedAccessDomainException(
|
||||
'Approved access domain already registered.',
|
||||
ApprovedAccessDomainExceptionCode.APPROVED_ACCESS_DOMAIN_ALREADY_REGISTERED,
|
||||
);
|
||||
}
|
||||
|
||||
const approvedAccessDomain = await this.approvedAccessDomainRepository.save(
|
||||
{
|
||||
workspaceId: inWorkspace.id,
|
||||
@ -171,7 +191,9 @@ export class ApprovedAccessDomainService {
|
||||
|
||||
approvedAccessDomainValidator.assertIsDefinedOrThrow(approvedAccessDomain);
|
||||
|
||||
await this.approvedAccessDomainRepository.delete(approvedAccessDomain);
|
||||
await this.approvedAccessDomainRepository.delete({
|
||||
id: approvedAccessDomain.id,
|
||||
});
|
||||
}
|
||||
|
||||
async getApprovedAccessDomains(workspace: Workspace) {
|
||||
|
||||
@ -113,6 +113,22 @@ describe('ApprovedAccessDomainService', () => {
|
||||
);
|
||||
expect(result).toEqual(expectedApprovedAccessDomain);
|
||||
});
|
||||
it('should throw an exception if approved access domain is not a company domain', async () => {
|
||||
await expect(
|
||||
service.createApprovedAccessDomain(
|
||||
'gmail.com',
|
||||
{ id: 'workspace-id' } as Workspace,
|
||||
{ email: 'user@gmail.com', isEmailVerified: true } as User,
|
||||
'user@gmail.com',
|
||||
),
|
||||
).rejects.toThrowError(
|
||||
new ApprovedAccessDomainException(
|
||||
'Approved access domain must be a company domain',
|
||||
ApprovedAccessDomainExceptionCode.APPROVED_ACCESS_DOMAIN_MUST_BE_A_COMPANY_DOMAIN,
|
||||
),
|
||||
);
|
||||
expect(approvedAccessDomainRepository.save).not.toHaveBeenCalled();
|
||||
});
|
||||
});
|
||||
|
||||
describe('deleteApprovedAccessDomain', () => {
|
||||
@ -140,9 +156,9 @@ describe('ApprovedAccessDomainService', () => {
|
||||
id: approvedAccessDomainId,
|
||||
workspaceId: workspace.id,
|
||||
});
|
||||
expect(approvedAccessDomainRepository.delete).toHaveBeenCalledWith(
|
||||
approvedAccessDomainEntity,
|
||||
);
|
||||
expect(approvedAccessDomainRepository.delete).toHaveBeenCalledWith({
|
||||
id: approvedAccessDomainEntity.id,
|
||||
});
|
||||
});
|
||||
|
||||
it('should throw an error if the approved access domain does not exist', async () => {
|
||||
|
||||
Reference in New Issue
Block a user