diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/ldap/ldap_group_sync_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/ldap/ldap_group_sync_spec.ts similarity index 98% rename from e2e-tests/cypress/tests/integration/channels/enterprise/ldap/ldap_group_sync_spec.js rename to e2e-tests/cypress/tests/integration/channels/enterprise/ldap/ldap_group_sync_spec.ts index 4aa2f4b0471..6b2ceabdeed 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/ldap/ldap_group_sync_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/ldap/ldap_group_sync_spec.ts @@ -10,9 +10,13 @@ // Stage: @prod // Group: @channels @enterprise @ldap +import {Channel} from '@mattermost/types/channels'; +import {Team} from '@mattermost/types/teams'; +import {UserProfile} from '@mattermost/types/users'; +import {AdminConfig} from '@mattermost/types/config'; import * as TIMEOUTS from '../../../../fixtures/timeouts'; -function setLDAPTestSettings(config) { +function setLDAPTestSettings(config: AdminConfig) { return { siteName: config.TeamSettings.SiteName, siteUrl: config.ServiceSettings.SiteURL, @@ -25,9 +29,9 @@ function setLDAPTestSettings(config) { // assumes that E20 license is uploaded // for setup with AWS: Follow the instructions mentioned in the mattermost/platform-private/config/ldap-test-setup.txt file context('ldap', () => { - let testChannel; - let testTeam; - let testUser; + let testChannel: Channel; + let testTeam: Team; + let testUser: UserProfile; describe('LDAP Group Sync Automated Tests', () => { beforeEach(() => { @@ -161,7 +165,7 @@ context('ldap', () => { }); it('MM-T2621 - Team List Management Column', () => { - let testTeam2; + let testTeam2: Team; // # Go to testTeam config page cy.visit(`/admin_console/user_management/teams/${testTeam.id}`); diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/ldap/ldap_guest_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/ldap/ldap_guest_spec.ts similarity index 95% rename from e2e-tests/cypress/tests/integration/channels/enterprise/ldap/ldap_guest_spec.js rename to e2e-tests/cypress/tests/integration/channels/enterprise/ldap/ldap_guest_spec.ts index 79dbf33ab8f..369af838003 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/ldap/ldap_guest_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/ldap/ldap_guest_spec.ts @@ -14,6 +14,7 @@ import ldapUsers from '../../../../fixtures/ldap_users.json'; import * as TIMEOUTS from '../../../../fixtures/timeouts'; import {getAdminAccount} from '../../../../support/env'; import {getRandomId} from '../../../../utils'; +import {UserProfile} from '@mattermost/types/users'; // assumes that E20 license is uploaded // for setup with AWS: Follow the instructions mentioned in the mattermost/platform-private/config/ldap-test-setup.txt file @@ -41,7 +42,7 @@ describe('LDAP guest', () => { }); // # Get user1 data - cy.apiLogin(user1).then(({user}) => { + cy.apiLogin(user1 as unknown as UserProfile).then((user) => { user1Data = user; // # Remove user1 from all the teams @@ -49,7 +50,7 @@ describe('LDAP guest', () => { }); // # Get user2 data - cy.apiLogin(user2).then(({user}) => { + cy.apiLogin(user2 as unknown as UserProfile).then((user) => { user2Data = user; // # Remove user2 fromm all the teams @@ -262,13 +263,15 @@ function demoteUserToGuest(user) { }); } -function removeUserFromAllTeams(user) { +function removeUserFromAllTeams(user: { id: string }) { // # Get all teams of a user - cy.apiGetTeamsForUser(user.id).then(({teams}) => { + cy.apiGetTeamsForUser(user.id).then((teams) => { // # Remove user from all the teams - teams.forEach((team) => { - cy.apiDeleteUserFromTeam(team.id, user.id); - }); + if (teams.length > 0) { + teams.forEach((team: { id: string }) => { + cy.apiDeleteUserFromTeam(team.id, user.id); + }); + } }); } diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/ldap/ldap_login_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/ldap/ldap_login_spec.ts similarity index 94% rename from e2e-tests/cypress/tests/integration/channels/enterprise/ldap/ldap_login_spec.js rename to e2e-tests/cypress/tests/integration/channels/enterprise/ldap/ldap_login_spec.ts index 791c16c0b7d..04f405d7c89 100644 --- a/e2e-tests/cypress/tests/integration/channels/enterprise/ldap/ldap_login_spec.js +++ b/e2e-tests/cypress/tests/integration/channels/enterprise/ldap/ldap_login_spec.ts @@ -158,7 +158,7 @@ context('ldap', () => { before(() => { cy.apiAdminLogin(); - cy.apiGetTeamByName(testSettings.teamName).then(({team}) => { + cy.apiGetTeamByName(testSettings.teamName).then((team) => { cy.apiGetChannelByName(testSettings.teamName, 'town-square').then(({channel}) => { cy.apiGetUserByEmail(guest1.email).then(({user}) => { cy.apiAddUserToTeam(team.id, user.id).then(() => { @@ -220,7 +220,7 @@ function setLDAPTestSettings(config) { } function disableOnboardingTaskList(ldapLogin) { - cy.apiLogin(ldapLogin).then(({user}) => { + cy.apiLogin(ldapLogin).then((user) => { cy.apiSaveOnboardingTaskListPreference(user.id, 'onboarding_task_list_open', 'false'); cy.apiSaveOnboardingTaskListPreference(user.id, 'onboarding_task_list_show', 'false'); cy.apiSaveSkipStepsPreference(user.id, 'true'); @@ -228,13 +228,15 @@ function disableOnboardingTaskList(ldapLogin) { } function removeUserFromAllTeams(testUser) { - cy.apiGetUsersByUsernames([testUser.username]).then(({users}) => { - users.forEach((user) => { - cy.apiGetTeamsForUser(user.id).then(({teams}) => { - teams.forEach((team) => { - cy.apiDeleteUserFromTeam(team.id, user.id); + cy.apiGetUsersByUsernames([testUser.username]).then((users) => { + if (users.length > 0) { + users.forEach((user) => { + cy.apiGetTeamsForUser(user.id).then((teams) => { + teams.forEach((team) => { + cy.apiDeleteUserFromTeam(team.id, user.id); + }); }); }); - }); + } }); } diff --git a/e2e-tests/cypress/tests/integration/channels/enterprise/ldap/ldap_setting_spec.js b/e2e-tests/cypress/tests/integration/channels/enterprise/ldap/ldap_setting_spec.ts similarity index 100% rename from e2e-tests/cypress/tests/integration/channels/enterprise/ldap/ldap_setting_spec.js rename to e2e-tests/cypress/tests/integration/channels/enterprise/ldap/ldap_setting_spec.ts diff --git a/e2e-tests/cypress/tests/support/api/preference.d.ts b/e2e-tests/cypress/tests/support/api/preference.d.ts index 6c964fb1a87..f53fb974b1a 100644 --- a/e2e-tests/cypress/tests/support/api/preference.d.ts +++ b/e2e-tests/cypress/tests/support/api/preference.d.ts @@ -70,6 +70,17 @@ declare namespace Cypress { */ apiSaveOnboardingTaskListPreference(userId: string, name: string, value: string): Chainable; + /** + * Save skip steps preference. + * @param userId - User ID + * @param {string} value - options are 'true' or 'false' + * @returns {Response} response: Cypress-chainable response which should have successful HTTP status of 200 OK to continue or pass. + * + * @example + * cy.apiSaveSkipStepsPreference('user-id', 'true'); + */ + apiSaveSkipStepsPreference(userId: string, value: string): Chainable; + /** * Save DM channel show preference. * See https://api.mattermost.com/#tag/preferences/paths/~1users~1{user_id}~1preferences/put diff --git a/e2e-tests/cypress/tests/support/common_login_commands.d.ts b/e2e-tests/cypress/tests/support/common_login_commands.d.ts index 6204e743ef9..12973e0eb3a 100644 --- a/e2e-tests/cypress/tests/support/common_login_commands.d.ts +++ b/e2e-tests/cypress/tests/support/common_login_commands.d.ts @@ -21,6 +21,11 @@ declare namespace Cypress { * @returns {boolean} - true if error successfully found. */ checkForLDAPError(): Chainable; + + skipOrCreateTeam: typeof skipOrCreateTeam; + checkLoginFailed: typeof checkLoginFailed; + doMemberLogoutFromSignUp: typeof doMemberLogoutFromSignUp; + doLogoutFromSignUp: typeof doLogoutFromSignUp; checkLoginPage: typeof checkLoginPage; checkLeftSideBar: typeof checkLeftSideBar; checkInvitePeoplePage: typeof checkInvitePeoplePage; diff --git a/e2e-tests/cypress/tests/support/ldap_commands.d.ts b/e2e-tests/cypress/tests/support/ldap_commands.d.ts index a7be4c19b4b..c5e9322a7c9 100644 --- a/e2e-tests/cypress/tests/support/ldap_commands.d.ts +++ b/e2e-tests/cypress/tests/support/ldap_commands.d.ts @@ -31,6 +31,24 @@ declare namespace Cypress { */ getLdapSyncJobStatus(start: number): string; + /** + * doLDAPLogin is a task that runs LDAP login + * @param {object} settings - login settings + * @param {boolean} useEmail - true if uses email + */ + doLDAPLogin(settings: object = {}, useEmail = false): Chainable; + + /** + * doLDAPLogout is a task that runs LDAP logout + * @param {Object} settings - logout settings + */ + doLDAPLogout(settings: object = {}): Chainable; + + /** + * visitLDAPSettings is a task that navigates to LDAP settings Page + */ + visitLDAPSettings(): Chainable; + /** * waitForLdapSyncCompletion is a task that runs recursively * until getLdapSyncJobStatus completes or timeouts.