9acf3b8e7f
[web] Check `capturedByGroup` when adding new email GitOrigin-RevId: f9ef3d4cc7387dc0139a70aecd6cfcb20170abc6
94 lines
2.9 KiB
TypeScript
94 lines
2.9 KiB
TypeScript
import { expect } from 'chai'
|
|
import { ssoAvailableForDomain } from '../../../../../frontend/js/features/settings/utils/sso'
|
|
import { DomainInfo } from '../../../../../frontend/js/features/settings/components/emails/add-email/input'
|
|
|
|
const baseDomain: DomainInfo = {
|
|
hostname: 'example.edu',
|
|
confirmed: true,
|
|
university: {
|
|
id: 1,
|
|
name: 'Example University',
|
|
ssoEnabled: false,
|
|
ssoBeta: false,
|
|
},
|
|
group: {
|
|
domainCaptureEnabled: false,
|
|
ssoConfig: {
|
|
enabled: false,
|
|
},
|
|
},
|
|
}
|
|
|
|
describe('ssoAvailableForDomain', function () {
|
|
beforeEach(function () {
|
|
window.metaAttributesCache.set('ol-ExposedSettings', {
|
|
hasSamlFeature: true,
|
|
hasSamlBeta: false,
|
|
})
|
|
})
|
|
|
|
it('returns false when hasSamlFeature is false', function () {
|
|
window.metaAttributesCache.set('ol-ExposedSettings', {
|
|
hasSamlFeature: false,
|
|
hasSamlBeta: false,
|
|
})
|
|
expect(ssoAvailableForDomain(baseDomain, false)).to.be.false
|
|
})
|
|
|
|
it('returns false when domain is null', function () {
|
|
expect(ssoAvailableForDomain(null, false)).to.be.false
|
|
})
|
|
|
|
it('returns false when domain is not confirmed', function () {
|
|
const domain = { ...baseDomain, confirmed: false }
|
|
expect(ssoAvailableForDomain(domain, false)).to.be.false
|
|
})
|
|
|
|
it('returns true when university.ssoEnabled is true, regardless of isDomainCapturedByGroup', function () {
|
|
const domain: DomainInfo = {
|
|
...baseDomain,
|
|
university: { ...baseDomain.university, ssoEnabled: true },
|
|
}
|
|
expect(ssoAvailableForDomain(domain, false)).to.be.true
|
|
expect(ssoAvailableForDomain(domain, true)).to.be.true
|
|
})
|
|
|
|
describe('group SSO via ssoConfig', function () {
|
|
const domainWithGroupSso: DomainInfo = {
|
|
...baseDomain,
|
|
group: {
|
|
domainCaptureEnabled: true,
|
|
ssoConfig: { enabled: true },
|
|
},
|
|
}
|
|
|
|
it('returns true when isDomainCapturedByGroup is true and group ssoConfig is enabled', function () {
|
|
expect(ssoAvailableForDomain(domainWithGroupSso, true)).to.be.true
|
|
})
|
|
|
|
it('returns false when isDomainCapturedByGroup is false even if group ssoConfig is enabled', function () {
|
|
expect(ssoAvailableForDomain(domainWithGroupSso, false)).to.be.false
|
|
})
|
|
})
|
|
|
|
it('returns true when hasSamlBeta and university.ssoBeta are both true', function () {
|
|
window.metaAttributesCache.set('ol-ExposedSettings', {
|
|
hasSamlFeature: true,
|
|
hasSamlBeta: true,
|
|
})
|
|
const domain: DomainInfo = {
|
|
...baseDomain,
|
|
university: { ...baseDomain.university, ssoBeta: true },
|
|
}
|
|
expect(ssoAvailableForDomain(domain, false)).to.be.true
|
|
})
|
|
|
|
it('returns false when hasSamlBeta is false and university.ssoBeta is true', function () {
|
|
const domain: DomainInfo = {
|
|
...baseDomain,
|
|
university: { ...baseDomain.university, ssoBeta: true },
|
|
}
|
|
expect(ssoAvailableForDomain(domain, false)).to.be.false
|
|
})
|
|
})
|