diff --git a/tests/Umbraco.Tests.AcceptanceTest/package-lock.json b/tests/Umbraco.Tests.AcceptanceTest/package-lock.json index 94dc98e8f3..049faf7948 100644 --- a/tests/Umbraco.Tests.AcceptanceTest/package-lock.json +++ b/tests/Umbraco.Tests.AcceptanceTest/package-lock.json @@ -8,7 +8,7 @@ "hasInstallScript": true, "dependencies": { "@umbraco/json-models-builders": "^1.0.5", - "@umbraco/playwright-testhelpers": "2.0.0-beta", + "@umbraco/playwright-testhelpers": "2.0.0-beta.1", "camelize": "^1.0.0", "dotenv": "^16.3.1", "faker": "^4.1.0", @@ -141,9 +141,9 @@ } }, "node_modules/@umbraco/playwright-testhelpers": { - "version": "2.0.0-beta", - "resolved": "https://registry.npmjs.org/@umbraco/playwright-testhelpers/-/playwright-testhelpers-2.0.0-beta.tgz", - "integrity": "sha512-S0E0ds1VCsYrnpKSmGkbgZFrnRW1WudVkFuUSfwbi/Qb794iZCO7dKbT0Wg1ZjR3ryYeSsM21fd64DTLZmY5iA==", + "version": "2.0.0-beta.1", + "resolved": "https://registry.npmjs.org/@umbraco/playwright-testhelpers/-/playwright-testhelpers-2.0.0-beta.1.tgz", + "integrity": "sha512-tuuTqLgVrjXvj0VrYkH2H8Gp5wZAOyGPTYev6vtYxF6AOoegIUmQtMx3zMuadEgD1eRz0Qbd3yM78LGqmPi/jw==", "dependencies": { "@umbraco/json-models-builders": "^1.0.5", "camelize": "^1.0.0", diff --git a/tests/Umbraco.Tests.AcceptanceTest/package.json b/tests/Umbraco.Tests.AcceptanceTest/package.json index aac73e719a..c6a5647803 100644 --- a/tests/Umbraco.Tests.AcceptanceTest/package.json +++ b/tests/Umbraco.Tests.AcceptanceTest/package.json @@ -20,7 +20,7 @@ }, "dependencies": { "@umbraco/json-models-builders": "^1.0.5", - "@umbraco/playwright-testhelpers": "2.0.0-beta", + "@umbraco/playwright-testhelpers": "2.0.0-beta.1", "camelize": "^1.0.0", "dotenv": "^16.3.1", "faker": "^4.1.0", diff --git a/tests/Umbraco.Tests.AcceptanceTest/tests/ApiTesting/User/User.spec.ts b/tests/Umbraco.Tests.AcceptanceTest/tests/ApiTesting/User/User.spec.ts new file mode 100644 index 0000000000..0e85568821 --- /dev/null +++ b/tests/Umbraco.Tests.AcceptanceTest/tests/ApiTesting/User/User.spec.ts @@ -0,0 +1,70 @@ +import {test} from '@umbraco/playwright-testhelpers'; +import {expect} from "@playwright/test"; + +test.describe('User Tests', () => { + const userEmail = "user@email.com"; + const userName = "UserTests"; + + test.beforeEach(async ({page, umbracoApi}) => { + await umbracoApi.user.ensureUserNameNotExists(userName); + }); + + test.afterEach(async ({page, umbracoApi}) => { + await umbracoApi.user.ensureUserNameNotExists(userName); + }); + + test('can create a user', async ({page, umbracoApi, umbracoUi}) => { + // Gets the id for the writers userGroup + const userGroup = await umbracoApi.userGroup.getUserGroupByName("Writers"); + const userGroupId = [userGroup.id]; + + await umbracoApi.user.createUser(userEmail, userName, userGroupId); + + // Assert + await expect(await umbracoApi.user.doesUserWithNameExist(userName)).toBeTruthy(); + }); + + test('can update a user', async ({page, umbracoApi, umbracoUi}) => { + // Gets userGroup data for Writers and Translators + const userGroup = await umbracoApi.userGroup.getUserGroupByName("Writers"); + const anotherUserGroup = await umbracoApi.userGroup.getUserGroupByName("Translators"); + + const userGroupId = [userGroup.id]; + + await umbracoApi.user.createUser(userEmail, userName, userGroupId); + + const userData = await umbracoApi.user.getUserByName(userName); + + const newUserGroupData = [ + userGroup.id, + anotherUserGroup.id + ]; + + userData.userGroupIds = newUserGroupData; + + await umbracoApi.user.updateUserById(userData.id, userData); + + // Assert + await umbracoApi.user.doesUserWithNameExist(userName); + // Checks if the user was updated with another userGroupID + const updatedUser = await umbracoApi.user.getUserByName(userName); + await expect(updatedUser.userGroupIds.toString() == newUserGroupData.toString()).toBeTruthy(); + }); + + test('can delete a user', async ({page, umbracoApi, umbracoUi}) => { + const userGroupData = await umbracoApi.userGroup.getUserGroupByName("Writers"); + + const userData = [ + userGroupData.id + ]; + + await umbracoApi.user.createUser(userEmail, userName, userData); + + await expect(await umbracoApi.user.doesUserWithNameExist(userName)).toBeTruthy(); + + await umbracoApi.user.deleteUserByName(userName); + + // Assert + await expect(await umbracoApi.user.doesUserWithNameExist(userName)).toBeFalsy(); + }); +}); diff --git a/tests/Umbraco.Tests.AcceptanceTest/tests/ApiTesting/User/UserAvatar.spec.ts b/tests/Umbraco.Tests.AcceptanceTest/tests/ApiTesting/User/UserAvatar.spec.ts new file mode 100644 index 0000000000..81f7899c85 --- /dev/null +++ b/tests/Umbraco.Tests.AcceptanceTest/tests/ApiTesting/User/UserAvatar.spec.ts @@ -0,0 +1,68 @@ +import {test} from '@umbraco/playwright-testhelpers'; +import {expect} from "@playwright/test"; + +test.describe('User Avatar Tests', () => { + // User + const userEmail = "userAvatar@email.com"; + const userName = "UserAvatarTests"; + // Avatar + // Creates a random GUID + const avatarFileId = crypto.randomUUID(); + const avatarName = 'Umbraco.png'; + const mimeType = 'image/png'; + const avatarFilePath = './fixtures/mediaLibrary/Umbraco.png'; + + test.beforeEach(async ({page, umbracoApi}) => { + await umbracoApi.user.ensureUserNameNotExists(userName); + await umbracoApi.temporaryFile.ensureTemporaryFileWithIdNotExists(avatarFileId); + }); + + test.afterEach(async ({page, umbracoApi}) => { + await umbracoApi.user.ensureUserNameNotExists(userName); + await umbracoApi.temporaryFile.ensureTemporaryFileWithIdNotExists(avatarFileId); + }); + + test('can add an avatar to a user', async ({page, umbracoApi, umbracoUi}) => { + const userGroup = await umbracoApi.userGroup.getUserGroupByName("Writers"); + + const userGroupData = [userGroup.id]; + + await umbracoApi.user.createUser(userEmail, userName, userGroupData); + + const userData = await umbracoApi.user.getUserByName(userName); + + await umbracoApi.temporaryFile.createTemporaryFile(avatarFileId, avatarName, mimeType, avatarFilePath); + + await umbracoApi.user.addAvatarToUserWithId(userData.id, avatarFileId); + + // Assert + // Checks if the avatar was added to the user + const userDataWithAvatar = await umbracoApi.user.getUserByName(userName); + await expect(userDataWithAvatar.avatarUrls.length !== 0).toBeTruthy(); + }); + + test('can remove an avatar from a user', async ({page, umbracoApi, umbracoUi}) => { + const userGroup = await umbracoApi.userGroup.getUserGroupByName("Writers"); + + const userGroupData = [userGroup.id]; + + await umbracoApi.user.createUser(userEmail, userName, userGroupData); + + const userData = await umbracoApi.user.getUserByName(userName); + + await umbracoApi.temporaryFile.createTemporaryFile(avatarFileId, avatarName, mimeType, avatarFilePath); + + await umbracoApi.user.addAvatarToUserWithId(userData.id, avatarFileId); + + // Checks if the avatar was added to the user + const userDataWithAvatar = await umbracoApi.user.getUserByName(userName); + await expect(userDataWithAvatar.avatarUrls.length !== 0).toBeTruthy(); + + await umbracoApi.user.removeAvatarFromUserWithId(userData.id); + + // Assert + // Checks if the avatar was removed from the user + const userDataWithoutAvatar = await umbracoApi.user.getUserByName(userName); + await expect(userDataWithoutAvatar.avatarUrls.length == 0).toBeTruthy(); + }); +});