mirror of
https://github.com/hanzoai/team.git
synced 2026-09-30 01:57:35 +00:00
* [MM-63717] LDAP Wizard skeleton (#31029)
* add ldap_wizard component to render its admin components
* i18n
* test adjustment
* keys and props fixes
* title fix
* fix placeholders
* fix value initialization
* linting
* remove all ...props (except custom component); any->unknown
* fix i18n (temp, will be changed in later PR)
* better return; simplify function checking/calling
* [MM-64259] Sections sidebar and navigation (#31059)
* initial sections list sidebar
* sidebar highlighting and scroll on click
* some tidying up
* add custom section titles for section sidebar
* i18n
* updating border on sections
* scss style lint
* color -> border-color
* simplify activeSectionKey initialization; remove trailing newline
* add useSectionNavigation; clean up ldap_wizard and scss; PR comments
* extract section of code into renderSidebar()
---------
* [MM-64296] Add test connection for connection settings panel (#31190)
* button -> ldap test connect api
* fix console error by sanitizing value in text component
* return detailed error as error; adjust button -> primary, flushLeft
* middle of redesigning how we do hover text, first button
* add hover text to bools and file uploads
* i18n
* add LdapSettings as api type; add new endpoint to api yaml
* allow testing without first enabling LDAP and saving config
* i18n id changes
* improve TestLdapConnection to current standards
* PR comments
* safeDereference; cleaner returns
* remove hover markdown; formatting and typing simplification
* use button for "More Info"; i18n
* finish renaming help_text_hover -> help_text_more_info
* fix error output
* only send bindpassword if it has been changed
* fix: don't send blank bindPassword when it is still *****
* merge conflict
* [MM-64480] Refactor Admin Definition (#31280)
* move ldap definition to its own file for simplicity & context
* refactor admin_definition to eliminate circular dependencies
* merge conflicts
* before: buggy userHasReadPermissinOnSomeResources; after: fix incorrect snapshot
* merge conflict: new bindPasssword definition was left behind; fixed.
* merge conflict
* [MM-63765] LDAP Wizard: User filter expandable section (#31286)
* add "more info" hover to user filter help texts; make wider
* add expandable_setting type and component
* use Dislosure show/hide pattern for accessibility
* fix tooltip scss selectors
* fix hover -> more_info; make sure translation files are correct
* use join('\n\n') instead of the eslint disable line
* Revert "use join('\n\n') instead of the eslint disable line"
This reverts commit 274667e875b34703f14fee0706cd28b0125cefc9.
* [MM-64482] LDAP Wizard - Test User filters (#31312)
* initial cut at UI and backend for test filters
* api definitions; mocks
* clean up to current standards
* [MM-64512] - Test user filters UI (#31355)
* result_count -> total_count
* json cannot marshal error, returning error as string as god intended
* render errors with icon, hover text, and better feedback texts
* gather the settings that may be in expandable sections
* remove success, use error == "" to indicate success
* [MM-64536] LDAP Wizard: Test user attributes (#31373)
* LdapFilterTestResult -> LdapDiagnosticResult; FilterName -> TestName
* implement test_attributes endpoint and limited frontend (first step)
* adding EntriesWithValue
* [MM-64550] LDAP Wizard: Test user attributes UI (#31374)
* [MM-64551] LDAP Wizard: Test group attributes (#31375)
* remove Test LDAP button (not needed); reused helptext for other btn
* implement test_group_attributes endpoint; button/client-side paths
* [MM-64552] LDAP Wizard: Test group attributes UI (#31376)
* implement Test Group Attributes button
* simplify helper functions (improves useCallback dependencies)
* show the default filter that was used on the backend in the tooltip
* show the icon when there's an error (e.g. required filter/attribute)
* fix infinite rerendering
* fix error after failed save; fix navigation unlocked after save
* empty
* Adjust message feedback given we don't test the schema anymore
* improve css; don't use inline styles
* removed unneccesary pointer indirection
* improved i18n strings and logic
* combining filters/attributes/group attributes endpoints
improve types
* improve help text for User Filter (it's tricky)
* AvailableAttrs -> AvailableAttributes
* fix for e2e tests (renamed title)
* more e2e fixes
* skip broken e2e test
---------
(cherry picked from commit 257dae5b84)
Co-authored-by: Christopher Poile <[email protected]>
Co-authored-by: Asaad Mahmood <[email protected]>
96 lines
3.0 KiB
JavaScript
96 lines
3.0 KiB
JavaScript
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
|
// See LICENSE.txt for license information.
|
|
|
|
import * as TIMEOUTS from '../fixtures/timeouts';
|
|
|
|
import {getAdminAccount} from './env';
|
|
|
|
Cypress.Commands.add('visitLDAPSettings', () => {
|
|
// # Go to LDAP settings Page
|
|
cy.visit('/admin_console/authentication/ldap');
|
|
cy.get('.admin-console__header').should('be.visible').and('have.text', 'AD/LDAP Wizard');
|
|
});
|
|
|
|
Cypress.Commands.add('doLDAPLogin', (settings = {}, useEmail = false) => {
|
|
// # Go to login page
|
|
cy.apiLogout();
|
|
cy.visit('/login');
|
|
cy.wait(TIMEOUTS.FIVE_SEC);
|
|
cy.checkLoginPage(settings);
|
|
cy.performLDAPLogin(settings, useEmail);
|
|
});
|
|
|
|
Cypress.Commands.add('performLDAPLogin', (settings = {}, useEmail = false) => {
|
|
const loginId = useEmail ? settings.user.email : settings.user.username;
|
|
cy.get('#input_loginId').type(loginId);
|
|
cy.get('#input_password-input').type(settings.user.password);
|
|
|
|
//click the login button
|
|
cy.get('#saveSetting').should('not.be.disabled').click();
|
|
});
|
|
|
|
Cypress.Commands.add('doLDAPLogout', (settings = {}) => {
|
|
cy.checkLeftSideBar(settings);
|
|
|
|
// # Logout then check login page
|
|
cy.uiLogout();
|
|
cy.checkLoginPage(settings);
|
|
});
|
|
|
|
Cypress.Commands.add('doSkipTutorial', () => {
|
|
cy.wait(TIMEOUTS.FIVE_SEC);
|
|
cy.get('body').then((body) => {
|
|
if (body.find('#tutorialSkipLink').length > 0) {
|
|
cy.get('#tutorialSkipLink').click().wait(TIMEOUTS.HALF_SEC);
|
|
}
|
|
});
|
|
});
|
|
|
|
Cypress.Commands.add('runLdapSync', (admin) => {
|
|
cy.externalRequest({user: admin, method: 'post', path: 'ldap/sync'}).then(() => {
|
|
cy.waitForLdapSyncCompletion(Date.now(), TIMEOUTS.THREE_MIN).then(() => {
|
|
return cy.wrap(true);
|
|
});
|
|
});
|
|
});
|
|
|
|
Cypress.Commands.add('getLdapSyncJobStatus', (start) => {
|
|
const admin = getAdminAccount();
|
|
cy.externalRequest({user: admin, method: 'get', path: 'jobs/type/ldap_sync'}).then((result) => {
|
|
const jobs = result.data;
|
|
if (jobs && jobs[0]) {
|
|
if (Math.abs(jobs[0].create_at - start) < TIMEOUTS.TWO_SEC) {
|
|
switch (jobs[0].status) {
|
|
case 'success':
|
|
return cy.wrap('success');
|
|
case 'pending':
|
|
case 'in_progress':
|
|
return cy.wrap('pending');
|
|
default:
|
|
return cy.wrap('unsuccessful');
|
|
}
|
|
}
|
|
}
|
|
return cy.wrap('not found');
|
|
});
|
|
});
|
|
|
|
Cypress.Commands.add('waitForLdapSyncCompletion', (start, timeout) => {
|
|
if (Date.now() - start > timeout) {
|
|
throw new Error('Timeout Waiting for LdapSync');
|
|
}
|
|
|
|
cy.getLdapSyncJobStatus(start).then((status) => {
|
|
if (status === 'success') {
|
|
return;
|
|
}
|
|
if (status === 'unsuccessful') {
|
|
throw new Error('LdapSync Unsuccessful');
|
|
}
|
|
|
|
// eslint-disable-next-line cypress/no-unnecessary-waiting
|
|
cy.wait(TIMEOUTS.FIVE_SEC);
|
|
cy.waitForLdapSyncCompletion(start, timeout);
|
|
});
|
|
});
|