mirror of
https://github.com/danny-avila/LibreChat.git
synced 2025-09-21 21:50:49 +02:00

* feat: add SAML authentication * refactor: change SAML icon * refactor: resolve SAML metadata paths using paths.js * test: add samlStrategy tests * fix: update setupSaml import * test: add SAML settings tests in config.spec.js * test: add client tests * refactor: improve SAML button label and fallback localization * feat: allow only one authentication method OpenID or SAML at a time * doc: add SAML configuration sample to docker-compose.override * fix: require SAML_SESSION_SECRET to enable SAML * feat: update samlStrategy * test: update samle tests * feat: add SAML login button label to translations and remove default value * fix: update SAML cert file binding * chore: update override example with SAML cert volume * fix: update SAML session handling with Redis backend --------- Co-authored-by: Ruben Talstra <RubenTalstra1211@outlook.com>
106 lines
4.2 KiB
JavaScript
106 lines
4.2 KiB
JavaScript
jest.mock('~/cache/getLogStores');
|
|
const request = require('supertest');
|
|
const express = require('express');
|
|
const configRoute = require('../config');
|
|
// file deepcode ignore UseCsurfForExpress/test: test
|
|
const app = express();
|
|
app.disable('x-powered-by');
|
|
app.use('/api/config', configRoute);
|
|
|
|
afterEach(() => {
|
|
delete process.env.APP_TITLE;
|
|
delete process.env.GOOGLE_CLIENT_ID;
|
|
delete process.env.GOOGLE_CLIENT_SECRET;
|
|
delete process.env.FACEBOOK_CLIENT_ID;
|
|
delete process.env.FACEBOOK_CLIENT_SECRET;
|
|
delete process.env.OPENID_CLIENT_ID;
|
|
delete process.env.OPENID_CLIENT_SECRET;
|
|
delete process.env.OPENID_ISSUER;
|
|
delete process.env.OPENID_SESSION_SECRET;
|
|
delete process.env.OPENID_BUTTON_LABEL;
|
|
delete process.env.OPENID_AUTO_REDIRECT;
|
|
delete process.env.OPENID_AUTH_URL;
|
|
delete process.env.GITHUB_CLIENT_ID;
|
|
delete process.env.GITHUB_CLIENT_SECRET;
|
|
delete process.env.DISCORD_CLIENT_ID;
|
|
delete process.env.DISCORD_CLIENT_SECRET;
|
|
delete process.env.SAML_ENTRY_POINT;
|
|
delete process.env.SAML_ISSUER;
|
|
delete process.env.SAML_CERT;
|
|
delete process.env.SAML_SESSION_SECRET;
|
|
delete process.env.SAML_BUTTON_LABEL;
|
|
delete process.env.SAML_IMAGE_URL;
|
|
delete process.env.DOMAIN_SERVER;
|
|
delete process.env.ALLOW_REGISTRATION;
|
|
delete process.env.ALLOW_SOCIAL_LOGIN;
|
|
delete process.env.ALLOW_PASSWORD_RESET;
|
|
delete process.env.LDAP_URL;
|
|
delete process.env.LDAP_BIND_DN;
|
|
delete process.env.LDAP_BIND_CREDENTIALS;
|
|
delete process.env.LDAP_USER_SEARCH_BASE;
|
|
delete process.env.LDAP_SEARCH_FILTER;
|
|
});
|
|
|
|
//TODO: This works/passes locally but http request tests fail with 404 in CI. Need to figure out why.
|
|
|
|
// eslint-disable-next-line jest/no-disabled-tests
|
|
describe.skip('GET /', () => {
|
|
it('should return 200 and the correct body', async () => {
|
|
process.env.APP_TITLE = 'Test Title';
|
|
process.env.GOOGLE_CLIENT_ID = 'Test Google Client Id';
|
|
process.env.GOOGLE_CLIENT_SECRET = 'Test Google Client Secret';
|
|
process.env.FACEBOOK_CLIENT_ID = 'Test Facebook Client Id';
|
|
process.env.FACEBOOK_CLIENT_SECRET = 'Test Facebook Client Secret';
|
|
process.env.OPENID_CLIENT_ID = 'Test OpenID Id';
|
|
process.env.OPENID_CLIENT_SECRET = 'Test OpenID Secret';
|
|
process.env.OPENID_ISSUER = 'Test OpenID Issuer';
|
|
process.env.OPENID_SESSION_SECRET = 'Test Secret';
|
|
process.env.OPENID_BUTTON_LABEL = 'Test OpenID';
|
|
process.env.OPENID_AUTH_URL = 'http://test-server.com';
|
|
process.env.GITHUB_CLIENT_ID = 'Test Github client Id';
|
|
process.env.GITHUB_CLIENT_SECRET = 'Test Github client Secret';
|
|
process.env.DISCORD_CLIENT_ID = 'Test Discord client Id';
|
|
process.env.DISCORD_CLIENT_SECRET = 'Test Discord client Secret';
|
|
process.env.SAML_ENTRY_POINT = 'http://test-server.com';
|
|
process.env.SAML_ISSUER = 'Test SAML Issuer';
|
|
process.env.SAML_CERT = 'saml.pem';
|
|
process.env.SAML_SESSION_SECRET = 'Test Secret';
|
|
process.env.SAML_BUTTON_LABEL = 'Test SAML';
|
|
process.env.SAML_IMAGE_URL = 'http://test-server.com';
|
|
process.env.DOMAIN_SERVER = 'http://test-server.com';
|
|
process.env.ALLOW_REGISTRATION = 'true';
|
|
process.env.ALLOW_SOCIAL_LOGIN = 'true';
|
|
process.env.ALLOW_PASSWORD_RESET = 'true';
|
|
process.env.LDAP_URL = 'Test LDAP URL';
|
|
process.env.LDAP_BIND_DN = 'Test LDAP Bind DN';
|
|
process.env.LDAP_BIND_CREDENTIALS = 'Test LDAP Bind Credentials';
|
|
process.env.LDAP_USER_SEARCH_BASE = 'Test LDAP User Search Base';
|
|
process.env.LDAP_SEARCH_FILTER = 'Test LDAP Search Filter';
|
|
|
|
const response = await request(app).get('/');
|
|
|
|
expect(response.statusCode).toBe(200);
|
|
expect(response.body).toEqual({
|
|
appTitle: 'Test Title',
|
|
socialLogins: ['google', 'facebook', 'openid', 'github', 'discord', 'saml'],
|
|
discordLoginEnabled: true,
|
|
facebookLoginEnabled: true,
|
|
githubLoginEnabled: true,
|
|
googleLoginEnabled: true,
|
|
openidLoginEnabled: true,
|
|
openidLabel: 'Test OpenID',
|
|
openidImageUrl: 'http://test-server.com',
|
|
samlLoginEnabled: true,
|
|
samlLabel: 'Test SAML',
|
|
samlImageUrl: 'http://test-server.com',
|
|
ldap: {
|
|
enabled: true,
|
|
},
|
|
serverDomain: 'http://test-server.com',
|
|
emailLoginEnabled: 'true',
|
|
registrationEnabled: 'true',
|
|
passwordResetEnabled: 'true',
|
|
socialLoginEnabled: 'true',
|
|
});
|
|
});
|
|
});
|