mirror of
https://github.com/Abdulazizzn/n8n-enterprise-unlocked.git
synced 2025-12-17 18:12:04 +00:00
fix: Project Viewer always seeing a connection error when testing credentials (#10417)
This commit is contained in:
@@ -7,6 +7,7 @@ import { SharedCredentialsRepository } from '@/databases/repositories/sharedCred
|
||||
import Container from 'typedi';
|
||||
import { CredentialsService } from '@/credentials/credentials.service';
|
||||
import * as testDb from '../shared/testDb';
|
||||
import { createTeamProject, linkUserToProject } from '@test-integration/db/projects';
|
||||
|
||||
const credentialPayload = randomCredentialPayload();
|
||||
let memberWhoOwnsCredential: User;
|
||||
@@ -42,7 +43,7 @@ describe('credentials service', () => {
|
||||
data: { accessToken: '' },
|
||||
};
|
||||
|
||||
Container.get(CredentialsService).replaceCredentialContentsForSharee(
|
||||
await Container.get(CredentialsService).replaceCredentialContentsForSharee(
|
||||
memberWhoDoesNotOwnCredential,
|
||||
storedCredential!,
|
||||
decryptedData,
|
||||
@@ -51,5 +52,68 @@ describe('credentials service', () => {
|
||||
|
||||
expect(mergedCredentials.data).toEqual({ accessToken: credentialPayload.data.accessToken });
|
||||
});
|
||||
|
||||
it('should replace the contents of the credential for project viewer', async () => {
|
||||
const [project, viewerMember] = await Promise.all([createTeamProject(), createMember()]);
|
||||
await linkUserToProject(viewerMember, project, 'project:viewer');
|
||||
const projectCredential = await saveCredential(credentialPayload, {
|
||||
project,
|
||||
role: 'credential:owner',
|
||||
});
|
||||
|
||||
const storedProjectCredential = await Container.get(
|
||||
SharedCredentialsRepository,
|
||||
).findCredentialForUser(projectCredential.id, viewerMember, ['credential:read']);
|
||||
|
||||
const decryptedData = Container.get(CredentialsService).decrypt(storedProjectCredential!);
|
||||
|
||||
const mergedCredentials = {
|
||||
id: projectCredential.id,
|
||||
name: projectCredential.name,
|
||||
type: projectCredential.type,
|
||||
data: { accessToken: '' },
|
||||
};
|
||||
|
||||
await Container.get(CredentialsService).replaceCredentialContentsForSharee(
|
||||
viewerMember,
|
||||
storedProjectCredential!,
|
||||
decryptedData,
|
||||
mergedCredentials,
|
||||
);
|
||||
|
||||
expect(mergedCredentials.data).toEqual({ accessToken: credentialPayload.data.accessToken });
|
||||
});
|
||||
|
||||
it('should not replace the contents of the credential for project editor', async () => {
|
||||
const [project, editorMember] = await Promise.all([createTeamProject(), createMember()]);
|
||||
await linkUserToProject(editorMember, project, 'project:editor');
|
||||
const projectCredential = await saveCredential(credentialPayload, {
|
||||
project,
|
||||
role: 'credential:owner',
|
||||
});
|
||||
|
||||
const storedProjectCredential = await Container.get(
|
||||
SharedCredentialsRepository,
|
||||
).findCredentialForUser(projectCredential.id, editorMember, ['credential:read']);
|
||||
|
||||
const decryptedData = Container.get(CredentialsService).decrypt(storedProjectCredential!);
|
||||
|
||||
const originalData = { accessToken: '' };
|
||||
const mergedCredentials = {
|
||||
id: projectCredential.id,
|
||||
name: projectCredential.name,
|
||||
type: projectCredential.type,
|
||||
data: originalData,
|
||||
};
|
||||
|
||||
await Container.get(CredentialsService).replaceCredentialContentsForSharee(
|
||||
editorMember,
|
||||
storedProjectCredential!,
|
||||
decryptedData,
|
||||
mergedCredentials,
|
||||
);
|
||||
|
||||
expect(mergedCredentials.data).toBe(originalData);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user