V15 QA Added acceptance tests for user group default configuration (#18800)

* Updated userGroup tests due to test helper changes

* Added tests for user group default configuration

* Bumped version

* Fixed due to test helper changes

* Reverted npm command
This commit is contained in:
Nhu Dinh
2025-03-26 16:55:22 +07:00
committed by Niels Lyngsø
parent 678bce697b
commit 361c9d9f97
4 changed files with 235 additions and 12 deletions

View File

@@ -7,8 +7,8 @@
"name": "acceptancetest",
"hasInstallScript": true,
"dependencies": {
"@umbraco/json-models-builders": "^2.0.29",
"@umbraco/playwright-testhelpers": "^15.0.38",
"@umbraco/json-models-builders": "^2.0.31",
"@umbraco/playwright-testhelpers": "^15.0.39",
"camelize": "^1.0.0",
"dotenv": "^16.3.1",
"node-fetch": "^2.6.7"
@@ -67,10 +67,9 @@
}
},
"node_modules/@umbraco/playwright-testhelpers": {
"version": "15.0.38",
"resolved": "https://registry.npmjs.org/@umbraco/playwright-testhelpers/-/playwright-testhelpers-15.0.38.tgz",
"integrity": "sha512-eWJdK2qkdcJJ7st4eAMCJAdYprX7pgDOQoTVTEt62uFCkILuBkGd/MpCYUhFu7IMbFMjNEhWW/+sGSBjS5G14g==",
"license": "MIT",
"version": "15.0.39",
"resolved": "https://registry.npmjs.org/@umbraco/playwright-testhelpers/-/playwright-testhelpers-15.0.39.tgz",
"integrity": "sha512-dNl+P5LOW4CZrlzt7TnXOKUDeHI3juN/BfG9b0P/selpiFPrseH1HrB0myJVmPfuq4KCa+490VTu46qXHGwGLw==",
"dependencies": {
"@umbraco/json-models-builders": "2.0.31",
"node-fetch": "^2.6.7"

View File

@@ -20,8 +20,8 @@
"typescript": "^4.8.3"
},
"dependencies": {
"@umbraco/json-models-builders": "^2.0.29",
"@umbraco/playwright-testhelpers": "^15.0.38",
"@umbraco/json-models-builders": "^2.0.31",
"@umbraco/playwright-testhelpers": "^15.0.39",
"camelize": "^1.0.0",
"dotenv": "^16.3.1",
"node-fetch": "^2.6.7"

View File

@@ -136,7 +136,7 @@ test('can add a section to a user group', async ({umbracoApi, umbracoUi}) => {
// Assert
await umbracoUi.userGroup.doesSuccessNotificationHaveText(NotificationConstantHelper.success.saved);
await umbracoUi.userGroup.clickUserGroupsButton();
await umbracoUi.userGroup.doesUserGroupHaveSection(userGroupName, 'Content');
await umbracoUi.userGroup.doesUserGroupTableHaveSection(userGroupName, 'Content');
})
test('can add multiple sections to a user group', async ({umbracoApi, umbracoUi}) => {
@@ -152,8 +152,8 @@ test('can add multiple sections to a user group', async ({umbracoApi, umbracoUi}
// Assert
await umbracoUi.userGroup.doesSuccessNotificationHaveText(NotificationConstantHelper.success.saved);
await umbracoUi.userGroup.clickUserGroupsButton();
await umbracoUi.userGroup.doesUserGroupHaveSection(userGroupName, 'Content');
await umbracoUi.userGroup.doesUserGroupHaveSection(userGroupName, 'Media');
await umbracoUi.userGroup.doesUserGroupTableHaveSection(userGroupName, 'Content');
await umbracoUi.userGroup.doesUserGroupTableHaveSection(userGroupName, 'Media');
});
test('can remove a section from a user group', async ({umbracoApi, umbracoUi}) => {
@@ -170,7 +170,7 @@ test('can remove a section from a user group', async ({umbracoApi, umbracoUi}) =
// Assert
await umbracoUi.userGroup.doesSuccessNotificationHaveText(NotificationConstantHelper.success.saved);
await umbracoUi.userGroup.clickUserGroupsButton();
await umbracoUi.userGroup.doesUserGroupHaveSection(userGroupName, 'Content', false);
await umbracoUi.userGroup.doesUserGroupTableHaveSection(userGroupName, 'Content', false);
const userGroupData = await umbracoApi.userGroup.getByName(userGroupName);
expect(userGroupData.sections).toEqual([]);
});

View File

@@ -0,0 +1,224 @@
import {ConstantHelper, test} from '@umbraco/playwright-testhelpers';
import {expect} from "@playwright/test";
test.beforeEach(async ({umbracoUi}) => {
await umbracoUi.goToBackOffice();
await umbracoUi.userGroup.goToSection(ConstantHelper.sections.users);
await umbracoUi.userGroup.clickUserGroupsButton();
});
test('the default configuration of Administrators is correct', async ({umbracoApi, umbracoUi}) => {
// Arrange
const userGroupName = 'Administrators';
const sections = [
"Umb.Section.Content",
"Umb.Section.Media",
"Umb.Section.Members",
"Umb.Section.Packages",
"Umb.Section.Settings",
"Umb.Section.Translation",
"Umb.Section.Users"
];
const fallbackPermissions = [
"Umb.Document.Create",
"Umb.Document.Update",
"Umb.Document.Delete",
"Umb.Document.Move",
"Umb.Document.Duplicate",
"Umb.Document.Sort",
"Umb.Document.Rollback",
"Umb.Document.PublicAccess",
"Umb.Document.CultureAndHostnames",
"Umb.Document.Publish",
"Umb.Document.Permissions",
"Umb.Document.Unpublish",
"Umb.Document.Read",
"Umb.Document.CreateBlueprint",
"Umb.Document.Notifications",
];
const granularPermissions = [];
const hasAccessToAllLanguages = true;
const documentRootAccess = true;
const mediaRootAccess = true;
const uiPermissions = await umbracoApi.userGroup.convertApiPermissionsToUiPermissions(fallbackPermissions);
const uiSections = await umbracoApi.userGroup.convertApiSectionsToUiSections(sections);
// Act
await umbracoUi.userGroup.clickUserGroupWithName(userGroupName);
// Act
await umbracoUi.userGroup.doesSettingHaveValue('Assign access', ConstantHelper.userGroupAssignAccessSettings);
await umbracoUi.userGroup.doesSettingHaveValue('Default permissions', ConstantHelper.userGroupDefaultPermissionsSettings);
await umbracoUi.userGroup.doesSettingHaveValue('Granular permissions', ConstantHelper.userGroupGranularPermissionsSettings);
await umbracoUi.userGroup.doesPermissionsSettingsHaveValue(ConstantHelper.userGroupPermissionsSettings);
await umbracoUi.userGroup.doesUserGroupHavePermissionEnabled(uiPermissions);
await umbracoUi.userGroup.doesUserGroupHaveSections(uiSections);
await umbracoUi.userGroup.doesUserGroupSectionsHaveCount(uiSections.length);
// Fixme - Uncomment this when the front-end is ready. Currently the sections includes "Umb.Section.Forms" which should be removed.
//expect(await umbracoApi.userGroup.doesUserGroupHaveSections(userGroupName, sections)).toBeTruthy();
// Fixme - Uncomment this when the front-end is ready. Currently the fallbackPermissions includes some unnecessary values such as ":", "5", "T"
//expect(await umbracoApi.userGroup.doesUserGroupHaveFallbackPermissions(userGroupName, fallbackPermissions)).toBeTruthy();
const userGroupData = await umbracoApi.userGroup.getByName(userGroupName);
expect(userGroupData.hasAccessToAllLanguages).toEqual(hasAccessToAllLanguages);
expect(userGroupData.documentRootAccess).toEqual(documentRootAccess);
expect(userGroupData.mediaRootAccess).toEqual(mediaRootAccess);
expect(userGroupData.permissions).toEqual(granularPermissions);
});
test('the default configuration of Editors is correct', async ({umbracoApi, umbracoUi}) => {
// Arrange
const userGroupName = 'Editors';
const sections = [
"Umb.Section.Content",
"Umb.Section.Media"
];
const fallbackPermissions = [
"Umb.Document.Create",
"Umb.Document.Update",
"Umb.Document.Delete",
"Umb.Document.Move",
"Umb.Document.Duplicate",
"Umb.Document.Sort",
"Umb.Document.Rollback",
"Umb.Document.PublicAccess",
"Umb.Document.Publish",
"Umb.Document.Unpublish",
"Umb.Document.Read",
"Umb.Document.CreateBlueprint",
"Umb.Document.Notifications",
];
const granularPermissions = [];
const hasAccessToAllLanguages = true;
const documentRootAccess = true;
const mediaRootAccess = true;
const uiPermissions = await umbracoApi.userGroup.convertApiPermissionsToUiPermissions(fallbackPermissions);
const uiSections = await umbracoApi.userGroup.convertApiSectionsToUiSections(sections);
// Act
await umbracoUi.userGroup.clickUserGroupWithName(userGroupName);
// Act
await umbracoUi.userGroup.doesSettingHaveValue('Assign access', ConstantHelper.userGroupAssignAccessSettings);
await umbracoUi.userGroup.doesSettingHaveValue('Default permissions', ConstantHelper.userGroupDefaultPermissionsSettings);
await umbracoUi.userGroup.doesSettingHaveValue('Granular permissions', ConstantHelper.userGroupGranularPermissionsSettings);
await umbracoUi.userGroup.doesPermissionsSettingsHaveValue(ConstantHelper.userGroupPermissionsSettings);
await umbracoUi.userGroup.doesUserGroupHavePermissionEnabled(uiPermissions);
await umbracoUi.userGroup.doesUserGroupHaveSections(uiSections);
await umbracoUi.userGroup.doesUserGroupSectionsHaveCount(uiSections.length);
// Fixme - Uncomment this when the front-end is ready. Currently the sections includes "Umb.Section.Forms" which should be removed.
//expect(await umbracoApi.userGroup.doesUserGroupHaveSections(userGroupName, sections)).toBeTruthy();
// Fixme - Uncomment this when the front-end is ready. Currently the fallbackPermissions includes some unnecessary values such as ":", "5", "T"
//expect(await umbracoApi.userGroup.doesUserGroupHaveFallbackPermissions(userGroupName, fallbackPermissions)).toBeTruthy();
const userGroupData = await umbracoApi.userGroup.getByName(userGroupName);
expect(userGroupData.hasAccessToAllLanguages).toEqual(hasAccessToAllLanguages);
expect(userGroupData.documentRootAccess).toEqual(documentRootAccess);
expect(userGroupData.mediaRootAccess).toEqual(mediaRootAccess);
expect(userGroupData.permissions).toEqual(granularPermissions);
});
test('the default configuration of Sensitive data is correct', async ({umbracoApi, umbracoUi}) => {
// Arrange
const userGroupName = 'Sensitive data';
const sections = [];
const fallbackPermissions = [];
const granularPermissions = [];
const hasAccessToAllLanguages = false;
const documentRootAccess = false;
const mediaRootAccess = false;
const uiPermissions = await umbracoApi.userGroup.convertApiPermissionsToUiPermissions(fallbackPermissions);
const uiSections = await umbracoApi.userGroup.convertApiSectionsToUiSections(sections);
// Act
await umbracoUi.userGroup.clickUserGroupWithName(userGroupName);
// Act
await umbracoUi.userGroup.doesSettingHaveValue('Assign access', ConstantHelper.userGroupAssignAccessSettings);
await umbracoUi.userGroup.doesSettingHaveValue('Default permissions', ConstantHelper.userGroupDefaultPermissionsSettings);
await umbracoUi.userGroup.doesSettingHaveValue('Granular permissions', ConstantHelper.userGroupGranularPermissionsSettings);
await umbracoUi.userGroup.doesPermissionsSettingsHaveValue(ConstantHelper.userGroupPermissionsSettings);
await umbracoUi.userGroup.doesUserGroupHavePermissionEnabled(uiPermissions);
await umbracoUi.userGroup.doesUserGroupHaveSections(uiSections);
await umbracoUi.userGroup.doesUserGroupSectionsHaveCount(uiSections.length);
// Fixme - Uncomment this when the front-end is ready. Currently the sections includes "Umb.Section.Forms" which should be removed.
//expect(await umbracoApi.userGroup.doesUserGroupHaveSections(userGroupName, sections)).toBeTruthy();
// Fixme - Uncomment this when the front-end is ready. Currently the fallbackPermissions includes some unnecessary values such as ":", "5", "T"
//expect(await umbracoApi.userGroup.doesUserGroupHaveFallbackPermissions(userGroupName, fallbackPermissions)).toBeTruthy();
const userGroupData = await umbracoApi.userGroup.getByName(userGroupName);
expect(userGroupData.hasAccessToAllLanguages).toEqual(hasAccessToAllLanguages);
expect(userGroupData.documentRootAccess).toEqual(documentRootAccess);
expect(userGroupData.mediaRootAccess).toEqual(mediaRootAccess);
expect(userGroupData.permissions).toEqual(granularPermissions);
});
test('the default configuration of Translators data is correct', async ({umbracoApi, umbracoUi}) => {
// Arrange
const userGroupName = 'Translators';
const sections = ["Umb.Section.Translation"];
const fallbackPermissions = [
"Umb.Document.Update",
"Umb.Document.Read"
];
const granularPermissions = [];
const hasAccessToAllLanguages = true;
const documentRootAccess = true;
const mediaRootAccess = true;
const uiPermissions = await umbracoApi.userGroup.convertApiPermissionsToUiPermissions(fallbackPermissions);
const uiSections = await umbracoApi.userGroup.convertApiSectionsToUiSections(sections);
// Act
await umbracoUi.userGroup.clickUserGroupWithName(userGroupName);
// Act
await umbracoUi.userGroup.doesSettingHaveValue('Assign access', ConstantHelper.userGroupAssignAccessSettings);
await umbracoUi.userGroup.doesSettingHaveValue('Default permissions', ConstantHelper.userGroupDefaultPermissionsSettings);
await umbracoUi.userGroup.doesSettingHaveValue('Granular permissions', ConstantHelper.userGroupGranularPermissionsSettings);
await umbracoUi.userGroup.doesPermissionsSettingsHaveValue(ConstantHelper.userGroupPermissionsSettings);
await umbracoUi.userGroup.doesUserGroupHavePermissionEnabled(uiPermissions);
await umbracoUi.userGroup.doesUserGroupHaveSections(uiSections);
await umbracoUi.userGroup.doesUserGroupSectionsHaveCount(uiSections.length);
expect(await umbracoApi.userGroup.doesUserGroupHaveSections(userGroupName, sections)).toBeTruthy();
expect(await umbracoApi.userGroup.doesUserGroupHaveFallbackPermissions(userGroupName, fallbackPermissions)).toBeTruthy();
const userGroupData = await umbracoApi.userGroup.getByName(userGroupName);
expect(userGroupData.hasAccessToAllLanguages).toEqual(hasAccessToAllLanguages);
expect(userGroupData.documentRootAccess).toEqual(documentRootAccess);
expect(userGroupData.mediaRootAccess).toEqual(mediaRootAccess);
expect(userGroupData.permissions).toEqual(granularPermissions);
});
test('the default configuration of Writers data is correct', async ({umbracoApi, umbracoUi}) => {
// Arrange
const userGroupName = 'Writers';
const sections = ["Umb.Section.Content"];
const fallbackPermissions = [
"Umb.Document.Create",
"Umb.Document.Update",
"Umb.Document.Read",
"Umb.Document.Notifications"
];
const granularPermissions = [];
const hasAccessToAllLanguages = true;
const documentRootAccess = true;
const mediaRootAccess = true;
const uiPermissions = await umbracoApi.userGroup.convertApiPermissionsToUiPermissions(fallbackPermissions);
const uiSections = await umbracoApi.userGroup.convertApiSectionsToUiSections(sections);
// Act
await umbracoUi.userGroup.clickUserGroupWithName(userGroupName);
// Act
await umbracoUi.userGroup.doesSettingHaveValue('Assign access', ConstantHelper.userGroupAssignAccessSettings);
await umbracoUi.userGroup.doesSettingHaveValue('Default permissions', ConstantHelper.userGroupDefaultPermissionsSettings);
await umbracoUi.userGroup.doesSettingHaveValue('Granular permissions', ConstantHelper.userGroupGranularPermissionsSettings);
await umbracoUi.userGroup.doesPermissionsSettingsHaveValue(ConstantHelper.userGroupPermissionsSettings);
await umbracoUi.userGroup.doesUserGroupHavePermissionEnabled(uiPermissions);
await umbracoUi.userGroup.doesUserGroupHaveSections(uiSections);
await umbracoUi.userGroup.doesUserGroupSectionsHaveCount(uiSections.length);
expect(await umbracoApi.userGroup.doesUserGroupHaveSections(userGroupName, sections)).toBeTruthy();
// Fixme - Uncomment this when the front-end is ready. Currently the fallbackPermissions includes some unnecessary values such as ":", "5", "T"
//expect(await umbracoApi.userGroup.doesUserGroupHaveFallbackPermissions(userGroupName, fallbackPermissions)).toBeTruthy();
const userGroupData = await umbracoApi.userGroup.getByName(userGroupName);
expect(userGroupData.hasAccessToAllLanguages).toEqual(hasAccessToAllLanguages);
expect(userGroupData.documentRootAccess).toEqual(documentRootAccess);
expect(userGroupData.mediaRootAccess).toEqual(mediaRootAccess);
expect(userGroupData.permissions).toEqual(granularPermissions);
});