* feat: restart cmd added in aio service * feat: nestjs config package added * test: fix all broken test case * feat: infra config module add with get-update-reset functionality * test: fix test case failure * feat: update infra configs mutation added * feat: utilise ConfigService in util functions * chore: remove saml stuff * feat: removed saml stuffs * fix: config service precedence * fix: mailer module init with right env value * feat: added mutations and query * feat: add query infra-configs * fix: mailer module init issue * chore: smtp url validation added * fix: all sso disabling is handled * fix: pnpm i without db connection * fix: allowedAuthProviders and enableAndDisableSSO * fix: validateSMTPUrl check * feat: get api added for fetch provider list * feat: feedback resolve * chore: update code comments * fix: uppercase issue of VITE_ALLOWED_AUTH_PROVIDERS * chore: update lockfile * fix: add validation checks for MAILER_ADDRESS_FROM * test: fix test case * chore: feedback resolve * chore: renamed an enum * chore: app shutdown way changed --------- Co-authored-by: Andrew Bastin <andrewbastin.k@gmail.com>
110 lines
3.3 KiB
TypeScript
110 lines
3.3 KiB
TypeScript
import { mockDeep, mockReset } from 'jest-mock-extended';
|
|
import { PrismaService } from 'src/prisma/prisma.service';
|
|
import { InfraConfigService } from './infra-config.service';
|
|
import {
|
|
InfraConfigEnum,
|
|
InfraConfigEnumForClient,
|
|
} from 'src/types/InfraConfig';
|
|
import { INFRA_CONFIG_NOT_FOUND, INFRA_CONFIG_UPDATE_FAILED } from 'src/errors';
|
|
import { ConfigService } from '@nestjs/config';
|
|
import * as helper from './helper';
|
|
|
|
const mockPrisma = mockDeep<PrismaService>();
|
|
const mockConfigService = mockDeep<ConfigService>();
|
|
|
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
// @ts-ignore
|
|
const infraConfigService = new InfraConfigService(
|
|
mockPrisma,
|
|
mockConfigService,
|
|
);
|
|
|
|
beforeEach(() => {
|
|
mockReset(mockPrisma);
|
|
});
|
|
|
|
describe('InfraConfigService', () => {
|
|
describe('update', () => {
|
|
it('should update the infra config', async () => {
|
|
const name = InfraConfigEnum.GOOGLE_CLIENT_ID;
|
|
const value = 'true';
|
|
|
|
mockPrisma.infraConfig.update.mockResolvedValueOnce({
|
|
id: '',
|
|
name,
|
|
value,
|
|
active: true,
|
|
createdOn: new Date(),
|
|
updatedOn: new Date(),
|
|
});
|
|
jest.spyOn(helper, 'stopApp').mockReturnValueOnce();
|
|
|
|
const result = await infraConfigService.update(name, value);
|
|
expect(result).toEqualRight({ name, value });
|
|
});
|
|
|
|
it('should pass correct params to prisma update', async () => {
|
|
const name = InfraConfigEnum.GOOGLE_CLIENT_ID;
|
|
const value = 'true';
|
|
|
|
jest.spyOn(helper, 'stopApp').mockReturnValueOnce();
|
|
|
|
await infraConfigService.update(name, value);
|
|
|
|
expect(mockPrisma.infraConfig.update).toHaveBeenCalledWith({
|
|
where: { name },
|
|
data: { value },
|
|
});
|
|
expect(mockPrisma.infraConfig.update).toHaveBeenCalledTimes(1);
|
|
});
|
|
|
|
it('should throw an error if the infra config update failed', async () => {
|
|
const name = InfraConfigEnum.GOOGLE_CLIENT_ID;
|
|
const value = 'true';
|
|
|
|
mockPrisma.infraConfig.update.mockRejectedValueOnce('null');
|
|
|
|
const result = await infraConfigService.update(name, value);
|
|
expect(result).toEqualLeft(INFRA_CONFIG_UPDATE_FAILED);
|
|
});
|
|
});
|
|
|
|
describe('get', () => {
|
|
it('should get the infra config', async () => {
|
|
const name = InfraConfigEnumForClient.GOOGLE_CLIENT_ID;
|
|
const value = 'true';
|
|
|
|
mockPrisma.infraConfig.findUniqueOrThrow.mockResolvedValueOnce({
|
|
id: '',
|
|
name,
|
|
value,
|
|
active: true,
|
|
createdOn: new Date(),
|
|
updatedOn: new Date(),
|
|
});
|
|
const result = await infraConfigService.get(name);
|
|
expect(result).toEqualRight({ name, value });
|
|
});
|
|
|
|
it('should pass correct params to prisma findUnique', async () => {
|
|
const name = InfraConfigEnumForClient.GOOGLE_CLIENT_ID;
|
|
|
|
await infraConfigService.get(name);
|
|
|
|
expect(mockPrisma.infraConfig.findUniqueOrThrow).toHaveBeenCalledWith({
|
|
where: { name },
|
|
});
|
|
expect(mockPrisma.infraConfig.findUniqueOrThrow).toHaveBeenCalledTimes(1);
|
|
});
|
|
|
|
it('should throw an error if the infra config does not exist', async () => {
|
|
const name = InfraConfigEnumForClient.GOOGLE_CLIENT_ID;
|
|
|
|
mockPrisma.infraConfig.findUniqueOrThrow.mockRejectedValueOnce('null');
|
|
|
|
const result = await infraConfigService.get(name);
|
|
expect(result).toEqualLeft(INFRA_CONFIG_NOT_FOUND);
|
|
});
|
|
});
|
|
});
|