sso.test.ts 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. import { expect } from 'chai'
  2. import { ssoAvailableForDomain } from '../../../../../frontend/js/features/settings/utils/sso'
  3. import { DomainInfo } from '../../../../../frontend/js/features/settings/components/emails/add-email/input'
  4. const baseDomain: DomainInfo = {
  5. hostname: 'example.edu',
  6. confirmed: true,
  7. university: {
  8. id: 1,
  9. name: 'Example University',
  10. ssoEnabled: false,
  11. ssoBeta: false,
  12. },
  13. group: {
  14. domainCaptureEnabled: false,
  15. ssoConfig: {
  16. enabled: false,
  17. },
  18. },
  19. }
  20. describe('ssoAvailableForDomain', function () {
  21. beforeEach(function () {
  22. window.metaAttributesCache.set('ol-ExposedSettings', {
  23. hasSamlFeature: true,
  24. hasSamlBeta: false,
  25. })
  26. })
  27. it('returns false when hasSamlFeature is false', function () {
  28. window.metaAttributesCache.set('ol-ExposedSettings', {
  29. hasSamlFeature: false,
  30. hasSamlBeta: false,
  31. })
  32. expect(ssoAvailableForDomain(baseDomain, false)).to.be.false
  33. })
  34. it('returns false when domain is null', function () {
  35. expect(ssoAvailableForDomain(null, false)).to.be.false
  36. })
  37. it('returns false when domain is not confirmed', function () {
  38. const domain = { ...baseDomain, confirmed: false }
  39. expect(ssoAvailableForDomain(domain, false)).to.be.false
  40. })
  41. it('returns true when university.ssoEnabled is true, regardless of isDomainCapturedByGroup', function () {
  42. const domain: DomainInfo = {
  43. ...baseDomain,
  44. university: { ...baseDomain.university, ssoEnabled: true },
  45. }
  46. expect(ssoAvailableForDomain(domain, false)).to.be.true
  47. expect(ssoAvailableForDomain(domain, true)).to.be.true
  48. })
  49. describe('group SSO via ssoConfig', function () {
  50. const domainWithGroupSso: DomainInfo = {
  51. ...baseDomain,
  52. group: {
  53. domainCaptureEnabled: true,
  54. ssoConfig: { enabled: true },
  55. },
  56. }
  57. it('returns true when isDomainCapturedByGroup is true and group ssoConfig is enabled', function () {
  58. expect(ssoAvailableForDomain(domainWithGroupSso, true)).to.be.true
  59. })
  60. it('returns false when isDomainCapturedByGroup is false even if group ssoConfig is enabled', function () {
  61. expect(ssoAvailableForDomain(domainWithGroupSso, false)).to.be.false
  62. })
  63. })
  64. it('returns true when hasSamlBeta and university.ssoBeta are both true', function () {
  65. window.metaAttributesCache.set('ol-ExposedSettings', {
  66. hasSamlFeature: true,
  67. hasSamlBeta: true,
  68. })
  69. const domain: DomainInfo = {
  70. ...baseDomain,
  71. university: { ...baseDomain.university, ssoBeta: true },
  72. }
  73. expect(ssoAvailableForDomain(domain, false)).to.be.true
  74. })
  75. it('returns false when hasSamlBeta is false and university.ssoBeta is true', function () {
  76. const domain: DomainInfo = {
  77. ...baseDomain,
  78. university: { ...baseDomain.university, ssoBeta: true },
  79. }
  80. expect(ssoAvailableForDomain(domain, false)).to.be.false
  81. })
  82. })