60 lines
2.0 KiB
TypeScript
60 lines
2.0 KiB
TypeScript
import { classes } from '@automapper/classes';
|
|
import { AutomapperModule } from '@automapper/nestjs';
|
|
import { Test, TestingModule } from '@nestjs/testing';
|
|
import { OpaDecisionMaker } from '../../adapters/secondaries/opa.decision-maker';
|
|
import { Action } from '../../domain/dtos/action.enum';
|
|
import { ContextItem } from '../../domain/dtos/context-item';
|
|
import { DecisionRequest } from '../../domain/dtos/decision.request';
|
|
import { Domain } from '../../domain/dtos/domain.enum';
|
|
import { DecisionUseCase } from '../../domain/usecases/decision.usecase';
|
|
import { AuthorizationProfile } from '../../mappers/authorization.profile';
|
|
import { DecisionQuery } from '../../queries/decision.query';
|
|
|
|
const mockOpaDecisionMaker = {
|
|
decide: jest.fn().mockResolvedValue(Promise.resolve(true)),
|
|
};
|
|
|
|
describe('DecisionUseCase', () => {
|
|
let decisionUseCase: DecisionUseCase;
|
|
|
|
beforeAll(async () => {
|
|
const module: TestingModule = await Test.createTestingModule({
|
|
imports: [AutomapperModule.forRoot({ strategyInitializer: classes() })],
|
|
providers: [
|
|
{
|
|
provide: OpaDecisionMaker,
|
|
useValue: mockOpaDecisionMaker,
|
|
},
|
|
DecisionUseCase,
|
|
AuthorizationProfile,
|
|
],
|
|
}).compile();
|
|
|
|
decisionUseCase = module.get<DecisionUseCase>(DecisionUseCase);
|
|
});
|
|
|
|
it('should be defined', () => {
|
|
expect(decisionUseCase).toBeDefined();
|
|
});
|
|
|
|
describe('execute', () => {
|
|
it('should validate an authorization', async () => {
|
|
const decisionRequest: DecisionRequest = new DecisionRequest();
|
|
decisionRequest.uuid = 'bb281075-1b98-4456-89d6-c643d3044a91';
|
|
decisionRequest.domain = Domain.USER;
|
|
decisionRequest.action = Action.CREATE;
|
|
decisionRequest.context = [new ContextItem('context1', 'value1')];
|
|
expect(
|
|
decisionUseCase.execute(
|
|
new DecisionQuery(
|
|
decisionRequest.uuid,
|
|
decisionRequest.domain,
|
|
decisionRequest.action,
|
|
decisionRequest.context,
|
|
),
|
|
),
|
|
).toBeTruthy();
|
|
});
|
|
});
|
|
});
|