V14 QA added user permission tests (#17226)
* Added test * Small changes * Added content start node tests * Added media start node tests * Cleaned up * More updates * Cleaned up * Added wait * Cleaned up * Bumped helpers * Updated to run user tests * Fixed user tests * Bumped helpers * Added missing semicolon * Fixes based on comments * Run smoke tests
This commit is contained in:
@@ -0,0 +1,97 @@
|
||||
import {ConstantHelper, test} from '@umbraco/playwright-testhelpers';
|
||||
import {expect} from '@playwright/test';
|
||||
|
||||
const testUser = {
|
||||
name: 'Test User',
|
||||
email: 'verySecureEmail@123.test',
|
||||
password: 'verySecurePassword123',
|
||||
};
|
||||
|
||||
const userGroupName = 'TestUserGroup';
|
||||
|
||||
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;
|
||||
|
||||
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);
|
||||
const 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);
|
||||
userGroupId = await umbracoApi.userGroup.createSimpleUserGroupWithContentSection(userGroupName);
|
||||
});
|
||||
|
||||
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
|
||||
await umbracoApi.user.setUserPermissions(testUser.name, testUser.email, testUser.password, userGroupId, [rootDocumentId]);
|
||||
testUserCookieAndToken = await umbracoApi.user.loginToUser(testUser.name, testUser.email, testUser.password);
|
||||
await umbracoUi.goToBackOffice();
|
||||
|
||||
// Act
|
||||
await umbracoUi.user.goToSection(ConstantHelper.sections.content, false);
|
||||
|
||||
// Assert
|
||||
await umbracoUi.content.isContentVisible(rootDocumentName);
|
||||
await umbracoUi.content.clickCaretButtonForContentName(rootDocumentName);
|
||||
await umbracoUi.content.isChildContentVisible(rootDocumentName, childDocumentOneName);
|
||||
await umbracoUi.content.isChildContentVisible(rootDocumentName, childDocumentTwoName);
|
||||
});
|
||||
|
||||
test('can see parent of start node but not access it', async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
await umbracoApi.user.setUserPermissions(testUser.name, testUser.email, testUser.password, userGroupId, [childDocumentOneId]);
|
||||
testUserCookieAndToken = await umbracoApi.user.loginToUser(testUser.name, testUser.email, testUser.password);
|
||||
await umbracoUi.goToBackOffice();
|
||||
|
||||
// Act
|
||||
await umbracoUi.user.goToSection(ConstantHelper.sections.content, false);
|
||||
|
||||
// Assert
|
||||
await umbracoUi.content.isContentVisible(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);
|
||||
});
|
||||
|
||||
test('can not see any content when no start nodes specified', async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
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.user.goToSection(ConstantHelper.sections.content, false);
|
||||
|
||||
// Assert
|
||||
await umbracoUi.content.isContentVisible(rootDocumentName, false);
|
||||
});
|
||||
@@ -0,0 +1,88 @@
|
||||
import {ConstantHelper, test} from '@umbraco/playwright-testhelpers';
|
||||
|
||||
const testUser = {
|
||||
name: 'Test User',
|
||||
email: 'verySecureEmail@123.test',
|
||||
password: 'verySecurePassword123',
|
||||
};
|
||||
|
||||
const userGroupName = 'TestUserGroup';
|
||||
let userGroupId = null;
|
||||
|
||||
let testUserCookieAndToken = {cookie: "", accessToken: "", refreshToken: ""};
|
||||
|
||||
let rootFolderId = null;
|
||||
let childFolderOneId = null;
|
||||
const rootFolderName = 'RootFolder';
|
||||
const childFolderOneName = 'ChildFolderOne';
|
||||
const childFolderTwoName = 'ChildFolderTwo';
|
||||
|
||||
test.beforeEach(async ({umbracoApi}) => {
|
||||
await umbracoApi.user.ensureNameNotExists(testUser.name);
|
||||
await umbracoApi.userGroup.ensureNameNotExists(userGroupName);
|
||||
await umbracoApi.media.ensureNameNotExists(rootFolderName);
|
||||
await umbracoApi.media.ensureNameNotExists(childFolderOneName);
|
||||
await umbracoApi.media.ensureNameNotExists(childFolderTwoName);
|
||||
rootFolderId = await umbracoApi.media.createDefaultMediaFolder(rootFolderName);
|
||||
childFolderOneId = await umbracoApi.media.createDefaultMediaFolderAndParentId(childFolderOneName, rootFolderId);
|
||||
await umbracoApi.media.createDefaultMediaFolderAndParentId(childFolderTwoName, rootFolderId);
|
||||
userGroupId = await umbracoApi.userGroup.createUserGroupWithMediaSection(userGroupName);
|
||||
});
|
||||
|
||||
test.afterEach(async ({umbracoApi}) => {
|
||||
// Ensure we are logged in to admin
|
||||
await umbracoApi.loginToAdminUser(testUserCookieAndToken.cookie, testUserCookieAndToken.accessToken, testUserCookieAndToken.refreshToken);
|
||||
await umbracoApi.user.ensureNameNotExists(testUser.name);
|
||||
await umbracoApi.userGroup.ensureNameNotExists(userGroupName);
|
||||
await umbracoApi.media.ensureNameNotExists(rootFolderName);
|
||||
await umbracoApi.media.ensureNameNotExists(childFolderOneName);
|
||||
await umbracoApi.media.ensureNameNotExists(childFolderTwoName);
|
||||
});
|
||||
|
||||
test('can see root media start node and children', async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
await umbracoApi.user.setUserPermissions(testUser.name, testUser.email, testUser.password, userGroupId, [], false, [rootFolderId]);
|
||||
testUserCookieAndToken = await umbracoApi.user.loginToUser(testUser.name, testUser.email, testUser.password);
|
||||
await umbracoUi.goToBackOffice();
|
||||
|
||||
// Act
|
||||
await umbracoUi.user.goToSection(ConstantHelper.sections.media, false);
|
||||
|
||||
// Assert
|
||||
await umbracoUi.media.isMediaVisible(rootFolderName);
|
||||
await umbracoUi.media.clickCaretButtonForMediaName(rootFolderName);
|
||||
await umbracoUi.media.isChildMediaVisible(rootFolderName, childFolderOneName);
|
||||
await umbracoUi.media.isChildMediaVisible(rootFolderName, childFolderTwoName);
|
||||
});
|
||||
|
||||
test('can see parent of start node but not access it', async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
await umbracoApi.user.setUserPermissions(testUser.name, testUser.email, testUser.password, userGroupId, [], false, [childFolderOneId]);
|
||||
testUserCookieAndToken = await umbracoApi.user.loginToUser(testUser.name, testUser.email, testUser.password);
|
||||
await umbracoUi.goToBackOffice();
|
||||
|
||||
// Act
|
||||
await umbracoUi.user.goToSection(ConstantHelper.sections.media, false);
|
||||
|
||||
// Assert
|
||||
await umbracoUi.media.isMediaVisible(rootFolderName);
|
||||
await umbracoUi.waitForTimeout(500);
|
||||
await umbracoUi.media.goToMediaWithName(rootFolderName);
|
||||
await umbracoUi.media.isTextWithMessageVisible('The authenticated user do not have access to this resource');
|
||||
await umbracoUi.media.clickCaretButtonForMediaName(rootFolderName);
|
||||
await umbracoUi.media.isChildMediaVisible(rootFolderName, childFolderOneName);
|
||||
await umbracoUi.media.isChildMediaVisible(rootFolderName, childFolderTwoName, false);
|
||||
});
|
||||
|
||||
test('can not see any media when no media start nodes specified', async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
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.user.goToSection(ConstantHelper.sections.media, false);
|
||||
|
||||
// Assert
|
||||
await umbracoUi.media.isMediaVisible(rootFolderName, false);
|
||||
});
|
||||
@@ -0,0 +1,49 @@
|
||||
import {ConstantHelper, test} from '@umbraco/playwright-testhelpers';
|
||||
|
||||
const testUser = {
|
||||
name: 'Test User',
|
||||
email: 'verySecureEmail@123.test',
|
||||
password: 'verySecurePassword123',
|
||||
};
|
||||
|
||||
const userGroupName = 'TestUserGroup';
|
||||
|
||||
let testUserCookieAndToken = {cookie: "", accessToken: "", refreshToken: ""};
|
||||
let userGroupId = null;
|
||||
|
||||
test.beforeEach(async ({umbracoApi}) => {
|
||||
await umbracoApi.user.ensureNameNotExists(testUser.name);
|
||||
await umbracoApi.userGroup.ensureNameNotExists(userGroupName);
|
||||
userGroupId = await umbracoApi.userGroup.createSimpleUserGroupWithContentSection(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 see correct translation for content in english', async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
await umbracoApi.user.setUserPermissions(testUser.name, testUser.email, testUser.password, userGroupId, [], true, [], false, 'en-us');
|
||||
testUserCookieAndToken = await umbracoApi.user.loginToUser(testUser.name, testUser.email, testUser.password);
|
||||
|
||||
// Act
|
||||
await umbracoUi.goToBackOffice();
|
||||
|
||||
// Assert
|
||||
await umbracoUi.user.isSectionWithNameVisible(ConstantHelper.sections.content, false);
|
||||
});
|
||||
|
||||
test('can see correct translation for content in danish', async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
await umbracoApi.user.setUserPermissions(testUser.name, testUser.email, testUser.password, userGroupId, [], true, [], false, 'da-dk');
|
||||
testUserCookieAndToken = await umbracoApi.user.loginToUser(testUser.name, testUser.email, testUser.password);
|
||||
|
||||
// Act
|
||||
await umbracoUi.goToBackOffice();
|
||||
|
||||
// Assert
|
||||
// Indhold is the Danish translation of Content
|
||||
await umbracoUi.user.isSectionWithNameVisible('Indhold', true);
|
||||
});
|
||||
@@ -4,13 +4,16 @@ import {expect} from '@playwright/test';
|
||||
const nameOfTheUser = 'TestUser';
|
||||
const userEmail = 'TestUser@EmailTest.test';
|
||||
const defaultUserGroupName = 'Writers';
|
||||
let userCount = null;
|
||||
|
||||
test.beforeEach(async ({umbracoUi, umbracoApi}) => {
|
||||
await umbracoUi.goToBackOffice();
|
||||
await umbracoApi.user.ensureNameNotExists(nameOfTheUser);
|
||||
});
|
||||
|
||||
test.afterEach(async ({umbracoApi}) => {
|
||||
test.afterEach(async ({umbracoApi, umbracoUi}) => {
|
||||
// Waits so we can try to avoid db locks
|
||||
await umbracoUi.waitForTimeout(500);
|
||||
await umbracoApi.user.ensureNameNotExists(nameOfTheUser);
|
||||
});
|
||||
|
||||
@@ -501,10 +504,11 @@ test('can search for a user', async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
const userGroup = await umbracoApi.userGroup.getByName(defaultUserGroupName);
|
||||
await umbracoApi.user.createDefaultUser(nameOfTheUser, userEmail, [userGroup.id]);
|
||||
userCount = await umbracoApi.user.getUsersCount();
|
||||
await umbracoUi.user.goToSection(ConstantHelper.sections.users);
|
||||
|
||||
// Act
|
||||
await umbracoUi.user.doesUserSectionContainUserAmount(2);
|
||||
await umbracoUi.user.doesUserSectionContainUserAmount(userCount);
|
||||
await umbracoUi.user.searchInUserSection(nameOfTheUser);
|
||||
|
||||
// Assert
|
||||
@@ -519,10 +523,11 @@ test('can filter by status', async ({umbracoApi, umbracoUi}) => {
|
||||
const inactiveStatus = 'Inactive';
|
||||
const userGroup = await umbracoApi.userGroup.getByName(defaultUserGroupName);
|
||||
await umbracoApi.user.createDefaultUser(nameOfTheUser, userEmail, [userGroup.id]);
|
||||
userCount = await umbracoApi.user.getUsersCount();
|
||||
await umbracoUi.user.goToSection(ConstantHelper.sections.users);
|
||||
|
||||
// Act
|
||||
await umbracoUi.user.doesUserSectionContainUserAmount(2);
|
||||
await umbracoUi.user.doesUserSectionContainUserAmount(userCount);
|
||||
await umbracoUi.user.filterByStatusName(inactiveStatus);
|
||||
|
||||
// Assert
|
||||
@@ -537,10 +542,11 @@ test('can filter by user groups', async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
const userGroup = await umbracoApi.userGroup.getByName(defaultUserGroupName);
|
||||
await umbracoApi.user.createDefaultUser(nameOfTheUser, userEmail, [userGroup.id]);
|
||||
userCount = await umbracoApi.user.getUsersCount();
|
||||
await umbracoUi.user.goToSection(ConstantHelper.sections.users);
|
||||
|
||||
// Act
|
||||
await umbracoUi.user.doesUserSectionContainUserAmount(2);
|
||||
await umbracoUi.user.doesUserSectionContainUserAmount(userCount);
|
||||
await umbracoUi.user.filterByGroupName(defaultUserGroupName);
|
||||
|
||||
// Assert
|
||||
@@ -554,16 +560,17 @@ test('can order by newest user', async ({umbracoApi, umbracoUi}) => {
|
||||
// Arrange
|
||||
const userGroup = await umbracoApi.userGroup.getByName(defaultUserGroupName);
|
||||
await umbracoApi.user.createDefaultUser(nameOfTheUser, userEmail, [userGroup.id]);
|
||||
userCount = await umbracoApi.user.getUsersCount();
|
||||
await umbracoUi.user.goToSection(ConstantHelper.sections.users);
|
||||
|
||||
// Act
|
||||
await umbracoUi.user.doesUserSectionContainUserAmount(2);
|
||||
await umbracoUi.user.doesUserSectionContainUserAmount(userCount);
|
||||
await umbracoUi.user.orderByNewestUser();
|
||||
|
||||
// Assert
|
||||
// Wait for filtering to be done
|
||||
await umbracoUi.waitForTimeout(200);
|
||||
await umbracoUi.user.doesUserSectionContainUserAmount(2);
|
||||
await umbracoUi.user.doesUserSectionContainUserAmount(userCount);
|
||||
await umbracoUi.user.isUserWithNameTheFirstUserInList(nameOfTheUser);
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user