Просмотр исходного кода

fix external user group sync tests

Futa Arai 2 лет назад
Родитель
Сommit
6817f6e720

+ 3 - 3
apps/app/src/features/external-user-group/server/service/external-user-group-sync.ts

@@ -49,7 +49,7 @@ abstract class ExternalUserGroupSyncService<SyncParamsType = any> {
     const preserveDeletedLdapGroups: boolean = configManager?.getConfig('crowi', `external-user-group:${this.groupProviderType}:preserveDeletedGroups`);
     const existingExternalUserGroupIds: string[] = [];
 
-    const socket = this.socketIoService.getAdminSocket();
+    const socket = this.socketIoService?.getAdminSocket();
 
     try {
       const trees = await this.generateExternalUserGroupTrees(params);
@@ -61,7 +61,7 @@ abstract class ExternalUserGroupSyncService<SyncParamsType = any> {
         const externalUserGroup = await this.createUpdateExternalUserGroup(node, parentId);
         existingExternalUserGroupIds.push(externalUserGroup._id);
         count++;
-        socket.emit(SocketEventName.GroupSyncProgress, { totalCount, count });
+        socket?.emit(SocketEventName.GroupSyncProgress, { totalCount, count });
         // Do not use Promise.all, because the number of promises processed can
         // exponentially grow when group tree is enormous
         for await (const childNode of node.childGroupNodes) {
@@ -80,7 +80,7 @@ abstract class ExternalUserGroupSyncService<SyncParamsType = any> {
     }
     finally {
       this.isExecutingSync = false;
-      socket.emit(SocketEventName.FinishGroupSync);
+      socket?.emit(SocketEventName.FinishGroupSync);
     }
   }
 

+ 3 - 4
apps/app/test/integration/service/external-user-group-sync.test.ts

@@ -13,12 +13,11 @@ import { instanciate } from '../../../src/server/service/external-account';
 import PassportService from '../../../src/server/service/passport';
 import { getInstance } from '../setup-crowi';
 
-
 // dummy class to implement generateExternalUserGroupTrees which returns test data
 class TestExternalUserGroupSyncService extends ExternalUserGroupSyncService {
 
-  constructor() {
-    super(ExternalGroupProviderType.ldap, 'ldap');
+  constructor(socketIoService) {
+    super(ExternalGroupProviderType.ldap, 'ldap', socketIoService);
   }
 
   async generateExternalUserGroupTrees(): Promise<ExternalUserGroupTreeNode[]> {
@@ -77,7 +76,7 @@ class TestExternalUserGroupSyncService extends ExternalUserGroupSyncService {
 
 }
 
-const testService = new TestExternalUserGroupSyncService();
+const testService = new TestExternalUserGroupSyncService(null);
 
 const checkGroup = (group: IExternalUserGroupHasId, expected: Omit<IExternalUserGroup, 'createdAt'>) => {
   const actual = {

+ 7 - 9
apps/app/test/integration/service/ldap-user-group-sync.test.ts

@@ -1,15 +1,13 @@
 import ldap, { Client } from 'ldapjs';
 
-import LdapUserGroupSyncService from '../../../src/features/external-user-group/server/service/ldap-user-group-sync';
+import { ldapUserGroupSyncService, instanciate } from '../../../src/features/external-user-group/server/service/ldap-user-group-sync';
 import { configManager } from '../../../src/server/service/config-manager';
 import LdapService from '../../../src/server/service/ldap';
 import PassportService from '../../../src/server/service/passport';
 import { getInstance } from '../setup-crowi';
 
-
 describe('LdapUserGroupSyncService.generateExternalUserGroupTrees', () => {
   let crowi;
-  let ldapGroupSyncService: LdapUserGroupSyncService;
 
   const configParams = {
     'security:passport-ldap:attrMapName': 'name',
@@ -37,7 +35,7 @@ describe('LdapUserGroupSyncService.generateExternalUserGroupTrees', () => {
     mockLdapCreateClient.mockImplementation(() => { return {} as Client });
 
     const passportService = new PassportService(crowi);
-    ldapGroupSyncService = new LdapUserGroupSyncService(passportService);
+    instanciate(passportService, null);
   });
 
   describe('When there is no circular reference in group tree', () => {
@@ -150,12 +148,12 @@ describe('LdapUserGroupSyncService.generateExternalUserGroupTrees', () => {
         return Promise.reject(new Error('not found'));
       });
 
-      const rootNodes = await ldapGroupSyncService.generateExternalUserGroupTrees();
+      const rootNodes = await ldapUserGroupSyncService?.generateExternalUserGroupTrees();
 
-      expect(rootNodes.length).toBe(2);
+      expect(rootNodes?.length).toBe(2);
 
       // check grandParentGroup
-      const grandParentNode = rootNodes.find(node => node.id === 'cn=grandParentGroup,ou=groups,dc=example,dc=org');
+      const grandParentNode = rootNodes?.find(node => node.id === 'cn=grandParentGroup,ou=groups,dc=example,dc=org');
       const expectedChildNode = {
         id: 'cn=childGroup,ou=groups,dc=example,dc=org',
         userInfos: [{
@@ -195,7 +193,7 @@ describe('LdapUserGroupSyncService.generateExternalUserGroupTrees', () => {
       expect(grandParentNode).toStrictEqual(expectedGrandParentNode);
 
       // check rootGroup
-      const rootNode = rootNodes.find(node => node.id === 'cn=rootGroup,ou=groups,dc=example,dc=org');
+      const rootNode = rootNodes?.find(node => node.id === 'cn=rootGroup,ou=groups,dc=example,dc=org');
       const expectedRootNode = {
         id: 'cn=rootGroup,ou=groups,dc=example,dc=org',
         userInfos: [{
@@ -258,7 +256,7 @@ describe('LdapUserGroupSyncService.generateExternalUserGroupTrees', () => {
         return Promise.reject(new Error('not found'));
       });
 
-      await expect(ldapGroupSyncService.generateExternalUserGroupTrees()).rejects.toThrow('external_user_group.ldap.circular_reference');
+      await expect(ldapUserGroupSyncService?.generateExternalUserGroupTrees()).rejects.toThrow('external_user_group.ldap.circular_reference');
     });
   });
 });