mirror of
https://github.com/yu-i-i/overleaf-cep.git
synced 2026-05-24 17:51:51 +02:00
148 lines
6.2 KiB
JavaScript
148 lines
6.2 KiB
JavaScript
import { vi, expect } from 'vitest'
|
|
const modulePath = '../../../../app/src/infrastructure/Features.mjs'
|
|
|
|
describe('Features', function () {
|
|
beforeEach(async function (ctx) {
|
|
vi.doMock('@overleaf/settings', () => ({
|
|
default: (ctx.settings = {
|
|
moduleImportSequence: [],
|
|
enabledLinkedFileTypes: [],
|
|
}),
|
|
}))
|
|
|
|
ctx.Features = (await import(modulePath)).default
|
|
})
|
|
describe('externalAuthenticationSystemUsed', function () {
|
|
describe('without any settings', function () {
|
|
it('should return false', function (ctx) {
|
|
expect(ctx.Features.externalAuthenticationSystemUsed()).to.be.false
|
|
})
|
|
})
|
|
describe('with ldap setting', function () {
|
|
beforeEach(function (ctx) {
|
|
ctx.settings.ldap = { enable: true }
|
|
})
|
|
it('should return true', function (ctx) {
|
|
expect(ctx.Features.externalAuthenticationSystemUsed()).to.be.true
|
|
})
|
|
})
|
|
describe('with saml setting', function () {
|
|
beforeEach(function (ctx) {
|
|
ctx.settings.saml = { enable: true }
|
|
})
|
|
it('should return true', function (ctx) {
|
|
expect(ctx.Features.externalAuthenticationSystemUsed()).to.be.true
|
|
})
|
|
})
|
|
describe('with oauth setting', function () {
|
|
beforeEach(function (ctx) {
|
|
ctx.settings.overleaf = { oauth: true }
|
|
})
|
|
it('should return true', function (ctx) {
|
|
expect(ctx.Features.externalAuthenticationSystemUsed()).to.be.true
|
|
})
|
|
})
|
|
})
|
|
|
|
describe('hasFeature', function () {
|
|
describe('without any settings', function () {
|
|
it('should return true', function (ctx) {
|
|
expect(ctx.Features.hasFeature('registration-page')).to.be.true
|
|
})
|
|
it('should return false', function (ctx) {
|
|
expect(ctx.Features.hasFeature('registration')).to.be.false
|
|
expect(ctx.Features.hasFeature('affiliations')).to.be.false
|
|
expect(ctx.Features.hasFeature('analytics')).to.be.false
|
|
expect(ctx.Features.hasFeature('git-bridge')).to.be.false
|
|
expect(ctx.Features.hasFeature('github-sync')).to.be.false
|
|
expect(ctx.Features.hasFeature('homepage')).to.be.false
|
|
expect(ctx.Features.hasFeature('link-url')).to.be.false
|
|
expect(ctx.Features.hasFeature('oauth')).to.be.false
|
|
expect(ctx.Features.hasFeature('saas')).to.be.false
|
|
expect(ctx.Features.hasFeature('saml')).to.be.false
|
|
expect(ctx.Features.hasFeature('templates-server-pro')).to.be.false
|
|
})
|
|
})
|
|
describe('with settings', function () {
|
|
describe('empty overleaf object', function () {
|
|
beforeEach(function (ctx) {
|
|
ctx.settings.overleaf = {}
|
|
ctx.settings.apis = {}
|
|
})
|
|
it('should return true', function (ctx) {
|
|
expect(ctx.Features.hasFeature('saas')).to.be.true
|
|
expect(ctx.Features.hasFeature('registration')).to.be.true
|
|
})
|
|
it('should return false', function (ctx) {
|
|
expect(ctx.Features.hasFeature('affiliations')).to.be.false
|
|
expect(ctx.Features.hasFeature('analytics')).to.be.false
|
|
expect(ctx.Features.hasFeature('git-bridge')).to.be.false
|
|
expect(ctx.Features.hasFeature('github-sync')).to.be.false
|
|
expect(ctx.Features.hasFeature('homepage')).to.be.false
|
|
expect(ctx.Features.hasFeature('link-url')).to.be.false
|
|
expect(ctx.Features.hasFeature('oauth')).to.be.false
|
|
expect(ctx.Features.hasFeature('saml')).to.be.false
|
|
expect(ctx.Features.hasFeature('templates-server-pro')).to.be.false
|
|
})
|
|
describe('with APIs', function () {
|
|
beforeEach(function (ctx) {
|
|
ctx.settings.apis = {
|
|
linkedUrlProxy: {
|
|
url: 'https://www.overleaf.com',
|
|
},
|
|
references: {
|
|
url: 'https://www.overleaf.com',
|
|
},
|
|
v1: {
|
|
url: 'https://www.overleaf.com',
|
|
},
|
|
}
|
|
})
|
|
it('should return true', function (ctx) {
|
|
expect(ctx.Features.hasFeature('affiliations')).to.be.true
|
|
expect(ctx.Features.hasFeature('analytics')).to.be.true
|
|
expect(ctx.Features.hasFeature('saas')).to.be.true
|
|
expect(ctx.Features.hasFeature('registration')).to.be.true
|
|
})
|
|
it('should return false', function (ctx) {
|
|
expect(ctx.Features.hasFeature('link-url')).to.be.false
|
|
expect(ctx.Features.hasFeature('git-bridge')).to.be.false
|
|
expect(ctx.Features.hasFeature('github-sync')).to.be.false
|
|
expect(ctx.Features.hasFeature('homepage')).to.be.false
|
|
expect(ctx.Features.hasFeature('oauth')).to.be.false
|
|
expect(ctx.Features.hasFeature('saml')).to.be.false
|
|
expect(ctx.Features.hasFeature('templates-server-pro')).to.be.false
|
|
})
|
|
describe('with all other settings flags', function () {
|
|
beforeEach(function (ctx) {
|
|
ctx.settings.enableHomepage = true
|
|
ctx.settings.enableGitBridge = true
|
|
ctx.settings.enableGithubSync = true
|
|
ctx.settings.enableSaml = true
|
|
ctx.settings.oauth = true
|
|
ctx.settings.enabledLinkedFileTypes = ['url', 'project_file']
|
|
})
|
|
it('should return true or return value', function (ctx) {
|
|
expect(ctx.Features.hasFeature('link-url')).to.be.true
|
|
expect(ctx.Features.hasFeature('affiliations')).to.be.true
|
|
expect(ctx.Features.hasFeature('analytics')).to.be.true
|
|
expect(ctx.Features.hasFeature('github-sync')).to.be.true
|
|
expect(ctx.Features.hasFeature('git-bridge')).to.be.true
|
|
expect(ctx.Features.hasFeature('homepage')).to.be.true
|
|
expect(ctx.Features.hasFeature('link-url')).to.be.true
|
|
expect(ctx.Features.hasFeature('oauth')).to.be.true
|
|
expect(ctx.Features.hasFeature('saas')).to.be.true
|
|
expect(ctx.Features.hasFeature('registration')).to.be.true
|
|
expect(ctx.Features.hasFeature('saml')).to.be.true
|
|
})
|
|
it('should return false', function (ctx) {
|
|
expect(ctx.Features.hasFeature('templates-server-pro')).to.be
|
|
.false
|
|
})
|
|
})
|
|
})
|
|
})
|
|
})
|
|
})
|
|
})
|