V14 QA Added user groups acceptance tests (#17344)
* Added tests for userGroup * Clean up * Updated userGroup tests * Updated tests * Updated tests * Cleane up * Cleaned up * Bumped versions * Run user tests * Cleaned up * Added method for checking if the document tree is empty * Bumped version * Reverted
This commit is contained in:
@@ -1,29 +1,21 @@
|
||||
import {ConstantHelper, test} from '@umbraco/playwright-testhelpers';
|
||||
import {expect} from '@playwright/test';
|
||||
|
||||
const testUser = {
|
||||
name: 'Test User',
|
||||
email: 'verySecureEmail@123.test',
|
||||
password: 'verySecurePassword123',
|
||||
};
|
||||
const testUser = ConstantHelper.testUserCredentials;
|
||||
let testUserCookieAndToken = {cookie: "", accessToken: "", refreshToken: ""};
|
||||
|
||||
const userGroupName = 'TestUserGroup';
|
||||
let userGroupId = null;
|
||||
|
||||
const rootDocumentTypeName = 'RootDocumentType';
|
||||
const childDocumentTypeOneName = 'ChildDocumentTypeOne';
|
||||
const childDocumentTypeTwoName = 'ChildDocumentTypeTwo';
|
||||
let childDocumentTypeOneId = null;
|
||||
let rootDocumentTypeId = null;
|
||||
|
||||
let testUserCookieAndToken = {cookie: "", accessToken: "", refreshToken: ""};
|
||||
|
||||
let rootDocumentId = null;
|
||||
let childDocumentOneId = null;
|
||||
const rootDocumentName = 'RootDocument';
|
||||
const childDocumentOneName = 'ChildDocumentOne';
|
||||
const childDocumentTwoName = 'ChildDocumentTwo';
|
||||
|
||||
let userGroupId = null;
|
||||
let rootDocumentId = null;
|
||||
let childDocumentOneId = null;
|
||||
|
||||
test.beforeEach(async ({umbracoApi}) => {
|
||||
await umbracoApi.documentType.ensureNameNotExists(rootDocumentTypeName);
|
||||
@@ -59,10 +51,10 @@ test('can see root start node and children', async ({umbracoApi, umbracoUi}) =>
|
||||
await umbracoUi.user.goToSection(ConstantHelper.sections.content, false);
|
||||
|
||||
// Assert
|
||||
await umbracoUi.content.isContentVisible(rootDocumentName);
|
||||
await umbracoUi.content.isContentInTreeVisible(rootDocumentName);
|
||||
await umbracoUi.content.clickCaretButtonForContentName(rootDocumentName);
|
||||
await umbracoUi.content.isChildContentVisible(rootDocumentName, childDocumentOneName);
|
||||
await umbracoUi.content.isChildContentVisible(rootDocumentName, childDocumentTwoName);
|
||||
await umbracoUi.content.isChildContentInTreeVisible(rootDocumentName, childDocumentOneName);
|
||||
await umbracoUi.content.isChildContentInTreeVisible(rootDocumentName, childDocumentTwoName);
|
||||
});
|
||||
|
||||
test('can see parent of start node but not access it', async ({umbracoApi, umbracoUi}) => {
|
||||
@@ -75,12 +67,12 @@ test('can see parent of start node but not access it', async ({umbracoApi, umbra
|
||||
await umbracoUi.user.goToSection(ConstantHelper.sections.content, false);
|
||||
|
||||
// Assert
|
||||
await umbracoUi.content.isContentVisible(rootDocumentName);
|
||||
await umbracoUi.content.isContentInTreeVisible(rootDocumentName);
|
||||
await umbracoUi.content.goToContentWithName(rootDocumentName);
|
||||
await umbracoUi.content.isTextWithMessageVisible('The authenticated user do not have access to this resource');
|
||||
await umbracoUi.content.clickCaretButtonForContentName(rootDocumentName);
|
||||
await umbracoUi.content.isChildContentVisible(rootDocumentName, childDocumentOneName);
|
||||
await umbracoUi.content.isChildContentVisible(rootDocumentName, childDocumentTwoName, false);
|
||||
await umbracoUi.content.isChildContentInTreeVisible(rootDocumentName, childDocumentOneName);
|
||||
await umbracoUi.content.isChildContentInTreeVisible(rootDocumentName, childDocumentTwoName, false);
|
||||
});
|
||||
|
||||
test('can not see any content when no start nodes specified', async ({umbracoApi, umbracoUi}) => {
|
||||
@@ -93,5 +85,5 @@ test('can not see any content when no start nodes specified', async ({umbracoApi
|
||||
await umbracoUi.user.goToSection(ConstantHelper.sections.content, false);
|
||||
|
||||
// Assert
|
||||
await umbracoUi.content.isContentVisible(rootDocumentName, false);
|
||||
await umbracoUi.content.isDocumentTreeEmpty();
|
||||
});
|
||||
@@ -1,16 +1,11 @@
|
||||
import {ConstantHelper, test} from '@umbraco/playwright-testhelpers';
|
||||
|
||||
const testUser = {
|
||||
name: 'Test User',
|
||||
email: 'verySecureEmail@123.test',
|
||||
password: 'verySecurePassword123',
|
||||
};
|
||||
const testUser = ConstantHelper.testUserCredentials;
|
||||
let testUserCookieAndToken = {cookie: "", accessToken: "", refreshToken: ""};
|
||||
|
||||
const userGroupName = 'TestUserGroup';
|
||||
let userGroupId = null;
|
||||
|
||||
let testUserCookieAndToken = {cookie: "", accessToken: "", refreshToken: ""};
|
||||
|
||||
let rootFolderId = null;
|
||||
let childFolderOneId = null;
|
||||
const rootFolderName = 'RootFolder';
|
||||
@@ -1,14 +1,9 @@
|
||||
import {ConstantHelper, test} from '@umbraco/playwright-testhelpers';
|
||||
|
||||
const testUser = {
|
||||
name: 'Test User',
|
||||
email: 'verySecureEmail@123.test',
|
||||
password: 'verySecurePassword123',
|
||||
};
|
||||
const testUser = ConstantHelper.testUserCredentials;
|
||||
let testUserCookieAndToken = {cookie: "", accessToken: "", refreshToken: ""};
|
||||
|
||||
const userGroupName = 'TestUserGroup';
|
||||
|
||||
let testUserCookieAndToken = {cookie: "", accessToken: "", refreshToken: ""};
|
||||
let userGroupId = null;
|
||||
|
||||
test.beforeEach(async ({umbracoApi}) => {
|
||||
@@ -0,0 +1,92 @@
|
||||
import {ConstantHelper, test} from '@umbraco/playwright-testhelpers';
|
||||
|
||||
const testUser = ConstantHelper.testUserCredentials;
|
||||
let testUserCookieAndToken = {cookie: "", accessToken: "", refreshToken: ""};
|
||||
|
||||
const userGroupName = 'TestUserGroup';
|
||||
let userGroupId = null;
|
||||
|
||||
const rootDocumentTypeName = 'RootDocumentType';
|
||||
const childDocumentTypeOneName = 'ChildDocumentTypeOne';
|
||||
const childDocumentTypeTwoName = 'ChildDocumentTypeTwo';
|
||||
let childDocumentTypeOneId = null;
|
||||
let childDocumentTypeTwoId = null;
|
||||
let rootDocumentTypeId = null;
|
||||
const rootDocumentName = 'RootDocument';
|
||||
const childDocumentOneName = 'ChildDocumentOne';
|
||||
const childDocumentTwoName = 'ChildDocumentTwo';
|
||||
let rootDocumentId = null;
|
||||
let childDocumentOneId = null;
|
||||
|
||||
test.beforeEach(async ({umbracoApi}) => {
|
||||
await umbracoApi.documentType.ensureNameNotExists(rootDocumentTypeName);
|
||||
await umbracoApi.documentType.ensureNameNotExists(childDocumentTypeOneName);
|
||||
await umbracoApi.documentType.ensureNameNotExists(childDocumentTypeTwoName);
|
||||
await umbracoApi.user.ensureNameNotExists(testUser.name);
|
||||
await umbracoApi.userGroup.ensureNameNotExists(userGroupName);
|
||||
childDocumentTypeOneId = await umbracoApi.documentType.createDefaultDocumentType(childDocumentTypeOneName);
|
||||
childDocumentTypeTwoId = await umbracoApi.documentType.createDefaultDocumentType(childDocumentTypeTwoName);
|
||||
rootDocumentTypeId = await umbracoApi.documentType.createDocumentTypeWithAllowedTwoChildNodes(rootDocumentTypeName, childDocumentTypeOneId, childDocumentTypeTwoId);
|
||||
rootDocumentId = await umbracoApi.document.createDefaultDocument(rootDocumentName, rootDocumentTypeId);
|
||||
childDocumentOneId = await umbracoApi.document.createDefaultDocumentWithParent(childDocumentOneName, childDocumentTypeOneId, rootDocumentId);
|
||||
await umbracoApi.document.createDefaultDocumentWithParent(childDocumentTwoName, childDocumentTypeTwoId, rootDocumentId);
|
||||
});
|
||||
|
||||
test.afterEach(async ({umbracoApi}) => {
|
||||
// Ensure we are logged in to admin
|
||||
await umbracoApi.loginToAdminUser(testUserCookieAndToken.cookie, testUserCookieAndToken.accessToken, testUserCookieAndToken.refreshToken);
|
||||
await umbracoApi.documentType.ensureNameNotExists(rootDocumentTypeName);
|
||||
await umbracoApi.documentType.ensureNameNotExists(childDocumentTypeOneName);
|
||||
await umbracoApi.documentType.ensureNameNotExists(childDocumentTypeTwoName);
|
||||
await umbracoApi.userGroup.ensureNameNotExists(userGroupName);
|
||||
});
|
||||
|
||||
test('can see root start node and children', async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
userGroupId = await umbracoApi.userGroup.createUserGroupWithDocumentStartNode(userGroupName, rootDocumentId);
|
||||
await umbracoApi.user.setUserPermissions(testUser.name, testUser.email, testUser.password, userGroupId);
|
||||
testUserCookieAndToken = await umbracoApi.user.loginToUser(testUser.name, testUser.email, testUser.password);
|
||||
await umbracoUi.goToBackOffice();
|
||||
|
||||
// Act
|
||||
await umbracoUi.userGroup.goToSection(ConstantHelper.sections.content, false);
|
||||
|
||||
// Assert
|
||||
await umbracoUi.content.isContentInTreeVisible(rootDocumentName);
|
||||
await umbracoUi.content.clickCaretButtonForContentName(rootDocumentName);
|
||||
await umbracoUi.content.isChildContentInTreeVisible(rootDocumentName, childDocumentOneName);
|
||||
await umbracoUi.content.isChildContentInTreeVisible(rootDocumentName, childDocumentTwoName);
|
||||
});
|
||||
|
||||
test('can see parent of start node but not access it', async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
userGroupId = await umbracoApi.userGroup.createUserGroupWithDocumentStartNode(userGroupName, childDocumentOneId);
|
||||
await umbracoApi.user.setUserPermissions(testUser.name, testUser.email, testUser.password, userGroupId);
|
||||
testUserCookieAndToken = await umbracoApi.user.loginToUser(testUser.name, testUser.email, testUser.password);
|
||||
await umbracoUi.goToBackOffice();
|
||||
|
||||
// Act
|
||||
await umbracoUi.userGroup.goToSection(ConstantHelper.sections.content, false);
|
||||
|
||||
// Assert
|
||||
await umbracoUi.content.isContentInTreeVisible(rootDocumentName);
|
||||
await umbracoUi.content.goToContentWithName(rootDocumentName);
|
||||
await umbracoUi.content.isTextWithMessageVisible('The authenticated user do not have access to this resource');
|
||||
await umbracoUi.content.clickCaretButtonForContentName(rootDocumentName);
|
||||
await umbracoUi.content.isChildContentInTreeVisible(rootDocumentName, childDocumentOneName);
|
||||
await umbracoUi.content.isChildContentInTreeVisible(rootDocumentName, childDocumentTwoName, false);
|
||||
});
|
||||
|
||||
test('can not see any content when no start nodes specified', async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
userGroupId = await umbracoApi.userGroup.createSimpleUserGroupWithContentSection(userGroupName);
|
||||
await umbracoApi.user.setUserPermissions(testUser.name, testUser.email, testUser.password, userGroupId);
|
||||
testUserCookieAndToken = await umbracoApi.user.loginToUser(testUser.name, testUser.email, testUser.password);
|
||||
await umbracoUi.goToBackOffice();
|
||||
|
||||
// Act
|
||||
await umbracoUi.userGroup.goToSection(ConstantHelper.sections.content, false);
|
||||
|
||||
// Assert
|
||||
await umbracoUi.content.isDocumentTreeEmpty();
|
||||
});
|
||||
@@ -0,0 +1,135 @@
|
||||
import {AliasHelper, ConstantHelper, NotificationConstantHelper, test} from '@umbraco/playwright-testhelpers';
|
||||
|
||||
const testUser = ConstantHelper.testUserCredentials;
|
||||
let testUserCookieAndToken = {cookie: "", accessToken: "", refreshToken: ""};
|
||||
|
||||
const userGroupName = 'TestUserGroup';
|
||||
let userGroupId = null;
|
||||
|
||||
const documentTypeName = 'TestDocumentType';
|
||||
const documentName = 'TestDocument';
|
||||
const englishDocumentName = 'EnglishDocument';
|
||||
const danishDocumentName = 'DanishDocument';
|
||||
const vietnameseDocumentName = 'VietnameseDocument';
|
||||
let documentTypeId = null;
|
||||
|
||||
const dataTypeName = 'Textstring';
|
||||
let dataTypeId = null;
|
||||
|
||||
const englishIsoCode = 'en-US';
|
||||
const danishIsoCode = 'da';
|
||||
const vietnameseIsoCode = 'vi';
|
||||
const englishLanguageName = 'English (United States)';
|
||||
const danishLanguageName = 'Danish';
|
||||
const vietnameseLanguageName = 'Vietnamese';
|
||||
const cultureVariants = [
|
||||
{
|
||||
isoCode: englishIsoCode,
|
||||
name: englishDocumentName,
|
||||
value: 'EnglishValue',
|
||||
},
|
||||
{
|
||||
isoCode: danishIsoCode,
|
||||
name: danishDocumentName,
|
||||
value: 'DanishValue',
|
||||
},
|
||||
{
|
||||
isoCode: vietnameseIsoCode,
|
||||
name: vietnameseDocumentName,
|
||||
value: 'VietnameseValue',
|
||||
}
|
||||
];
|
||||
|
||||
test.beforeEach(async ({umbracoApi}) => {
|
||||
await umbracoApi.user.ensureNameNotExists(testUser.name);
|
||||
await umbracoApi.documentType.ensureNameNotExists(documentTypeName);
|
||||
await umbracoApi.language.ensureIsoCodeNotExists(danishIsoCode);
|
||||
await umbracoApi.language.ensureIsoCodeNotExists(vietnameseIsoCode);
|
||||
await umbracoApi.language.createDanishLanguage();
|
||||
await umbracoApi.language.createVietnameseLanguage();
|
||||
const dataType = await umbracoApi.dataType.getByName(dataTypeName);
|
||||
dataTypeId = dataType.id;
|
||||
documentTypeId = await umbracoApi.documentType.createDocumentTypeWithPropertyEditor(documentTypeName, dataTypeName, dataTypeId, 'TestGroup', true);
|
||||
await umbracoApi.document.createDocumentWithMultipleVariants(documentName, documentTypeId, AliasHelper.toAlias(dataTypeName), cultureVariants);
|
||||
});
|
||||
|
||||
test.afterEach(async ({umbracoApi}) => {
|
||||
// Ensure we are logged in to admin
|
||||
await umbracoApi.loginToAdminUser(testUserCookieAndToken.cookie, testUserCookieAndToken.accessToken, testUserCookieAndToken.refreshToken);
|
||||
await umbracoApi.userGroup.ensureNameNotExists(userGroupName);
|
||||
await umbracoApi.language.ensureIsoCodeNotExists(danishIsoCode);
|
||||
await umbracoApi.language.ensureIsoCodeNotExists(vietnameseIsoCode);
|
||||
await umbracoApi.documentType.ensureNameNotExists(documentTypeName);
|
||||
});
|
||||
|
||||
test('can rename content with language set in userGroup', async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
const updatedContentName = 'UpdatedContentName';
|
||||
userGroupId = await umbracoApi.userGroup.createUserGroupWithLanguageAndContentSection(userGroupName, englishIsoCode);
|
||||
await umbracoApi.user.setUserPermissions(testUser.name, testUser.email, testUser.password, userGroupId, [], false, [], false, englishIsoCode);
|
||||
testUserCookieAndToken = await umbracoApi.user.loginToUser(testUser.name, testUser.email, testUser.password);
|
||||
await umbracoUi.goToBackOffice();
|
||||
await umbracoUi.userGroup.goToSection(ConstantHelper.sections.content, false);
|
||||
await umbracoUi.content.goToContentWithName(englishDocumentName);
|
||||
|
||||
// Act
|
||||
await umbracoUi.content.isDocumentReadOnly(false);
|
||||
await umbracoUi.content.enterContentName(updatedContentName);
|
||||
await umbracoUi.content.clickSaveButton();
|
||||
await umbracoUi.content.clickSaveAndCloseButton();
|
||||
|
||||
// Assert
|
||||
await umbracoUi.userGroup.doesSuccessNotificationHaveText(NotificationConstantHelper.success.saved);
|
||||
await umbracoUi.content.isContentInTreeVisible(updatedContentName);
|
||||
});
|
||||
|
||||
test('can not rename content with language not set in userGroup', async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
userGroupId = await umbracoApi.userGroup.createUserGroupWithLanguageAndContentSection(userGroupName, englishIsoCode);
|
||||
await umbracoApi.user.setUserPermissions(testUser.name, testUser.email, testUser.password, userGroupId, [], false, [], false, englishIsoCode);
|
||||
testUserCookieAndToken = await umbracoApi.user.loginToUser(testUser.name, testUser.email, testUser.password);
|
||||
await umbracoUi.goToBackOffice();
|
||||
await umbracoUi.userGroup.goToSection(ConstantHelper.sections.content, false);
|
||||
await umbracoUi.content.doesDocumentSectionHaveLanguageSelected(englishLanguageName);
|
||||
await umbracoUi.content.changeDocumentSectionLanguage(danishLanguageName);
|
||||
|
||||
// Act
|
||||
await umbracoUi.content.goToContentWithName(danishDocumentName);
|
||||
|
||||
// Assert
|
||||
await umbracoUi.content.isDocumentReadOnly();
|
||||
await umbracoUi.content.isDocumentNameInputEditable(false);
|
||||
});
|
||||
|
||||
test('can update content property with language set in userGroup', async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
userGroupId = await umbracoApi.userGroup.createUserGroupWithLanguageAndContentSection(userGroupName, englishIsoCode);
|
||||
await umbracoApi.user.setUserPermissions(testUser.name, testUser.email, testUser.password, userGroupId);
|
||||
testUserCookieAndToken = await umbracoApi.user.loginToUser(testUser.name, testUser.email, testUser.password);
|
||||
await umbracoUi.goToBackOffice();
|
||||
await umbracoUi.userGroup.goToSection(ConstantHelper.sections.content, false);
|
||||
await umbracoUi.content.doesDocumentSectionHaveLanguageSelected(englishLanguageName);
|
||||
|
||||
// Act
|
||||
await umbracoUi.content.goToContentWithName(englishDocumentName);
|
||||
|
||||
// Assert
|
||||
await umbracoUi.content.isDocumentPropertyEditable(dataTypeName, true);
|
||||
});
|
||||
|
||||
test('can not update content property with language not set in userGroup', async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
userGroupId = await umbracoApi.userGroup.createUserGroupWithLanguageAndContentSection(userGroupName, englishIsoCode);
|
||||
await umbracoApi.user.setUserPermissions(testUser.name, testUser.email, testUser.password, userGroupId);
|
||||
testUserCookieAndToken = await umbracoApi.user.loginToUser(testUser.name, testUser.email, testUser.password);
|
||||
await umbracoUi.goToBackOffice();
|
||||
await umbracoUi.userGroup.goToSection(ConstantHelper.sections.content, false);
|
||||
await umbracoUi.content.doesDocumentSectionHaveLanguageSelected(englishLanguageName);
|
||||
await umbracoUi.content.changeDocumentSectionLanguage(vietnameseLanguageName);
|
||||
|
||||
// Act
|
||||
await umbracoUi.content.goToContentWithName(vietnameseDocumentName);
|
||||
|
||||
// Assert
|
||||
await umbracoUi.content.isDocumentPropertyEditable(dataTypeName, false);
|
||||
});
|
||||
@@ -0,0 +1,51 @@
|
||||
import {ConstantHelper, test} from '@umbraco/playwright-testhelpers';
|
||||
|
||||
const testUser = ConstantHelper.testUserCredentials;
|
||||
let testUserCookieAndToken = {cookie: "", accessToken: "", refreshToken: ""};
|
||||
|
||||
const userGroupName = 'TestUserGroup';
|
||||
let userGroupId = null;
|
||||
|
||||
test.beforeEach(async ({umbracoApi}) => {
|
||||
await umbracoApi.user.ensureNameNotExists(testUser.name);
|
||||
await umbracoApi.userGroup.ensureNameNotExists(userGroupName);
|
||||
});
|
||||
|
||||
test.afterEach(async ({umbracoApi}) => {
|
||||
// Ensure we are logged in to admin
|
||||
await umbracoApi.loginToAdminUser(testUserCookieAndToken.cookie, testUserCookieAndToken.accessToken, testUserCookieAndToken.refreshToken);
|
||||
await umbracoApi.userGroup.ensureNameNotExists(userGroupName);
|
||||
});
|
||||
|
||||
test('can go to section defined in userGroup', async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
userGroupId = await umbracoApi.userGroup.createSimpleUserGroupWithContentSection(userGroupName);
|
||||
await umbracoApi.user.setUserPermissions(testUser.name, testUser.email, testUser.password, userGroupId);
|
||||
testUserCookieAndToken = await umbracoApi.user.loginToUser(testUser.name, testUser.email, testUser.password);
|
||||
|
||||
// Act
|
||||
await umbracoUi.goToBackOffice();
|
||||
|
||||
// Assert
|
||||
await umbracoUi.content.isSectionWithNameVisible(ConstantHelper.sections.content);
|
||||
await umbracoUi.content.goToSection(ConstantHelper.sections.content, false);
|
||||
});
|
||||
|
||||
test('can not see section that is not defined in userGroup', async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
userGroupId = await umbracoApi.userGroup.createSimpleUserGroupWithContentSection(userGroupName);
|
||||
await umbracoApi.user.setUserPermissions(testUser.name, testUser.email, testUser.password, userGroupId);
|
||||
testUserCookieAndToken = await umbracoApi.user.loginToUser(testUser.name, testUser.email, testUser.password);
|
||||
|
||||
// Act
|
||||
await umbracoUi.goToBackOffice();
|
||||
|
||||
// Assert
|
||||
await umbracoUi.content.isSectionWithNameVisible(ConstantHelper.sections.content);
|
||||
await umbracoUi.content.isSectionWithNameVisible(ConstantHelper.sections.media, false);
|
||||
await umbracoUi.content.isSectionWithNameVisible(ConstantHelper.sections.settings, false);
|
||||
await umbracoUi.content.isSectionWithNameVisible(ConstantHelper.sections.users, false);
|
||||
await umbracoUi.content.isSectionWithNameVisible(ConstantHelper.sections.members, false);
|
||||
await umbracoUi.content.isSectionWithNameVisible(ConstantHelper.sections.dictionary, false);
|
||||
await umbracoUi.content.isSectionWithNameVisible(ConstantHelper.sections.packages, false);
|
||||
});
|
||||
@@ -424,7 +424,7 @@ test('can disable a user', async ({umbracoApi, umbracoUi}) => {
|
||||
await umbracoUi.user.clickConfirmDisableButton();
|
||||
|
||||
// Assert
|
||||
await umbracoUi.user.doesSuccessNotificationHaveText(NotificationConstantHelper.success.saved);
|
||||
await umbracoUi.user.doesSuccessNotificationHaveText(NotificationConstantHelper.success.userDisabled);
|
||||
expect(umbracoUi.user.isUserDisabledTextVisible()).toBeTruthy();
|
||||
const userData = await umbracoApi.user.getByName(nameOfTheUser);
|
||||
expect(userData.state).toBe(disabledStatus);
|
||||
@@ -444,7 +444,8 @@ test('can enable a user', {tag: '@smoke'}, async ({umbracoApi, umbracoUi}) => {
|
||||
await umbracoUi.user.clickConfirmEnableButton();
|
||||
|
||||
// Assert
|
||||
await umbracoUi.user.doesSuccessNotificationHaveText(NotificationConstantHelper.success.userDisabled);
|
||||
// TODO: Unskip when it shows userEnabled/userInactive instead of userDisabled
|
||||
// await umbracoUi.user.doesSuccessNotificationHaveText(NotificationConstantHelper.success.userEnabled);
|
||||
await umbracoUi.user.isUserActiveTextVisible();
|
||||
// The state of the user is not enabled. The reason for this is that the user has not logged in, resulting in the state Inactive.
|
||||
const userData = await umbracoApi.user.getByName(nameOfTheUser);
|
||||
@@ -480,7 +481,7 @@ test('can remove an avatar from a user', async ({umbracoApi, umbracoUi}) => {
|
||||
await umbracoUi.user.clickRemovePhotoButton();
|
||||
|
||||
// Assert
|
||||
await umbracoUi.user.doesSuccessNotificationHaveText(NotificationConstantHelper.success.saved);
|
||||
await umbracoUi.user.doesSuccessNotificationHaveText(NotificationConstantHelper.success.avatarDeleted);
|
||||
const userData = await umbracoApi.user.getByName(nameOfTheUser);
|
||||
expect(userData.avatarUrls).toHaveLength(0);
|
||||
});
|
||||
|
||||
@@ -0,0 +1,474 @@
|
||||
import {ConstantHelper, NotificationConstantHelper, test} from '@umbraco/playwright-testhelpers';
|
||||
import {expect} from "@playwright/test";
|
||||
|
||||
const allPermissions = {
|
||||
uiPermission:
|
||||
['Browse Node',
|
||||
'Create Document Blueprint',
|
||||
'Delete',
|
||||
'Create',
|
||||
'Notifications',
|
||||
'Publish',
|
||||
'Set permissions',
|
||||
'Unpublish',
|
||||
'Update',
|
||||
'Duplicate',
|
||||
'Move to',
|
||||
'Sort children',
|
||||
'Culture and Hostnames',
|
||||
'Public Access',
|
||||
'Rollback'],
|
||||
verbPermission: [
|
||||
'Umb.Document.Read',
|
||||
'Umb.Document.CreateBlueprint',
|
||||
'Umb.Document.Delete',
|
||||
'Umb.Document.Create',
|
||||
'Umb.Document.Notifications',
|
||||
'Umb.Document.Publish',
|
||||
'Umb.Document.Permissions',
|
||||
'Umb.Document.Unpublish',
|
||||
'Umb.Document.Update',
|
||||
'Umb.Document.Duplicate',
|
||||
'Umb.Document.Move',
|
||||
'Umb.Document.Sort',
|
||||
'Umb.Document.CultureAndHostnames',
|
||||
'Umb.Document.PublicAccess',
|
||||
'Umb.Document.Rollback'
|
||||
]
|
||||
};
|
||||
|
||||
const englishLanguage = 'English (United States)';
|
||||
|
||||
const userGroupName = 'TestUserGroupName';
|
||||
|
||||
test.beforeEach(async ({umbracoUi, umbracoApi}) => {
|
||||
await umbracoApi.userGroup.ensureNameNotExists(userGroupName);
|
||||
await umbracoUi.goToBackOffice();
|
||||
await umbracoUi.userGroup.goToSection(ConstantHelper.sections.users);
|
||||
});
|
||||
|
||||
test.afterEach(async ({umbracoApi}) => {
|
||||
await umbracoApi.userGroup.ensureNameNotExists(userGroupName);
|
||||
});
|
||||
|
||||
test('can create an empty user group', async ({umbracoApi, umbracoUi}) => {
|
||||
// Act
|
||||
await umbracoUi.userGroup.clickUserGroupsTabButton();
|
||||
await umbracoUi.userGroup.clickCreateUserGroupButton();
|
||||
await umbracoUi.userGroup.enterUserGroupName(userGroupName);
|
||||
await umbracoUi.userGroup.clickSaveButton();
|
||||
|
||||
// Assert
|
||||
await umbracoUi.userGroup.doesSuccessNotificationHaveText(NotificationConstantHelper.success.created);
|
||||
expect(await umbracoApi.userGroup.doesNameExist(userGroupName)).toBeTruthy();
|
||||
// Checks if the user group was created in the UI as well
|
||||
await umbracoUi.userGroup.clickUserGroupsTabButton();
|
||||
await umbracoUi.userGroup.isUserGroupWithNameVisible(userGroupName);
|
||||
})
|
||||
|
||||
test('can rename a user group', async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
const oldUserGroupName = 'OldUserGroupName';
|
||||
await umbracoApi.userGroup.ensureNameNotExists(oldUserGroupName);
|
||||
await umbracoApi.userGroup.createEmptyUserGroup(oldUserGroupName);
|
||||
await umbracoUi.userGroup.clickUserGroupsTabButton();
|
||||
await umbracoUi.userGroup.clickUserGroupWithName(oldUserGroupName);
|
||||
|
||||
// Act
|
||||
await umbracoUi.userGroup.enterUserGroupName(userGroupName);
|
||||
await umbracoUi.userGroup.clickSaveButton();
|
||||
|
||||
// Assert
|
||||
await umbracoUi.userGroup.doesSuccessNotificationHaveText(NotificationConstantHelper.success.saved);
|
||||
expect(await umbracoApi.userGroup.doesNameExist(userGroupName)).toBeTruthy();
|
||||
// Checks if the user group was created in the UI as well
|
||||
await umbracoUi.userGroup.clickUserGroupsTabButton();
|
||||
await umbracoUi.userGroup.isUserGroupWithNameVisible(userGroupName);
|
||||
await umbracoUi.userGroup.isUserGroupWithNameVisible(oldUserGroupName, false);
|
||||
});
|
||||
|
||||
test('can update a user group', async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
await umbracoApi.userGroup.createEmptyUserGroup(userGroupName);
|
||||
await umbracoUi.userGroup.clickUserGroupsTabButton();
|
||||
await umbracoUi.userGroup.clickUserGroupWithName(userGroupName);
|
||||
|
||||
// Act
|
||||
await umbracoUi.userGroup.clickPermissionsByName([allPermissions.uiPermission[0]]);
|
||||
await umbracoUi.userGroup.clickSaveButton();
|
||||
|
||||
// Assert
|
||||
await umbracoUi.userGroup.doesSuccessNotificationHaveText(NotificationConstantHelper.success.saved);
|
||||
await umbracoUi.reloadPage();
|
||||
await umbracoUi.userGroup.doesUserGroupHavePermission(allPermissions.uiPermission[0]);
|
||||
const userGroupData = await umbracoApi.userGroup.getByName(userGroupName);
|
||||
expect(userGroupData.fallbackPermissions).toContain(allPermissions.verbPermission[0]);
|
||||
});
|
||||
|
||||
test('can delete a user group', async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
await umbracoApi.userGroup.createSimpleUserGroupWithContentSection(userGroupName);
|
||||
await umbracoUi.userGroup.clickUserGroupsTabButton();
|
||||
await umbracoUi.userGroup.clickUserGroupWithName(userGroupName);
|
||||
|
||||
// Act
|
||||
await umbracoUi.userGroup.clickDeleteButton();
|
||||
await umbracoUi.userGroup.clickConfirmToDeleteButton();
|
||||
|
||||
// Assert
|
||||
await umbracoUi.userGroup.doesSuccessNotificationHaveText(NotificationConstantHelper.success.deleted);
|
||||
expect(await umbracoApi.userGroup.doesNameExist(userGroupName)).toBeFalsy();
|
||||
await umbracoUi.userGroup.clickUserGroupsTabButton();
|
||||
await umbracoUi.userGroup.isUserGroupWithNameVisible(userGroupName, false);
|
||||
});
|
||||
|
||||
test('can add a section to a user group', async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
await umbracoApi.userGroup.createEmptyUserGroup(userGroupName);
|
||||
await umbracoUi.userGroup.clickUserGroupsTabButton();
|
||||
await umbracoUi.userGroup.clickUserGroupWithName(userGroupName);
|
||||
|
||||
// Act
|
||||
await umbracoUi.userGroup.addSectionWithNameToUserGroup('Content');
|
||||
await umbracoUi.userGroup.clickSaveButton();
|
||||
|
||||
// Assert
|
||||
await umbracoUi.userGroup.doesSuccessNotificationHaveText(NotificationConstantHelper.success.saved);
|
||||
await umbracoUi.userGroup.clickUserGroupsTabButton();
|
||||
await umbracoUi.userGroup.doesUserGroupHaveSection(userGroupName, 'Content');
|
||||
})
|
||||
|
||||
test('can add multiple sections to a user group', async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
await umbracoApi.userGroup.createSimpleUserGroupWithContentSection(userGroupName);
|
||||
await umbracoUi.userGroup.clickUserGroupsTabButton();
|
||||
await umbracoUi.userGroup.clickUserGroupWithName(userGroupName);
|
||||
|
||||
// Act
|
||||
await umbracoUi.userGroup.addSectionWithNameToUserGroup('Media');
|
||||
await umbracoUi.userGroup.clickSaveButton();
|
||||
|
||||
// Assert
|
||||
await umbracoUi.userGroup.doesSuccessNotificationHaveText(NotificationConstantHelper.success.saved);
|
||||
await umbracoUi.userGroup.clickUserGroupsTabButton();
|
||||
await umbracoUi.userGroup.doesUserGroupHaveSection(userGroupName, 'Content');
|
||||
await umbracoUi.userGroup.doesUserGroupHaveSection(userGroupName, 'Media');
|
||||
});
|
||||
|
||||
test('can remove a section from a user group', async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
await umbracoApi.userGroup.createSimpleUserGroupWithContentSection(userGroupName);
|
||||
await umbracoUi.userGroup.clickUserGroupsTabButton();
|
||||
await umbracoUi.userGroup.clickUserGroupWithName(userGroupName);
|
||||
|
||||
// Act
|
||||
await umbracoUi.userGroup.clickRemoveSectionFromUserGroup('Content');
|
||||
await umbracoUi.userGroup.clickConfirmRemoveButton();
|
||||
await umbracoUi.userGroup.clickSaveButton();
|
||||
|
||||
// Assert
|
||||
await umbracoUi.userGroup.doesSuccessNotificationHaveText(NotificationConstantHelper.success.saved);
|
||||
await umbracoUi.userGroup.clickUserGroupsTabButton();
|
||||
await umbracoUi.userGroup.doesUserGroupHaveSection(userGroupName, 'Content', false);
|
||||
const userGroupData = await umbracoApi.userGroup.getByName(userGroupName);
|
||||
expect(userGroupData.sections).toEqual([]);
|
||||
});
|
||||
|
||||
test('can add a language to a user group', async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
await umbracoApi.userGroup.createEmptyUserGroup(userGroupName);
|
||||
await umbracoUi.userGroup.clickUserGroupsTabButton();
|
||||
await umbracoUi.userGroup.clickUserGroupWithName(userGroupName);
|
||||
|
||||
// Act
|
||||
await umbracoUi.userGroup.addLanguageToUserGroup(englishLanguage);
|
||||
await umbracoUi.userGroup.clickSaveButton();
|
||||
|
||||
// Assert
|
||||
await umbracoUi.userGroup.doesSuccessNotificationHaveText(NotificationConstantHelper.success.saved);
|
||||
await umbracoUi.reloadPage();
|
||||
await umbracoUi.userGroup.doesUserGroupContainLanguage(englishLanguage);
|
||||
expect(await umbracoApi.userGroup.doesUserGroupContainLanguage(userGroupName, 'en-US')).toBeTruthy();
|
||||
})
|
||||
|
||||
test('can enable all languages for a user group', async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
await umbracoApi.userGroup.createEmptyUserGroup(userGroupName);
|
||||
await umbracoUi.userGroup.clickUserGroupsTabButton();
|
||||
await umbracoUi.userGroup.clickUserGroupWithName(userGroupName);
|
||||
|
||||
// Act
|
||||
await umbracoUi.userGroup.clickAllowAccessToAllLanguages();
|
||||
await umbracoUi.userGroup.clickSaveButton();
|
||||
|
||||
// Assert
|
||||
await umbracoUi.userGroup.doesSuccessNotificationHaveText(NotificationConstantHelper.success.saved);
|
||||
expect(await umbracoApi.userGroup.doesUserGroupContainAccessToAllLanguages(userGroupName)).toBeTruthy();
|
||||
})
|
||||
|
||||
test('can add multiple languages to a user group', async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
await umbracoApi.userGroup.createUserGroupWithLanguage(userGroupName, 'en-US');
|
||||
const danishLanguage = 'Danish';
|
||||
await umbracoApi.language.ensureNameNotExists(danishLanguage);
|
||||
await umbracoApi.language.createDanishLanguage();
|
||||
await umbracoUi.userGroup.clickUserGroupsTabButton();
|
||||
await umbracoUi.userGroup.clickUserGroupWithName(userGroupName);
|
||||
|
||||
// Act
|
||||
await umbracoUi.userGroup.addLanguageToUserGroup(danishLanguage);
|
||||
await umbracoUi.userGroup.clickSaveButton();
|
||||
|
||||
// Assert
|
||||
await umbracoUi.userGroup.doesSuccessNotificationHaveText(NotificationConstantHelper.success.saved);
|
||||
await umbracoUi.reloadPage();
|
||||
await umbracoUi.userGroup.doesUserGroupContainLanguage(englishLanguage);
|
||||
await umbracoUi.userGroup.doesUserGroupContainLanguage(danishLanguage);
|
||||
expect(await umbracoApi.userGroup.doesUserGroupContainLanguage(userGroupName, 'en-US')).toBeTruthy();
|
||||
expect(await umbracoApi.userGroup.doesUserGroupContainLanguage(userGroupName, 'da')).toBeTruthy();
|
||||
|
||||
// Clean
|
||||
await umbracoApi.language.ensureNameNotExists(danishLanguage);
|
||||
})
|
||||
|
||||
test('can remove language from a user group', async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
await umbracoApi.userGroup.createUserGroupWithLanguage(userGroupName, 'en-US');
|
||||
expect(await umbracoApi.userGroup.doesUserGroupContainLanguage(userGroupName, 'en-US')).toBeTruthy();
|
||||
await umbracoUi.userGroup.clickUserGroupsTabButton();
|
||||
await umbracoUi.userGroup.clickUserGroupWithName(userGroupName);
|
||||
|
||||
// Act
|
||||
await umbracoUi.userGroup.clickRemoveLanguageFromUserGroup(englishLanguage);
|
||||
await umbracoUi.userGroup.clickConfirmRemoveButton();
|
||||
await umbracoUi.userGroup.clickSaveButton();
|
||||
|
||||
// Assert
|
||||
await umbracoUi.userGroup.doesSuccessNotificationHaveText(NotificationConstantHelper.success.saved);
|
||||
await umbracoUi.reloadPage();
|
||||
await umbracoUi.userGroup.doesUserGroupContainLanguage(englishLanguage, false);
|
||||
expect(await umbracoApi.userGroup.doesUserGroupContainLanguage(userGroupName, 'en-US')).toBeFalsy();
|
||||
})
|
||||
|
||||
test('can add a content start node to a user group', async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
await umbracoApi.userGroup.createEmptyUserGroup(userGroupName);
|
||||
const documentTypeName = 'TestDocumentType';
|
||||
const documentName = 'TestDocument';
|
||||
await umbracoApi.documentType.ensureNameNotExists(documentTypeName);
|
||||
const documentTypeId = await umbracoApi.documentType.createDefaultDocumentTypeWithAllowAsRoot(documentTypeName);
|
||||
const documentId = await umbracoApi.document.createDefaultDocument(documentName, documentTypeId);
|
||||
await umbracoUi.userGroup.clickUserGroupsTabButton();
|
||||
await umbracoUi.userGroup.clickUserGroupWithName(userGroupName);
|
||||
|
||||
// Act
|
||||
await umbracoUi.userGroup.clickChooseContentStartNodeButton();
|
||||
await umbracoUi.userGroup.clickLabelWithName(documentName);
|
||||
await umbracoUi.userGroup.clickChooseContainerButton();
|
||||
await umbracoUi.userGroup.clickSaveButton();
|
||||
|
||||
// Assert
|
||||
await umbracoUi.userGroup.doesSuccessNotificationHaveText(NotificationConstantHelper.success.saved);
|
||||
expect(await umbracoApi.userGroup.doesUserGroupContainContentStartNodeId(userGroupName, documentId)).toBeTruthy();
|
||||
|
||||
// Clean
|
||||
await umbracoApi.documentType.ensureNameNotExists(documentTypeName);
|
||||
});
|
||||
|
||||
test('can remove a content start node from a user group ', async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
const documentTypeName = 'TestDocumentType';
|
||||
const documentName = 'TestDocument';
|
||||
await umbracoApi.documentType.ensureNameNotExists(documentTypeName);
|
||||
const documentTypeId = await umbracoApi.documentType.createDefaultDocumentTypeWithAllowAsRoot(documentTypeName);
|
||||
const documentId = await umbracoApi.document.createDefaultDocument(documentName, documentTypeId);
|
||||
await umbracoApi.userGroup.createUserGroupWithDocumentStartNode(userGroupName, documentId);
|
||||
expect(await umbracoApi.userGroup.doesUserGroupContainContentStartNodeId(userGroupName, documentId)).toBeTruthy();
|
||||
await umbracoUi.userGroup.clickUserGroupsTabButton();
|
||||
await umbracoUi.userGroup.clickUserGroupWithName(userGroupName);
|
||||
|
||||
// Act
|
||||
await umbracoUi.userGroup.clickRemoveContentStartNodeFromUserGroup(documentName);
|
||||
await umbracoUi.userGroup.clickConfirmRemoveButton();
|
||||
await umbracoUi.userGroup.clickSaveButton();
|
||||
|
||||
// Assert
|
||||
await umbracoUi.userGroup.doesSuccessNotificationHaveText(NotificationConstantHelper.success.saved);
|
||||
expect(await umbracoApi.userGroup.doesUserGroupContainContentStartNodeId(userGroupName, documentId)).toBeFalsy();
|
||||
|
||||
// Clean
|
||||
await umbracoApi.document.ensureNameNotExists(documentTypeName);
|
||||
});
|
||||
|
||||
test('can enable access to all content from a user group ', async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
await umbracoApi.userGroup.createEmptyUserGroup(userGroupName);
|
||||
await umbracoUi.userGroup.clickUserGroupsTabButton();
|
||||
await umbracoUi.userGroup.clickUserGroupWithName(userGroupName);
|
||||
|
||||
// Act
|
||||
await umbracoUi.userGroup.clickAllowAccessToAllDocuments();
|
||||
await umbracoUi.userGroup.clickSaveButton();
|
||||
|
||||
// Assert
|
||||
await umbracoUi.userGroup.doesSuccessNotificationHaveText(NotificationConstantHelper.success.saved);
|
||||
expect(await umbracoApi.userGroup.doesUserGroupContainDocumentRootAccess(userGroupName)).toBeTruthy();
|
||||
});
|
||||
|
||||
test('can add a media start node to a user group', async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
await umbracoApi.userGroup.createEmptyUserGroup(userGroupName);
|
||||
const mediaName = 'TestMedia';
|
||||
await umbracoApi.media.ensureNameNotExists(mediaName);
|
||||
const mediaId = await umbracoApi.media.createDefaultMediaFile(mediaName);
|
||||
await umbracoUi.userGroup.clickUserGroupsTabButton();
|
||||
await umbracoUi.userGroup.clickUserGroupWithName(userGroupName);
|
||||
|
||||
// Act
|
||||
await umbracoUi.userGroup.clickChooseMediaStartNodeButton();
|
||||
await umbracoUi.userGroup.clickMediaCardWithName(mediaName);
|
||||
await umbracoUi.userGroup.clickSubmitButton();
|
||||
await umbracoUi.userGroup.clickSaveButton();
|
||||
|
||||
// Assert
|
||||
await umbracoUi.userGroup.doesSuccessNotificationHaveText(NotificationConstantHelper.success.saved);
|
||||
expect(await umbracoApi.userGroup.doesUserGroupContainMediaStartNodeId(userGroupName, mediaId)).toBeTruthy();
|
||||
|
||||
// Clean
|
||||
await umbracoApi.media.ensureNameNotExists(mediaName);
|
||||
});
|
||||
|
||||
test('can remove a media start node from a user group ', async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
const mediaName = 'TestMedia';
|
||||
await umbracoApi.media.ensureNameNotExists(mediaName);
|
||||
const mediaId = await umbracoApi.media.createDefaultMediaFile(mediaName);
|
||||
await umbracoApi.userGroup.createUserGroupWithMediaStartNode(userGroupName, mediaId);
|
||||
expect(await umbracoApi.userGroup.doesUserGroupContainMediaStartNodeId(userGroupName, mediaId)).toBeTruthy();
|
||||
await umbracoUi.userGroup.clickUserGroupsTabButton();
|
||||
await umbracoUi.userGroup.clickUserGroupWithName(userGroupName);
|
||||
|
||||
// Act
|
||||
await umbracoUi.userGroup.clickRemoveMediaStartNodeFromUserGroup(mediaName);
|
||||
await umbracoUi.userGroup.clickConfirmRemoveButton();
|
||||
await umbracoUi.userGroup.clickSaveButton();
|
||||
|
||||
// Assert
|
||||
await umbracoUi.userGroup.doesSuccessNotificationHaveText(NotificationConstantHelper.success.saved);
|
||||
expect(await umbracoApi.userGroup.doesUserGroupContainMediaStartNodeId(userGroupName, mediaId)).toBeFalsy();
|
||||
|
||||
// Clean
|
||||
await umbracoApi.media.ensureNameNotExists(mediaName);
|
||||
});
|
||||
|
||||
test('can enable access to all media in a user group ', async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
await umbracoApi.userGroup.createEmptyUserGroup(userGroupName);
|
||||
await umbracoUi.userGroup.clickUserGroupsTabButton();
|
||||
await umbracoUi.userGroup.clickUserGroupWithName(userGroupName);
|
||||
|
||||
// Act
|
||||
await umbracoUi.userGroup.clickAllowAccessToAllMedia();
|
||||
await umbracoUi.userGroup.clickSaveButton();
|
||||
|
||||
// Assert
|
||||
await umbracoUi.userGroup.doesSuccessNotificationHaveText(NotificationConstantHelper.success.saved);
|
||||
expect(await umbracoApi.userGroup.doesUserGroupContainMediaRootAccess(userGroupName)).toBeTruthy();
|
||||
});
|
||||
|
||||
test('can enable all permissions for a user group', async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
await umbracoApi.userGroup.createEmptyUserGroup(userGroupName);
|
||||
|
||||
// Act
|
||||
await umbracoUi.userGroup.clickUserGroupsTabButton();
|
||||
await umbracoUi.userGroup.clickUserGroupWithName(userGroupName);
|
||||
await umbracoUi.userGroup.clickPermissionsByName(allPermissions.uiPermission);
|
||||
await umbracoUi.userGroup.clickSaveButton();
|
||||
|
||||
// Assert
|
||||
await umbracoUi.userGroup.doesSuccessNotificationHaveText(NotificationConstantHelper.success.saved);
|
||||
await umbracoUi.reloadPage();
|
||||
await umbracoUi.userGroup.doesUserGroupHavePermissionEnabled(allPermissions.uiPermission);
|
||||
const userGroupData = await umbracoApi.userGroup.getByName(userGroupName);
|
||||
expect(userGroupData.fallbackPermissions).toEqual(allPermissions.verbPermission);
|
||||
});
|
||||
|
||||
test('can add granular permission to a specific document for a user group', async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
const documentTypeName = 'TestDocumentType';
|
||||
const documentName = 'TestDocument';
|
||||
await umbracoApi.documentType.ensureNameNotExists(documentTypeName);
|
||||
const documentTypeId = await umbracoApi.documentType.createDefaultDocumentTypeWithAllowAsRoot(documentTypeName);
|
||||
const documentId = await umbracoApi.document.createDefaultDocument(documentName, documentTypeId);
|
||||
await umbracoApi.userGroup.createEmptyUserGroup(userGroupName);
|
||||
await umbracoUi.userGroup.clickUserGroupsTabButton();
|
||||
await umbracoUi.userGroup.clickUserGroupWithName(userGroupName);
|
||||
|
||||
// Act
|
||||
await umbracoUi.userGroup.clickAddGranularPermission();
|
||||
await umbracoUi.userGroup.clickLabelWithName(documentName);
|
||||
await umbracoUi.userGroup.clickGranularPermissionsByName([allPermissions.uiPermission[0]]);
|
||||
await umbracoUi.userGroup.clickConfirmButton();
|
||||
await umbracoUi.userGroup.clickSaveButton();
|
||||
|
||||
// Assert
|
||||
await umbracoUi.userGroup.doesSuccessNotificationHaveText(NotificationConstantHelper.success.saved);
|
||||
expect(await umbracoApi.userGroup.doesUserGroupContainGranularPermissionsForDocument(userGroupName, documentId, [allPermissions.verbPermission[0]])).toBeTruthy();
|
||||
|
||||
// Clean
|
||||
await umbracoApi.document.ensureNameNotExists(documentTypeName);
|
||||
});
|
||||
|
||||
test('can add all granular permissions to a specific document for a user group', async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
const documentTypeName = 'TestDocumentType';
|
||||
const documentName = 'TestDocument';
|
||||
await umbracoApi.documentType.ensureNameNotExists(documentTypeName);
|
||||
const documentTypeId = await umbracoApi.documentType.createDefaultDocumentTypeWithAllowAsRoot(documentTypeName);
|
||||
const documentId = await umbracoApi.document.createDefaultDocument(documentName, documentTypeId);
|
||||
await umbracoApi.userGroup.createEmptyUserGroup(userGroupName);
|
||||
await umbracoUi.userGroup.clickUserGroupsTabButton();
|
||||
await umbracoUi.userGroup.clickUserGroupWithName(userGroupName);
|
||||
|
||||
// Act
|
||||
await umbracoUi.userGroup.clickAddGranularPermission();
|
||||
await umbracoUi.userGroup.clickLabelWithName(documentName);
|
||||
await umbracoUi.userGroup.clickGranularPermissionsByName(allPermissions.uiPermission);
|
||||
await umbracoUi.userGroup.clickConfirmButton();
|
||||
await umbracoUi.userGroup.clickSaveButton();
|
||||
|
||||
// Assert
|
||||
await umbracoUi.userGroup.doesSuccessNotificationHaveText(NotificationConstantHelper.success.saved);
|
||||
await umbracoUi.reloadPage();
|
||||
await umbracoUi.userGroup.clickGranularPermissionWithName(documentName);
|
||||
await umbracoUi.userGroup.doesUserGroupHavePermissionEnabled(allPermissions.uiPermission);
|
||||
expect(await umbracoApi.userGroup.doesUserGroupContainGranularPermissionsForDocument(userGroupName, documentId, allPermissions.verbPermission)).toBeTruthy();
|
||||
|
||||
// Clean
|
||||
await umbracoApi.document.ensureNameNotExists(documentTypeName);
|
||||
});
|
||||
|
||||
test('can remove granular permission to a specific document for a user group', async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
const documentTypeName = 'TestDocumentType';
|
||||
const documentName = 'TestDocument';
|
||||
await umbracoApi.documentType.ensureNameNotExists(documentTypeName);
|
||||
const documentTypeId = await umbracoApi.documentType.createDefaultDocumentTypeWithAllowAsRoot(documentTypeName);
|
||||
const documentId = await umbracoApi.document.createDefaultDocument(documentName, documentTypeId);
|
||||
await umbracoApi.userGroup.createUserGroupWithPermissionsForSpecificDocumentWithBrowseNode(userGroupName, documentId);
|
||||
expect(await umbracoApi.userGroup.doesUserGroupContainGranularPermissionsForDocument(userGroupName, documentId, [allPermissions.verbPermission[0]])).toBeTruthy();
|
||||
await umbracoUi.userGroup.clickUserGroupsTabButton();
|
||||
await umbracoUi.userGroup.clickUserGroupWithName(userGroupName);
|
||||
|
||||
// Act
|
||||
await umbracoUi.userGroup.clickRemoveGranularPermissionWithName(documentName);
|
||||
await umbracoUi.userGroup.clickSaveButton();
|
||||
|
||||
// Assert
|
||||
await umbracoUi.userGroup.doesSuccessNotificationHaveText(NotificationConstantHelper.success.saved);
|
||||
expect(await umbracoApi.userGroup.doesUserGroupContainGranularPermissionsForDocument(userGroupName, documentId, [allPermissions.verbPermission[0]])).toBeFalsy();
|
||||
|
||||
// Clean
|
||||
await umbracoApi.document.ensureNameNotExists(documentTypeName);
|
||||
});
|
||||
Reference in New Issue
Block a user