feat: RBAC (#8922)
Signed-off-by: Oleg Ivaniv <me@olegivaniv.com> Co-authored-by: Val <68596159+valya@users.noreply.github.com> Co-authored-by: कारतोफ्फेलस्क्रिप्ट™ <aditya@netroy.in> Co-authored-by: Valya Bullions <valya@n8n.io> Co-authored-by: Danny Martini <danny@n8n.io> Co-authored-by: Danny Martini <despair.blue@gmail.com> Co-authored-by: Iván Ovejero <ivov.src@gmail.com> Co-authored-by: Omar Ajoue <krynble@gmail.com> Co-authored-by: oleg <me@olegivaniv.com> Co-authored-by: Michael Kret <michael.k@radency.com> Co-authored-by: Michael Kret <88898367+michael-radency@users.noreply.github.com> Co-authored-by: Elias Meire <elias@meire.dev> Co-authored-by: Giulio Andreini <andreini@netseven.it> Co-authored-by: Giulio Andreini <g.andreini@gmail.com> Co-authored-by: Ayato Hayashi <go12limchangyong@gmail.com>
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
import { BasePage } from './base';
|
||||
|
||||
export class CredentialsPage extends BasePage {
|
||||
url = '/credentials';
|
||||
url = '/home/credentials';
|
||||
getters = {
|
||||
emptyListCreateCredentialButton: () => cy.getByTestId('empty-resources-list').find('button'),
|
||||
createCredentialButton: () => cy.getByTestId('resources-list-add'),
|
||||
|
||||
@@ -25,7 +25,7 @@ export class CredentialsModal extends BasePage {
|
||||
credentialInputs: () => cy.getByTestId('credential-connection-parameter'),
|
||||
menu: () => this.getters.editCredentialModal().get('.menu-container'),
|
||||
menuItem: (name: string) => this.getters.menu().get('.n8n-menu-item').contains(name),
|
||||
usersSelect: () => cy.getByTestId('credential-sharing-modal-users-select'),
|
||||
usersSelect: () => cy.getByTestId('project-sharing-select').filter(':visible'),
|
||||
testSuccessTag: () => cy.getByTestId('credentials-config-container-test-success'),
|
||||
};
|
||||
actions = {
|
||||
|
||||
@@ -3,7 +3,7 @@ import { BasePage } from '../base';
|
||||
export class WorkflowSharingModal extends BasePage {
|
||||
getters = {
|
||||
modal: () => cy.getByTestId('workflowShare-modal', { timeout: 5000 }),
|
||||
usersSelect: () => cy.getByTestId('workflow-sharing-modal-users-select'),
|
||||
usersSelect: () => cy.getByTestId('project-sharing-select'),
|
||||
saveButton: () => cy.getByTestId('workflow-sharing-modal-save-button'),
|
||||
closeButton: () => this.getters.modal().find('.el-dialog__close').first(),
|
||||
};
|
||||
|
||||
@@ -41,10 +41,10 @@ export class SettingsUsersPage extends BasePage {
|
||||
workflowPage.actions.visit();
|
||||
mainSidebar.actions.goToSettings();
|
||||
if (isOwner) {
|
||||
settingsSidebar.getters.menuItem('Users').click();
|
||||
settingsSidebar.getters.users().click();
|
||||
cy.url().should('match', new RegExp(this.url));
|
||||
} else {
|
||||
settingsSidebar.getters.menuItem('Users').should('not.exist');
|
||||
settingsSidebar.getters.users().should('not.exist');
|
||||
// Should be redirected to workflows page if trying to access UM url
|
||||
cy.visit('/settings/users');
|
||||
cy.url().should('match', new RegExp(workflowsPage.url));
|
||||
|
||||
@@ -5,14 +5,13 @@ const workflowsPage = new WorkflowsPage();
|
||||
|
||||
export class MainSidebar extends BasePage {
|
||||
getters = {
|
||||
menuItem: (menuLabel: string) =>
|
||||
cy.getByTestId('menu-item').filter(`:contains("${menuLabel}")`),
|
||||
settings: () => this.getters.menuItem('Settings'),
|
||||
templates: () => this.getters.menuItem('Templates'),
|
||||
workflows: () => this.getters.menuItem('Workflows'),
|
||||
credentials: () => this.getters.menuItem('Credentials'),
|
||||
executions: () => this.getters.menuItem('Executions'),
|
||||
adminPanel: () => this.getters.menuItem('Admin Panel'),
|
||||
menuItem: (id: string) => cy.getByTestId('menu-item').get('#' + id),
|
||||
settings: () => this.getters.menuItem('settings'),
|
||||
templates: () => this.getters.menuItem('templates'),
|
||||
workflows: () => this.getters.menuItem('workflows'),
|
||||
credentials: () => this.getters.menuItem('credentials'),
|
||||
executions: () => this.getters.menuItem('executions'),
|
||||
adminPanel: () => this.getters.menuItem('cloud-admin'),
|
||||
userMenu: () => cy.get('div[class="action-dropdown-container"]'),
|
||||
logo: () => cy.getByTestId('n8n-logo'),
|
||||
};
|
||||
|
||||
@@ -2,9 +2,8 @@ import { BasePage } from '../base';
|
||||
|
||||
export class SettingsSidebar extends BasePage {
|
||||
getters = {
|
||||
menuItem: (menuLabel: string) =>
|
||||
cy.getByTestId('menu-item').filter(`:contains("${menuLabel}")`),
|
||||
users: () => this.getters.menuItem('Users'),
|
||||
menuItem: (id: string) => cy.getByTestId('menu-item').get('#' + id),
|
||||
users: () => this.getters.menuItem('settings-users'),
|
||||
back: () => cy.getByTestId('settings-back'),
|
||||
};
|
||||
actions = {
|
||||
|
||||
@@ -35,7 +35,7 @@ export class VariablesPage extends BasePage {
|
||||
deleteVariable: (key: string) => {
|
||||
const row = this.getters.variableRow(key);
|
||||
row.within(() => {
|
||||
cy.getByTestId('variable-row-delete-button').click();
|
||||
cy.getByTestId('variable-row-delete-button').should('not.be.disabled').click();
|
||||
});
|
||||
|
||||
const modal = cy.get('[role="dialog"]');
|
||||
@@ -53,7 +53,7 @@ export class VariablesPage extends BasePage {
|
||||
editRow: (key: string) => {
|
||||
const row = this.getters.variableRow(key);
|
||||
row.within(() => {
|
||||
cy.getByTestId('variable-row-edit-button').click();
|
||||
cy.getByTestId('variable-row-edit-button').should('not.be.disabled').click();
|
||||
});
|
||||
},
|
||||
setRowValue: (row: Chainable<JQuery<HTMLElement>>, field: 'key' | 'value', value: string) => {
|
||||
|
||||
@@ -32,7 +32,7 @@ export class WorkflowExecutionsTab extends BasePage {
|
||||
},
|
||||
createManualExecutions: (count: number) => {
|
||||
for (let i = 0; i < count; i++) {
|
||||
cy.intercept('POST', '/rest/workflows/run').as('workflowExecution');
|
||||
cy.intercept('POST', '/rest/workflows/**/run').as('workflowExecution');
|
||||
workflowPage.actions.executeWorkflow();
|
||||
cy.wait('@workflowExecution');
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { BasePage } from './base';
|
||||
|
||||
export class WorkflowsPage extends BasePage {
|
||||
url = '/workflows';
|
||||
url = '/home/workflows';
|
||||
getters = {
|
||||
newWorkflowButtonCard: () => cy.getByTestId('new-workflow-card'),
|
||||
newWorkflowTemplateCard: () => cy.getByTestId('new-workflow-template-card'),
|
||||
|
||||
Reference in New Issue
Block a user