Introduce repository pattern across multiple services, including `favorites`, `tags`, `sessions`, `reports`, `auth`, and more. Decouple crypto functionalities into modular services like `HashingService`, `JwtService`, and `EncryptionService`. Improve testability and maintainability by simplifying dependencies and consolidating utility logic.
60 lines
1.6 KiB
TypeScript
60 lines
1.6 KiB
TypeScript
import { Test, TestingModule } from "@nestjs/testing";
|
|
import { RbacService } from "./rbac.service";
|
|
import { RbacRepository } from "./repositories/rbac.repository";
|
|
|
|
describe("RbacService", () => {
|
|
let service: RbacService;
|
|
let repository: RbacRepository;
|
|
|
|
const mockRbacRepository = {
|
|
findRolesByUserId: jest.fn(),
|
|
findPermissionsByUserId: jest.fn(),
|
|
};
|
|
|
|
beforeEach(async () => {
|
|
jest.clearAllMocks();
|
|
const module: TestingModule = await Test.createTestingModule({
|
|
providers: [
|
|
RbacService,
|
|
{
|
|
provide: RbacRepository,
|
|
useValue: mockRbacRepository,
|
|
},
|
|
],
|
|
}).compile();
|
|
|
|
service = module.get<RbacService>(RbacService);
|
|
repository = module.get<RbacRepository>(RbacRepository);
|
|
});
|
|
|
|
it("should be defined", () => {
|
|
expect(service).toBeDefined();
|
|
});
|
|
|
|
describe("getUserRoles", () => {
|
|
it("should return user roles", async () => {
|
|
const userId = "user-id";
|
|
const mockRoles = ["admin", "user"];
|
|
mockRbacRepository.findRolesByUserId.mockResolvedValue(mockRoles);
|
|
|
|
const result = await service.getUserRoles(userId);
|
|
|
|
expect(result).toEqual(mockRoles);
|
|
expect(repository.findRolesByUserId).toHaveBeenCalledWith(userId);
|
|
});
|
|
});
|
|
|
|
describe("getUserPermissions", () => {
|
|
it("should return user permissions", async () => {
|
|
const userId = "user-id";
|
|
const mockPermissions = ["read", "write"];
|
|
mockRbacRepository.findPermissionsByUserId.mockResolvedValue(mockPermissions);
|
|
|
|
const result = await service.getUserPermissions(userId);
|
|
|
|
expect(result).toEqual(mockPermissions);
|
|
expect(repository.findPermissionsByUserId).toHaveBeenCalledWith(userId);
|
|
});
|
|
});
|
|
});
|