acl.integ.test.ts 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221
  1. // import {
  2. // vi,
  3. // beforeAll, beforeEach, afterEach,
  4. // describe, test, expect,
  5. // } from 'vitest';
  6. // import { aclService } from './acl';
  7. // import { configManager } from './config-manager';
  8. // describe('AclService', () => {
  9. // test("has consts 'isLabeledStatement'", () => {
  10. // expect(aclService.labels.SECURITY_RESTRICT_GUEST_MODE_DENY).toBe('Deny');
  11. // expect(aclService.labels.SECURITY_RESTRICT_GUEST_MODE_READONLY).toBe('Readonly');
  12. // expect(aclService.labels.SECURITY_REGISTRATION_MODE_OPEN).toBe('Open');
  13. // expect(aclService.labels.SECURITY_REGISTRATION_MODE_RESTRICTED).toBe('Restricted');
  14. // expect(aclService.labels.SECURITY_REGISTRATION_MODE_CLOSED).toBe('Closed');
  15. // });
  16. // });
  17. // describe('AclService test', () => {
  18. // const initialEnv = process.env;
  19. // beforeAll(async() => {
  20. // await configManager.loadConfigs();
  21. // });
  22. // afterEach(() => {
  23. // process.env = initialEnv;
  24. // });
  25. // describe('isAclEnabled()', () => {
  26. // test('to be false when FORCE_WIKI_MODE is undefined', async() => {
  27. // delete process.env.FORCE_WIKI_MODE;
  28. // // reload
  29. // await configManager.loadConfigs();
  30. // const result = aclService.isAclEnabled();
  31. // const wikiMode = configManager.getConfig('crowi', 'security:wikiMode');
  32. // expect(wikiMode).toBe(undefined);
  33. // expect(result).toBe(true);
  34. // });
  35. // test('to be false when FORCE_WIKI_MODE is dummy string', async() => {
  36. // process.env.FORCE_WIKI_MODE = 'dummy string';
  37. // // reload
  38. // await configManager.loadConfigs();
  39. // const result = aclService.isAclEnabled();
  40. // const wikiMode = configManager.getConfig('crowi', 'security:wikiMode');
  41. // expect(wikiMode).toBe('dummy string');
  42. // expect(result).toBe(true);
  43. // });
  44. // test('to be true when FORCE_WIKI_MODE=private', async() => {
  45. // process.env.FORCE_WIKI_MODE = 'private';
  46. // // reload
  47. // await configManager.loadConfigs();
  48. // const result = aclService.isAclEnabled();
  49. // const wikiMode = configManager.getConfig('crowi', 'security:wikiMode');
  50. // expect(wikiMode).toBe('private');
  51. // expect(result).toBe(true);
  52. // });
  53. // test('to be false when FORCE_WIKI_MODE=public', async() => {
  54. // process.env.FORCE_WIKI_MODE = 'public';
  55. // // reload
  56. // await configManager.loadConfigs();
  57. // const result = aclService.isAclEnabled();
  58. // const wikiMode = configManager.getConfig('crowi', 'security:wikiMode');
  59. // expect(wikiMode).toBe('public');
  60. // expect(result).toBe(false);
  61. // });
  62. // });
  63. // describe('isWikiModeForced()', () => {
  64. // test('to be false when FORCE_WIKI_MODE is undefined', async() => {
  65. // delete process.env.FORCE_WIKI_MODE;
  66. // // reload
  67. // await configManager.loadConfigs();
  68. // const result = aclService.isWikiModeForced();
  69. // const wikiMode = configManager.getConfig('crowi', 'security:wikiMode');
  70. // expect(wikiMode).toBe(undefined);
  71. // expect(result).toBe(false);
  72. // });
  73. // test('to be false when FORCE_WIKI_MODE is dummy string', async() => {
  74. // process.env.FORCE_WIKI_MODE = 'dummy string';
  75. // // reload
  76. // await configManager.loadConfigs();
  77. // const result = aclService.isWikiModeForced();
  78. // const wikiMode = configManager.getConfig('crowi', 'security:wikiMode');
  79. // expect(wikiMode).toBe('dummy string');
  80. // expect(result).toBe(false);
  81. // });
  82. // test('to be true when FORCE_WIKI_MODE=private', async() => {
  83. // process.env.FORCE_WIKI_MODE = 'private';
  84. // // reload
  85. // await configManager.loadConfigs();
  86. // const result = aclService.isWikiModeForced();
  87. // const wikiMode = configManager.getConfig('crowi', 'security:wikiMode');
  88. // expect(wikiMode).toBe('private');
  89. // expect(result).toBe(true);
  90. // });
  91. // test('to be false when FORCE_WIKI_MODE=public', async() => {
  92. // process.env.FORCE_WIKI_MODE = 'public';
  93. // // reload
  94. // await configManager.loadConfigs();
  95. // const result = aclService.isWikiModeForced();
  96. // const wikiMode = configManager.getConfig('crowi', 'security:wikiMode');
  97. // expect(wikiMode).toBe('public');
  98. // expect(result).toBe(true);
  99. // });
  100. // });
  101. // describe('isGuestAllowedToRead()', () => {
  102. // let getConfigSpy;
  103. // beforeEach(async() => {
  104. // // prepare spy for ConfigManager.getConfig
  105. // getConfigSpy = vi.spyOn(configManager, 'getConfig');
  106. // });
  107. // test('to be false when FORCE_WIKI_MODE=private', async() => {
  108. // process.env.FORCE_WIKI_MODE = 'private';
  109. // // reload
  110. // await configManager.loadConfigs();
  111. // const result = aclService.isGuestAllowedToRead();
  112. // const wikiMode = configManager.getConfig('crowi', 'security:wikiMode');
  113. // expect(wikiMode).toBe('private');
  114. // expect(getConfigSpy).not.toHaveBeenCalledWith('crowi', 'security:restrictGuestMode');
  115. // expect(result).toBe(false);
  116. // });
  117. // test('to be true when FORCE_WIKI_MODE=public', async() => {
  118. // process.env.FORCE_WIKI_MODE = 'public';
  119. // // reload
  120. // await configManager.loadConfigs();
  121. // const result = aclService.isGuestAllowedToRead();
  122. // const wikiMode = configManager.getConfig('crowi', 'security:wikiMode');
  123. // expect(wikiMode).toBe('public');
  124. // expect(getConfigSpy).not.toHaveBeenCalledWith('crowi', 'security:restrictGuestMode');
  125. // expect(result).toBe(true);
  126. // });
  127. // /* eslint-disable indent */
  128. // describe.each`
  129. // restrictGuestMode | expected
  130. // ${undefined} | ${false}
  131. // ${'Deny'} | ${false}
  132. // ${'Readonly'} | ${true}
  133. // ${'Open'} | ${false}
  134. // ${'Restricted'} | ${false}
  135. // ${'closed'} | ${false}
  136. // `('to be $expected', ({ restrictGuestMode, expected }) => {
  137. // test(`when FORCE_WIKI_MODE is undefined and 'security:restrictGuestMode' is '${restrictGuestMode}`, async() => {
  138. // // reload
  139. // await configManager.loadConfigs();
  140. // // setup mock implementation
  141. // getConfigSpy.mockImplementation((ns, key) => {
  142. // if (ns === 'crowi' && key === 'security:restrictGuestMode') {
  143. // return restrictGuestMode;
  144. // }
  145. // if (ns === 'crowi' && key === 'security:wikiMode') {
  146. // return undefined;
  147. // }
  148. // throw new Error('Unexpected behavior.');
  149. // });
  150. // const result = aclService.isGuestAllowedToRead();
  151. // expect(getConfigSpy).toHaveBeenCalledTimes(2);
  152. // expect(getConfigSpy).toHaveBeenCalledWith('crowi', 'security:wikiMode');
  153. // expect(getConfigSpy).toHaveBeenCalledWith('crowi', 'security:restrictGuestMode');
  154. // expect(result).toBe(expected);
  155. // });
  156. // });
  157. // });
  158. // });