feat: Add SSO SAML metadataUrl support and various improvements (#6139)
* feat: add various sso improvements * fix: remove test button assertion * fix: fix type imports * test: attempt fixing unit tests * fix: changed to using useToast for error toasts * Minor copy tweaks and swapped buttons position. * fix locale ref * align error with UI wording * simplify saving ux * fix pretty * fix: update saml sso setting saving * fix: undo try/catch changes when saving saml config * metadata url tab selected at first * chore: fix linting issue * test: fix activation checkbox test --------- Co-authored-by: Giulio Andreini <g.andreini@gmail.com> Co-authored-by: Michael Auerswald <michael.auerswald@gmail.com> Co-authored-by: Romain Minaud <romain.minaud@gmail.com>
This commit is contained in:
@@ -4,6 +4,7 @@ import { routesForCredentials } from './credential';
|
||||
import { routesForCredentialTypes } from './credentialType';
|
||||
import { routesForVariables } from './variable';
|
||||
import { routesForSettings } from './settings';
|
||||
import { routesForSSO } from './sso';
|
||||
|
||||
const endpoints: Array<(server: Server) => void> = [
|
||||
routesForCredentials,
|
||||
@@ -11,6 +12,7 @@ const endpoints: Array<(server: Server) => void> = [
|
||||
routesForUsers,
|
||||
routesForVariables,
|
||||
routesForSettings,
|
||||
routesForSSO,
|
||||
];
|
||||
|
||||
export { endpoints };
|
||||
|
||||
36
packages/editor-ui/src/__tests__/server/endpoints/sso.ts
Normal file
36
packages/editor-ui/src/__tests__/server/endpoints/sso.ts
Normal file
@@ -0,0 +1,36 @@
|
||||
import type { Server, Request } from 'miragejs';
|
||||
import { Response } from 'miragejs';
|
||||
import type { SamlPreferences, SamlPreferencesExtractedData } from '@/Interface';
|
||||
import { faker } from '@faker-js/faker';
|
||||
import type { AppSchema } from '@/__tests__/server/types';
|
||||
import { jsonParse } from 'n8n-workflow';
|
||||
|
||||
let samlConfig: SamlPreferences & SamlPreferencesExtractedData = {
|
||||
metadata: '<?xml version="1.0"?>',
|
||||
metadataUrl: '',
|
||||
entityID: faker.internet.url(),
|
||||
returnUrl: faker.internet.url(),
|
||||
};
|
||||
|
||||
export function routesForSSO(server: Server) {
|
||||
server.get('/rest/sso/saml/config', () => {
|
||||
return new Response(200, {}, { data: samlConfig });
|
||||
});
|
||||
|
||||
server.post('/rest/sso/saml/config', (schema: AppSchema, request: Request) => {
|
||||
const requestBody = jsonParse(request.requestBody) as Partial<
|
||||
SamlPreferences & SamlPreferencesExtractedData
|
||||
>;
|
||||
|
||||
samlConfig = {
|
||||
...samlConfig,
|
||||
...requestBody,
|
||||
};
|
||||
|
||||
return new Response(200, {}, { data: samlConfig });
|
||||
});
|
||||
|
||||
server.get('/rest/sso/saml/config/test', () => {
|
||||
return new Response(200, {}, { data: '<?xml version="1.0"?>' });
|
||||
});
|
||||
}
|
||||
@@ -3,7 +3,7 @@ import { UserManagementAuthenticationMethod } from '@/Interface';
|
||||
import { render } from '@testing-library/vue';
|
||||
import { PiniaVuePlugin } from 'pinia';
|
||||
|
||||
export const retry = async (assertion: () => any, { interval = 20, timeout = 200 } = {}) => {
|
||||
export const retry = async (assertion: () => any, { interval = 20, timeout = 1000 } = {}) => {
|
||||
return new Promise((resolve, reject) => {
|
||||
const startTime = Date.now();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user