mirror of
https://github.com/Abdulazizzn/n8n-enterprise-unlocked.git
synced 2025-12-17 18:12:04 +00:00
refactor(core): Use DI in source-control. add more tests (#12554)
This commit is contained in:
committed by
GitHub
parent
b2cbed9865
commit
25a79ccf40
@@ -10,6 +10,7 @@ import fsp from 'node:fs/promises';
|
||||
import { CredentialsRepository } from '@/databases/repositories/credentials.repository';
|
||||
import { ProjectRepository } from '@/databases/repositories/project.repository';
|
||||
import { SharedCredentialsRepository } from '@/databases/repositories/shared-credentials.repository';
|
||||
import { UserRepository } from '@/databases/repositories/user.repository';
|
||||
import { SourceControlImportService } from '@/environments.ee/source-control/source-control-import.service.ee';
|
||||
import type { ExportableCredential } from '@/environments.ee/source-control/types/exportable-credential';
|
||||
|
||||
@@ -21,20 +22,36 @@ import { randomCredentialPayload } from '../shared/random';
|
||||
import * as testDb from '../shared/test-db';
|
||||
|
||||
describe('SourceControlImportService', () => {
|
||||
let credentialsRepository: CredentialsRepository;
|
||||
let projectRepository: ProjectRepository;
|
||||
let sharedCredentialsRepository: SharedCredentialsRepository;
|
||||
let userRepository: UserRepository;
|
||||
let service: SourceControlImportService;
|
||||
const cipher = mockInstance(Cipher);
|
||||
|
||||
beforeAll(async () => {
|
||||
await testDb.init();
|
||||
|
||||
credentialsRepository = Container.get(CredentialsRepository);
|
||||
projectRepository = Container.get(ProjectRepository);
|
||||
sharedCredentialsRepository = Container.get(SharedCredentialsRepository);
|
||||
userRepository = Container.get(UserRepository);
|
||||
service = new SourceControlImportService(
|
||||
mock(),
|
||||
mock(),
|
||||
mock(),
|
||||
mock(),
|
||||
credentialsRepository,
|
||||
projectRepository,
|
||||
mock(),
|
||||
mock(),
|
||||
sharedCredentialsRepository,
|
||||
userRepository,
|
||||
mock(),
|
||||
mock(),
|
||||
mock(),
|
||||
mock<InstanceSettings>({ n8nFolder: '/some-path' }),
|
||||
);
|
||||
|
||||
await testDb.init();
|
||||
});
|
||||
|
||||
afterEach(async () => {
|
||||
@@ -75,7 +92,7 @@ describe('SourceControlImportService', () => {
|
||||
|
||||
const personalProject = await getPersonalProject(member);
|
||||
|
||||
const sharing = await Container.get(SharedCredentialsRepository).findOneBy({
|
||||
const sharing = await sharedCredentialsRepository.findOneBy({
|
||||
credentialsId: CREDENTIAL_ID,
|
||||
projectId: personalProject.id,
|
||||
role: 'credential:owner',
|
||||
@@ -112,7 +129,7 @@ describe('SourceControlImportService', () => {
|
||||
|
||||
const personalProject = await getPersonalProject(importingUser);
|
||||
|
||||
const sharing = await Container.get(SharedCredentialsRepository).findOneBy({
|
||||
const sharing = await sharedCredentialsRepository.findOneBy({
|
||||
credentialsId: CREDENTIAL_ID,
|
||||
projectId: personalProject.id,
|
||||
role: 'credential:owner',
|
||||
@@ -149,7 +166,7 @@ describe('SourceControlImportService', () => {
|
||||
|
||||
const personalProject = await getPersonalProject(importingUser);
|
||||
|
||||
const sharing = await Container.get(SharedCredentialsRepository).findOneBy({
|
||||
const sharing = await sharedCredentialsRepository.findOneBy({
|
||||
credentialsId: CREDENTIAL_ID,
|
||||
projectId: personalProject.id,
|
||||
role: 'credential:owner',
|
||||
@@ -190,7 +207,7 @@ describe('SourceControlImportService', () => {
|
||||
|
||||
const personalProject = await getPersonalProject(importingUser);
|
||||
|
||||
const sharing = await Container.get(SharedCredentialsRepository).findOneBy({
|
||||
const sharing = await sharedCredentialsRepository.findOneBy({
|
||||
credentialsId: CREDENTIAL_ID,
|
||||
projectId: personalProject.id,
|
||||
role: 'credential:owner',
|
||||
@@ -223,7 +240,7 @@ describe('SourceControlImportService', () => {
|
||||
cipher.encrypt.mockReturnValue('some-encrypted-data');
|
||||
|
||||
{
|
||||
const project = await Container.get(ProjectRepository).findOne({
|
||||
const project = await projectRepository.findOne({
|
||||
where: [
|
||||
{
|
||||
id: '1234-asdf',
|
||||
@@ -241,7 +258,7 @@ describe('SourceControlImportService', () => {
|
||||
importingUser.id,
|
||||
);
|
||||
|
||||
const sharing = await Container.get(SharedCredentialsRepository).findOne({
|
||||
const sharing = await sharedCredentialsRepository.findOne({
|
||||
where: {
|
||||
credentialsId: CREDENTIAL_ID,
|
||||
role: 'credential:owner',
|
||||
@@ -288,7 +305,7 @@ describe('SourceControlImportService', () => {
|
||||
importingUser.id,
|
||||
);
|
||||
|
||||
const sharing = await Container.get(SharedCredentialsRepository).findOneBy({
|
||||
const sharing = await sharedCredentialsRepository.findOneBy({
|
||||
credentialsId: CREDENTIAL_ID,
|
||||
projectId: project.id,
|
||||
role: 'credential:owner',
|
||||
@@ -332,7 +349,7 @@ describe('SourceControlImportService', () => {
|
||||
);
|
||||
|
||||
await expect(
|
||||
Container.get(SharedCredentialsRepository).findBy({
|
||||
sharedCredentialsRepository.findBy({
|
||||
credentialsId: credential.id,
|
||||
}),
|
||||
).resolves.toMatchObject([
|
||||
@@ -342,7 +359,7 @@ describe('SourceControlImportService', () => {
|
||||
},
|
||||
]);
|
||||
await expect(
|
||||
Container.get(CredentialsRepository).findBy({
|
||||
credentialsRepository.findBy({
|
||||
id: credential.id,
|
||||
}),
|
||||
).resolves.toMatchObject([
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
import type { SourceControlledFile } from '@n8n/api-types';
|
||||
import { Container } from '@n8n/di';
|
||||
|
||||
import config from '@/config';
|
||||
import type { User } from '@/databases/entities/user';
|
||||
import { SourceControlPreferencesService } from '@/environments.ee/source-control/source-control-preferences.service.ee';
|
||||
import { SourceControlService } from '@/environments.ee/source-control/source-control.service.ee';
|
||||
@@ -21,11 +20,17 @@ const testServer = utils.setupTestServer({
|
||||
enabledFeatures: ['feat:sourceControl', 'feat:sharing'],
|
||||
});
|
||||
|
||||
let sourceControlPreferencesService: SourceControlPreferencesService;
|
||||
|
||||
beforeAll(async () => {
|
||||
owner = await createUser({ role: 'global:owner' });
|
||||
authOwnerAgent = testServer.authAgentFor(owner);
|
||||
|
||||
Container.get(SourceControlPreferencesService).isSourceControlConnected = () => true;
|
||||
sourceControlPreferencesService = Container.get(SourceControlPreferencesService);
|
||||
await sourceControlPreferencesService.setPreferences({
|
||||
connected: true,
|
||||
keyGeneratorType: 'rsa',
|
||||
});
|
||||
});
|
||||
|
||||
describe('GET /sourceControl/preferences', () => {
|
||||
@@ -65,19 +70,11 @@ describe('GET /sourceControl/preferences', () => {
|
||||
});
|
||||
|
||||
test('refreshing key pairsshould return new rsa key', async () => {
|
||||
config.set('sourceControl.defaultKeyPairType', 'rsa');
|
||||
await authOwnerAgent
|
||||
.post('/source-control/generate-key-pair')
|
||||
.send()
|
||||
.expect(200)
|
||||
.expect((res) => {
|
||||
expect(
|
||||
Container.get(SourceControlPreferencesService).getPreferences().keyGeneratorType,
|
||||
).toBe('rsa');
|
||||
expect(res.body.data).toHaveProperty('publicKey');
|
||||
expect(res.body.data).toHaveProperty('keyGeneratorType');
|
||||
expect(res.body.data.keyGeneratorType).toBe('rsa');
|
||||
expect(res.body.data.publicKey).toContain('ssh-rsa');
|
||||
});
|
||||
const res = await authOwnerAgent.post('/source-control/generate-key-pair').send().expect(200);
|
||||
|
||||
expect(res.body.data).toHaveProperty('publicKey');
|
||||
expect(res.body.data).toHaveProperty('keyGeneratorType');
|
||||
expect(res.body.data.keyGeneratorType).toBe('rsa');
|
||||
expect(res.body.data.publicKey).toContain('ssh-rsa');
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user