@tomei/sso 0.64.0 → 0.65.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.commitlintrc.json +22 -22
 - package/.gitlab-ci.yml +16 -16
 - package/.husky/commit-msg +15 -15
 - package/.husky/pre-commit +7 -7
 - package/.prettierrc +4 -4
 - package/Jenkinsfile +57 -57
 - package/README.md +23 -23
 - package/__tests__/unit/components/group/group.spec.ts +79 -79
 - package/__tests__/unit/components/group-object-privilege/group-object-privilege.spec.ts +88 -88
 - package/__tests__/unit/components/group-privilege/group-privilege.spec.ts +68 -68
 - package/__tests__/unit/components/group-reporting-user/group-reporting-user.spec.ts +66 -66
 - package/__tests__/unit/components/group-system-access/group-system-access.spec.ts +83 -83
 - package/__tests__/unit/components/login-user/l.spec.ts +746 -746
 - package/__tests__/unit/components/login-user/login.spec.ts +1164 -1164
 - package/__tests__/unit/components/password-hash/password-hash.service.spec.ts +31 -31
 - package/__tests__/unit/components/system/system.spec.ts +254 -254
 - package/__tests__/unit/components/system-privilege/system-privilege.spec.ts +83 -83
 - package/__tests__/unit/components/user-group/user-group.spec.ts +86 -86
 - package/__tests__/unit/components/user-object-privilege/user-object-privilege.spec.ts +78 -78
 - package/__tests__/unit/components/user-privilege/user-privilege.spec.ts +72 -72
 - package/__tests__/unit/components/user-system-access/user-system-access.spec.ts +89 -89
 - package/__tests__/unit/redis-client/redis.service.spec.ts +23 -23
 - package/__tests__/unit/session/session.service.spec.ts +47 -47
 - package/__tests__/unit/system-privilege/system-privilage.spec.ts +91 -91
 - package/create-sso-user.sql +39 -39
 - package/dist/src/components/login-user/user.js +1 -1
 - package/dist/src/components/login-user/user.js.map +1 -1
 - package/dist/tsconfig.tsbuildinfo +1 -1
 - package/eslint.config.mjs +58 -58
 - package/jest.config.js +14 -14
 - package/migrations/20240314080602-create-user-table.js +124 -124
 - package/migrations/20240314080603-create-user-group-table.js +85 -85
 - package/migrations/20240314080604-create-user-user-group-table.js +55 -55
 - package/migrations/20240314080605-create-login-history-table.js +53 -53
 - package/migrations/20240527064925-create-system-table.js +78 -78
 - package/migrations/20240527064926-create-system-privilege-table.js +71 -71
 - package/migrations/20240527065342-create-group-table.js +93 -93
 - package/migrations/20240527065633-create-group-reporting-user-table.js +76 -76
 - package/migrations/20240528011551-create-group-system-access-table.js +72 -72
 - package/migrations/20240528023018-user-system-access-table.js +75 -75
 - package/migrations/20240528032229-user-privilege-table.js +76 -76
 - package/migrations/20240528063003-create-group-privilege-table.js +76 -76
 - package/migrations/20240528063051-create-group-object-privilege-table.js +84 -84
 - package/migrations/20240528063107-create-user-object-privilege-table.js +84 -84
 - package/migrations/20240528063108-create-api-key-table.js +85 -85
 - package/migrations/20241104104802-create-building-table.js +95 -95
 - package/migrations/20250108091132-add-area-manager-user-id-to-building-table.js +14 -14
 - package/migrations/20250108091133-add-passcode-to-user-table.js +36 -36
 - package/migrations/20250210115636-create-user-reporting-hierarchy.js +76 -76
 - package/migrations/20250326043818-crate-user-password-history.js +42 -42
 - package/migrations/20250610070720-added-MFBypassYN-to-sso-user.js +30 -30
 - package/package.json +87 -87
 - package/sampledotenv +7 -7
 - package/src/components/login-user/user.ts +1 -1
 - package/tsconfig.build.json +5 -5
 - package/tsconfig.json +23 -23
 - package/dist/__tests__/unit/components/group-privilege/group-privilege.test.d.ts +0 -1
 - package/dist/__tests__/unit/components/group-privilege/group-privilege.test.js +0 -71
 - package/dist/__tests__/unit/components/group-privilege/group-privilege.test.js.map +0 -1
 - package/dist/__tests__/unit/components/login-user/login-user.spec.d.ts +0 -0
 - package/dist/__tests__/unit/components/login-user/login-user.spec.js +0 -6
 - package/dist/__tests__/unit/components/login-user/login-user.spec.js.map +0 -1
 - package/sonar-project.properties +0 -23
 
| 
         @@ -1,90 +1,90 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            import { UserSystemAccess } from '../../../../src/components/user-system-access/user-system-access';
         
     | 
| 
       2 
     | 
    
         
            -
            import { UserSystemAccessRepository } from '../../../../src/components/user-system-access/user-system-access.repository';
         
     | 
| 
       3 
     | 
    
         
            -
            import { ClassError } from '@tomei/general';
         
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
     | 
    
         
            -
            describe('UserSystemAccess', () => {
         
     | 
| 
       6 
     | 
    
         
            -
              let userSystemAccess: UserSystemAccess;
         
     | 
| 
       7 
     | 
    
         
            -
              const userSystemAccessAttr = {
         
     | 
| 
       8 
     | 
    
         
            -
                UserSystemAccessId: 1,
         
     | 
| 
       9 
     | 
    
         
            -
                UserId: 1,
         
     | 
| 
       10 
     | 
    
         
            -
                SystemCode: 'system1',
         
     | 
| 
       11 
     | 
    
         
            -
                Status: 'active',
         
     | 
| 
       12 
     | 
    
         
            -
                CreatedById: 1,
         
     | 
| 
       13 
     | 
    
         
            -
                CreatedAt: new Date(),
         
     | 
| 
       14 
     | 
    
         
            -
                UpdatedById: 1,
         
     | 
| 
       15 
     | 
    
         
            -
                UpdatedAt: new Date(),
         
     | 
| 
       16 
     | 
    
         
            -
              };
         
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
              beforeEach(() => {
         
     | 
| 
       19 
     | 
    
         
            -
                userSystemAccess = new (UserSystemAccess as any)(userSystemAccessAttr);
         
     | 
| 
       20 
     | 
    
         
            -
              });
         
     | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
       22 
     | 
    
         
            -
              afterEach(() => {
         
     | 
| 
       23 
     | 
    
         
            -
                jest.clearAllMocks();
         
     | 
| 
       24 
     | 
    
         
            -
              });
         
     | 
| 
       25 
     | 
    
         
            -
             
     | 
| 
       26 
     | 
    
         
            -
              describe('constructor', () => {
         
     | 
| 
       27 
     | 
    
         
            -
                it('should create a new UserSystemAccess instance', () => {
         
     | 
| 
       28 
     | 
    
         
            -
                  expect(userSystemAccess).toBeDefined();
         
     | 
| 
       29 
     | 
    
         
            -
                  expect(userSystemAccess).toBeInstanceOf(UserSystemAccess);
         
     | 
| 
       30 
     | 
    
         
            -
                  expect(userSystemAccess.UserSystemAccessId).toBe(
         
     | 
| 
       31 
     | 
    
         
            -
                    userSystemAccessAttr.UserSystemAccessId
         
     | 
| 
       32 
     | 
    
         
            -
                  );
         
     | 
| 
       33 
     | 
    
         
            -
                  expect(userSystemAccess.UserId).toBe(userSystemAccessAttr.UserId);
         
     | 
| 
       34 
     | 
    
         
            -
                  expect(userSystemAccess.SystemCode).toBe(userSystemAccessAttr.SystemCode);
         
     | 
| 
       35 
     | 
    
         
            -
                  expect(userSystemAccess.Status).toBe(userSystemAccessAttr.Status);
         
     | 
| 
       36 
     | 
    
         
            -
                  expect(userSystemAccess.CreatedById).toBe(
         
     | 
| 
       37 
     | 
    
         
            -
                    userSystemAccessAttr.CreatedById
         
     | 
| 
       38 
     | 
    
         
            -
                  );
         
     | 
| 
       39 
     | 
    
         
            -
                  expect(userSystemAccess.CreatedAt).toBe(userSystemAccessAttr.CreatedAt);
         
     | 
| 
       40 
     | 
    
         
            -
                  expect(userSystemAccess.UpdatedById).toBe(
         
     | 
| 
       41 
     | 
    
         
            -
                    userSystemAccessAttr.UpdatedById
         
     | 
| 
       42 
     | 
    
         
            -
                  );
         
     | 
| 
       43 
     | 
    
         
            -
                  expect(userSystemAccess.UpdatedAt).toBe(userSystemAccessAttr.UpdatedAt);
         
     | 
| 
       44 
     | 
    
         
            -
                });
         
     | 
| 
       45 
     | 
    
         
            -
              });
         
     | 
| 
       46 
     | 
    
         
            -
             
     | 
| 
       47 
     | 
    
         
            -
              describe('init', () => {
         
     | 
| 
       48 
     | 
    
         
            -
                it('should initialize UserSystemAccess with valid UserSystemAccessId', async () => {
         
     | 
| 
       49 
     | 
    
         
            -
                  const findOneMock = jest
         
     | 
| 
       50 
     | 
    
         
            -
                    .spyOn(UserSystemAccessRepository.prototype, 'findOne')
         
     | 
| 
       51 
     | 
    
         
            -
                    .mockResolvedValueOnce({
         
     | 
| 
       52 
     | 
    
         
            -
                      ...userSystemAccessAttr,
         
     | 
| 
       53 
     | 
    
         
            -
                      get: () => userSystemAccessAttr,
         
     | 
| 
       54 
     | 
    
         
            -
                    } as any);
         
     | 
| 
       55 
     | 
    
         
            -
             
     | 
| 
       56 
     | 
    
         
            -
                  const result = await UserSystemAccess.init(null, 1);
         
     | 
| 
       57 
     | 
    
         
            -
             
     | 
| 
       58 
     | 
    
         
            -
                  expect(findOneMock).toHaveBeenCalledTimes(1);
         
     | 
| 
       59 
     | 
    
         
            -
                  expect(findOneMock).toHaveBeenCalledWith({
         
     | 
| 
       60 
     | 
    
         
            -
                    where: { UserSystemAccessId: 1 },
         
     | 
| 
       61 
     | 
    
         
            -
                    transaction: null,
         
     | 
| 
       62 
     | 
    
         
            -
                  });
         
     | 
| 
       63 
     | 
    
         
            -
                  expect(result).toBeInstanceOf(UserSystemAccess);
         
     | 
| 
       64 
     | 
    
         
            -
                  expect(result.UserSystemAccessId).toBe(
         
     | 
| 
       65 
     | 
    
         
            -
                    userSystemAccessAttr.UserSystemAccessId
         
     | 
| 
       66 
     | 
    
         
            -
                  );
         
     | 
| 
       67 
     | 
    
         
            -
                  expect(result.UserId).toBe(userSystemAccessAttr.UserId);
         
     | 
| 
       68 
     | 
    
         
            -
                  expect(result.SystemCode).toBe(userSystemAccessAttr.SystemCode);
         
     | 
| 
       69 
     | 
    
         
            -
                  expect(result.Status).toBe(userSystemAccessAttr.Status);
         
     | 
| 
       70 
     | 
    
         
            -
                  expect(result.CreatedById).toBe(userSystemAccessAttr.CreatedById);
         
     | 
| 
       71 
     | 
    
         
            -
                  expect(result.CreatedAt).toBe(userSystemAccessAttr.CreatedAt);
         
     | 
| 
       72 
     | 
    
         
            -
                  expect(result.UpdatedById).toBe(userSystemAccessAttr.UpdatedById);
         
     | 
| 
       73 
     | 
    
         
            -
                  expect(result.UpdatedAt).toBe(userSystemAccessAttr.UpdatedAt);
         
     | 
| 
       74 
     | 
    
         
            -
                });
         
     | 
| 
       75 
     | 
    
         
            -
             
     | 
| 
       76 
     | 
    
         
            -
                it('should throw ClassError when UserSystemAccessId is not found', async () => {
         
     | 
| 
       77 
     | 
    
         
            -
                  jest
         
     | 
| 
       78 
     | 
    
         
            -
                    .spyOn(UserSystemAccessRepository.prototype, 'findOne')
         
     | 
| 
       79 
     | 
    
         
            -
                    .mockResolvedValueOnce(null);
         
     | 
| 
       80 
     | 
    
         
            -
             
     | 
| 
       81 
     | 
    
         
            -
                  try {
         
     | 
| 
       82 
     | 
    
         
            -
                    await UserSystemAccess.init(null, 1)
         
     | 
| 
       83 
     | 
    
         
            -
                    expect(false).toBe(true);
         
     | 
| 
       84 
     | 
    
         
            -
                  } catch (error) {
         
     | 
| 
       85 
     | 
    
         
            -
                    expect(error).toBeInstanceOf(ClassError);
         
     | 
| 
       86 
     | 
    
         
            -
                    expect(error.message).toBe('UserSystemAccess not found');
         
     | 
| 
       87 
     | 
    
         
            -
                  }
         
     | 
| 
       88 
     | 
    
         
            -
                });
         
     | 
| 
       89 
     | 
    
         
            -
              });
         
     | 
| 
      
 1 
     | 
    
         
            +
            import { UserSystemAccess } from '../../../../src/components/user-system-access/user-system-access';
         
     | 
| 
      
 2 
     | 
    
         
            +
            import { UserSystemAccessRepository } from '../../../../src/components/user-system-access/user-system-access.repository';
         
     | 
| 
      
 3 
     | 
    
         
            +
            import { ClassError } from '@tomei/general';
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            describe('UserSystemAccess', () => {
         
     | 
| 
      
 6 
     | 
    
         
            +
              let userSystemAccess: UserSystemAccess;
         
     | 
| 
      
 7 
     | 
    
         
            +
              const userSystemAccessAttr = {
         
     | 
| 
      
 8 
     | 
    
         
            +
                UserSystemAccessId: 1,
         
     | 
| 
      
 9 
     | 
    
         
            +
                UserId: 1,
         
     | 
| 
      
 10 
     | 
    
         
            +
                SystemCode: 'system1',
         
     | 
| 
      
 11 
     | 
    
         
            +
                Status: 'active',
         
     | 
| 
      
 12 
     | 
    
         
            +
                CreatedById: 1,
         
     | 
| 
      
 13 
     | 
    
         
            +
                CreatedAt: new Date(),
         
     | 
| 
      
 14 
     | 
    
         
            +
                UpdatedById: 1,
         
     | 
| 
      
 15 
     | 
    
         
            +
                UpdatedAt: new Date(),
         
     | 
| 
      
 16 
     | 
    
         
            +
              };
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
              beforeEach(() => {
         
     | 
| 
      
 19 
     | 
    
         
            +
                userSystemAccess = new (UserSystemAccess as any)(userSystemAccessAttr);
         
     | 
| 
      
 20 
     | 
    
         
            +
              });
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
              afterEach(() => {
         
     | 
| 
      
 23 
     | 
    
         
            +
                jest.clearAllMocks();
         
     | 
| 
      
 24 
     | 
    
         
            +
              });
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
              describe('constructor', () => {
         
     | 
| 
      
 27 
     | 
    
         
            +
                it('should create a new UserSystemAccess instance', () => {
         
     | 
| 
      
 28 
     | 
    
         
            +
                  expect(userSystemAccess).toBeDefined();
         
     | 
| 
      
 29 
     | 
    
         
            +
                  expect(userSystemAccess).toBeInstanceOf(UserSystemAccess);
         
     | 
| 
      
 30 
     | 
    
         
            +
                  expect(userSystemAccess.UserSystemAccessId).toBe(
         
     | 
| 
      
 31 
     | 
    
         
            +
                    userSystemAccessAttr.UserSystemAccessId
         
     | 
| 
      
 32 
     | 
    
         
            +
                  );
         
     | 
| 
      
 33 
     | 
    
         
            +
                  expect(userSystemAccess.UserId).toBe(userSystemAccessAttr.UserId);
         
     | 
| 
      
 34 
     | 
    
         
            +
                  expect(userSystemAccess.SystemCode).toBe(userSystemAccessAttr.SystemCode);
         
     | 
| 
      
 35 
     | 
    
         
            +
                  expect(userSystemAccess.Status).toBe(userSystemAccessAttr.Status);
         
     | 
| 
      
 36 
     | 
    
         
            +
                  expect(userSystemAccess.CreatedById).toBe(
         
     | 
| 
      
 37 
     | 
    
         
            +
                    userSystemAccessAttr.CreatedById
         
     | 
| 
      
 38 
     | 
    
         
            +
                  );
         
     | 
| 
      
 39 
     | 
    
         
            +
                  expect(userSystemAccess.CreatedAt).toBe(userSystemAccessAttr.CreatedAt);
         
     | 
| 
      
 40 
     | 
    
         
            +
                  expect(userSystemAccess.UpdatedById).toBe(
         
     | 
| 
      
 41 
     | 
    
         
            +
                    userSystemAccessAttr.UpdatedById
         
     | 
| 
      
 42 
     | 
    
         
            +
                  );
         
     | 
| 
      
 43 
     | 
    
         
            +
                  expect(userSystemAccess.UpdatedAt).toBe(userSystemAccessAttr.UpdatedAt);
         
     | 
| 
      
 44 
     | 
    
         
            +
                });
         
     | 
| 
      
 45 
     | 
    
         
            +
              });
         
     | 
| 
      
 46 
     | 
    
         
            +
             
     | 
| 
      
 47 
     | 
    
         
            +
              describe('init', () => {
         
     | 
| 
      
 48 
     | 
    
         
            +
                it('should initialize UserSystemAccess with valid UserSystemAccessId', async () => {
         
     | 
| 
      
 49 
     | 
    
         
            +
                  const findOneMock = jest
         
     | 
| 
      
 50 
     | 
    
         
            +
                    .spyOn(UserSystemAccessRepository.prototype, 'findOne')
         
     | 
| 
      
 51 
     | 
    
         
            +
                    .mockResolvedValueOnce({
         
     | 
| 
      
 52 
     | 
    
         
            +
                      ...userSystemAccessAttr,
         
     | 
| 
      
 53 
     | 
    
         
            +
                      get: () => userSystemAccessAttr,
         
     | 
| 
      
 54 
     | 
    
         
            +
                    } as any);
         
     | 
| 
      
 55 
     | 
    
         
            +
             
     | 
| 
      
 56 
     | 
    
         
            +
                  const result = await UserSystemAccess.init(null, 1);
         
     | 
| 
      
 57 
     | 
    
         
            +
             
     | 
| 
      
 58 
     | 
    
         
            +
                  expect(findOneMock).toHaveBeenCalledTimes(1);
         
     | 
| 
      
 59 
     | 
    
         
            +
                  expect(findOneMock).toHaveBeenCalledWith({
         
     | 
| 
      
 60 
     | 
    
         
            +
                    where: { UserSystemAccessId: 1 },
         
     | 
| 
      
 61 
     | 
    
         
            +
                    transaction: null,
         
     | 
| 
      
 62 
     | 
    
         
            +
                  });
         
     | 
| 
      
 63 
     | 
    
         
            +
                  expect(result).toBeInstanceOf(UserSystemAccess);
         
     | 
| 
      
 64 
     | 
    
         
            +
                  expect(result.UserSystemAccessId).toBe(
         
     | 
| 
      
 65 
     | 
    
         
            +
                    userSystemAccessAttr.UserSystemAccessId
         
     | 
| 
      
 66 
     | 
    
         
            +
                  );
         
     | 
| 
      
 67 
     | 
    
         
            +
                  expect(result.UserId).toBe(userSystemAccessAttr.UserId);
         
     | 
| 
      
 68 
     | 
    
         
            +
                  expect(result.SystemCode).toBe(userSystemAccessAttr.SystemCode);
         
     | 
| 
      
 69 
     | 
    
         
            +
                  expect(result.Status).toBe(userSystemAccessAttr.Status);
         
     | 
| 
      
 70 
     | 
    
         
            +
                  expect(result.CreatedById).toBe(userSystemAccessAttr.CreatedById);
         
     | 
| 
      
 71 
     | 
    
         
            +
                  expect(result.CreatedAt).toBe(userSystemAccessAttr.CreatedAt);
         
     | 
| 
      
 72 
     | 
    
         
            +
                  expect(result.UpdatedById).toBe(userSystemAccessAttr.UpdatedById);
         
     | 
| 
      
 73 
     | 
    
         
            +
                  expect(result.UpdatedAt).toBe(userSystemAccessAttr.UpdatedAt);
         
     | 
| 
      
 74 
     | 
    
         
            +
                });
         
     | 
| 
      
 75 
     | 
    
         
            +
             
     | 
| 
      
 76 
     | 
    
         
            +
                it('should throw ClassError when UserSystemAccessId is not found', async () => {
         
     | 
| 
      
 77 
     | 
    
         
            +
                  jest
         
     | 
| 
      
 78 
     | 
    
         
            +
                    .spyOn(UserSystemAccessRepository.prototype, 'findOne')
         
     | 
| 
      
 79 
     | 
    
         
            +
                    .mockResolvedValueOnce(null);
         
     | 
| 
      
 80 
     | 
    
         
            +
             
     | 
| 
      
 81 
     | 
    
         
            +
                  try {
         
     | 
| 
      
 82 
     | 
    
         
            +
                    await UserSystemAccess.init(null, 1)
         
     | 
| 
      
 83 
     | 
    
         
            +
                    expect(false).toBe(true);
         
     | 
| 
      
 84 
     | 
    
         
            +
                  } catch (error) {
         
     | 
| 
      
 85 
     | 
    
         
            +
                    expect(error).toBeInstanceOf(ClassError);
         
     | 
| 
      
 86 
     | 
    
         
            +
                    expect(error.message).toBe('UserSystemAccess not found');
         
     | 
| 
      
 87 
     | 
    
         
            +
                  }
         
     | 
| 
      
 88 
     | 
    
         
            +
                });
         
     | 
| 
      
 89 
     | 
    
         
            +
              });
         
     | 
| 
       90 
90 
     | 
    
         
             
            });
         
     | 
| 
         @@ -1,24 +1,24 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            import { RedisService } from "../../../src/redis-client/redis.service";
         
     | 
| 
       2 
     | 
    
         
            -
            require('dotenv').config()
         
     | 
| 
       3 
     | 
    
         
            -
            // nneed to figure out how to mock redis
         
     | 
| 
       4 
     | 
    
         
            -
            describe('redis.service', () => {
         
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
     | 
    
         
            -
                afterEach(() => {
         
     | 
| 
       7 
     | 
    
         
            -
                    jest.restoreAllMocks()
         
     | 
| 
       8 
     | 
    
         
            -
                })
         
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
     | 
    
         
            -
                it('should return redis service when instansiated', async () => {
         
     | 
| 
       11 
     | 
    
         
            -
                    const redisService = await RedisService.init();
         
     | 
| 
       12 
     | 
    
         
            -
                    expect(redisService).toBeDefined();
         
     | 
| 
       13 
     | 
    
         
            -
                });
         
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
     | 
    
         
            -
                it('should able to write and read redis', async () => {
         
     | 
| 
       16 
     | 
    
         
            -
                    const data = {
         
     | 
| 
       17 
     | 
    
         
            -
                        test: 'test'
         
     | 
| 
       18 
     | 
    
         
            -
                    }
         
     | 
| 
       19 
     | 
    
         
            -
                    const redisService = await RedisService.init();
         
     | 
| 
       20 
     | 
    
         
            -
                    await redisService.set("test", data, 60 * 60 * 24 * 1)
         
     | 
| 
       21 
     | 
    
         
            -
                    const result = await redisService.get("test");
         
     | 
| 
       22 
     | 
    
         
            -
                    expect(result).toEqual(JSON.stringify(data));
         
     | 
| 
       23 
     | 
    
         
            -
                });
         
     | 
| 
      
 1 
     | 
    
         
            +
            import { RedisService } from "../../../src/redis-client/redis.service";
         
     | 
| 
      
 2 
     | 
    
         
            +
            require('dotenv').config()
         
     | 
| 
      
 3 
     | 
    
         
            +
            // nneed to figure out how to mock redis
         
     | 
| 
      
 4 
     | 
    
         
            +
            describe('redis.service', () => {
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
                afterEach(() => {
         
     | 
| 
      
 7 
     | 
    
         
            +
                    jest.restoreAllMocks()
         
     | 
| 
      
 8 
     | 
    
         
            +
                })
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
                it('should return redis service when instansiated', async () => {
         
     | 
| 
      
 11 
     | 
    
         
            +
                    const redisService = await RedisService.init();
         
     | 
| 
      
 12 
     | 
    
         
            +
                    expect(redisService).toBeDefined();
         
     | 
| 
      
 13 
     | 
    
         
            +
                });
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
                it('should able to write and read redis', async () => {
         
     | 
| 
      
 16 
     | 
    
         
            +
                    const data = {
         
     | 
| 
      
 17 
     | 
    
         
            +
                        test: 'test'
         
     | 
| 
      
 18 
     | 
    
         
            +
                    }
         
     | 
| 
      
 19 
     | 
    
         
            +
                    const redisService = await RedisService.init();
         
     | 
| 
      
 20 
     | 
    
         
            +
                    await redisService.set("test", data, 60 * 60 * 24 * 1)
         
     | 
| 
      
 21 
     | 
    
         
            +
                    const result = await redisService.get("test");
         
     | 
| 
      
 22 
     | 
    
         
            +
                    expect(result).toEqual(JSON.stringify(data));
         
     | 
| 
      
 23 
     | 
    
         
            +
                });
         
     | 
| 
       24 
24 
     | 
    
         
             
            });
         
     | 
| 
         @@ -1,47 +1,47 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            import { IUserSession } from '../../../src/interfaces/user-session.interface';
         
     | 
| 
       2 
     | 
    
         
            -
            import { SessionService } from '../../../src/session/session.service';
         
     | 
| 
       3 
     | 
    
         
            -
            require('dotenv').config()
         
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
     | 
    
         
            -
            describe('session.service', () => {
         
     | 
| 
       6 
     | 
    
         
            -
              it('should return session service when instansiated', async () => {
         
     | 
| 
       7 
     | 
    
         
            -
                const sessionService = await SessionService.init();
         
     | 
| 
       8 
     | 
    
         
            -
                expect(sessionService).toBeDefined();
         
     | 
| 
       9 
     | 
    
         
            -
              });
         
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
       11 
     | 
    
         
            -
              it('should able to write session data', async () => {
         
     | 
| 
       12 
     | 
    
         
            -
                const data: IUserSession = {
         
     | 
| 
       13 
     | 
    
         
            -
                  systemLogins: [
         
     | 
| 
       14 
     | 
    
         
            -
                    {
         
     | 
| 
       15 
     | 
    
         
            -
                      id: '1',
         
     | 
| 
       16 
     | 
    
         
            -
                      code: 'EZC',
         
     | 
| 
       17 
     | 
    
         
            -
                      sessionId: 'test1',
         
     | 
| 
       18 
     | 
    
         
            -
                      privileges: ['PRIVILEGE1', 'PRIVILEGE2'],
         
     | 
| 
       19 
     | 
    
         
            -
                    },
         
     | 
| 
       20 
     | 
    
         
            -
                  ],
         
     | 
| 
       21 
     | 
    
         
            -
                };
         
     | 
| 
       22 
     | 
    
         
            -
                const sessionService = await SessionService.init();
         
     | 
| 
       23 
     | 
    
         
            -
                await sessionService.setUserSession("1", data)
         
     | 
| 
       24 
     | 
    
         
            -
                const result = await sessionService.retrieveUserSession("1");
         
     | 
| 
       25 
     | 
    
         
            -
                expect(result).toEqual(data);
         
     | 
| 
       26 
     | 
    
         
            -
              });
         
     | 
| 
       27 
     | 
    
         
            -
             
     | 
| 
       28 
     | 
    
         
            -
              it('should able to refresh session data', async () => {
         
     | 
| 
       29 
     | 
    
         
            -
                const setUserSession = jest.spyOn(SessionService.prototype, 'setUserSession');
         
     | 
| 
       30 
     | 
    
         
            -
                const retrieveUserSession = jest.spyOn(SessionService.prototype, 'retrieveUserSession');
         
     | 
| 
       31 
     | 
    
         
            -
                const data: IUserSession = {
         
     | 
| 
       32 
     | 
    
         
            -
                  systemLogins: [
         
     | 
| 
       33 
     | 
    
         
            -
                    {
         
     | 
| 
       34 
     | 
    
         
            -
                      id: '1',
         
     | 
| 
       35 
     | 
    
         
            -
                      code: 'EZC',
         
     | 
| 
       36 
     | 
    
         
            -
                      sessionId: 'test1',
         
     | 
| 
       37 
     | 
    
         
            -
                      privileges: ['PRIVILEGE1', 'PRIVILEGE2'],
         
     | 
| 
       38 
     | 
    
         
            -
                    },
         
     | 
| 
       39 
     | 
    
         
            -
                  ],
         
     | 
| 
       40 
     | 
    
         
            -
                };
         
     | 
| 
       41 
     | 
    
         
            -
                const sessionService = await SessionService.init();
         
     | 
| 
       42 
     | 
    
         
            -
                await sessionService.setUserSession("1", data)
         
     | 
| 
       43 
     | 
    
         
            -
                await sessionService.refreshDuration("1");
         
     | 
| 
       44 
     | 
    
         
            -
                expect(setUserSession).toHaveBeenCalledTimes(2);
         
     | 
| 
       45 
     | 
    
         
            -
                expect(retrieveUserSession).toHaveBeenCalledTimes(1);
         
     | 
| 
       46 
     | 
    
         
            -
              });
         
     | 
| 
       47 
     | 
    
         
            -
            });
         
     | 
| 
      
 1 
     | 
    
         
            +
            import { IUserSession } from '../../../src/interfaces/user-session.interface';
         
     | 
| 
      
 2 
     | 
    
         
            +
            import { SessionService } from '../../../src/session/session.service';
         
     | 
| 
      
 3 
     | 
    
         
            +
            require('dotenv').config()
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            describe('session.service', () => {
         
     | 
| 
      
 6 
     | 
    
         
            +
              it('should return session service when instansiated', async () => {
         
     | 
| 
      
 7 
     | 
    
         
            +
                const sessionService = await SessionService.init();
         
     | 
| 
      
 8 
     | 
    
         
            +
                expect(sessionService).toBeDefined();
         
     | 
| 
      
 9 
     | 
    
         
            +
              });
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
              it('should able to write session data', async () => {
         
     | 
| 
      
 12 
     | 
    
         
            +
                const data: IUserSession = {
         
     | 
| 
      
 13 
     | 
    
         
            +
                  systemLogins: [
         
     | 
| 
      
 14 
     | 
    
         
            +
                    {
         
     | 
| 
      
 15 
     | 
    
         
            +
                      id: '1',
         
     | 
| 
      
 16 
     | 
    
         
            +
                      code: 'EZC',
         
     | 
| 
      
 17 
     | 
    
         
            +
                      sessionId: 'test1',
         
     | 
| 
      
 18 
     | 
    
         
            +
                      privileges: ['PRIVILEGE1', 'PRIVILEGE2'],
         
     | 
| 
      
 19 
     | 
    
         
            +
                    },
         
     | 
| 
      
 20 
     | 
    
         
            +
                  ],
         
     | 
| 
      
 21 
     | 
    
         
            +
                };
         
     | 
| 
      
 22 
     | 
    
         
            +
                const sessionService = await SessionService.init();
         
     | 
| 
      
 23 
     | 
    
         
            +
                await sessionService.setUserSession("1", data)
         
     | 
| 
      
 24 
     | 
    
         
            +
                const result = await sessionService.retrieveUserSession("1");
         
     | 
| 
      
 25 
     | 
    
         
            +
                expect(result).toEqual(data);
         
     | 
| 
      
 26 
     | 
    
         
            +
              });
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
              it('should able to refresh session data', async () => {
         
     | 
| 
      
 29 
     | 
    
         
            +
                const setUserSession = jest.spyOn(SessionService.prototype, 'setUserSession');
         
     | 
| 
      
 30 
     | 
    
         
            +
                const retrieveUserSession = jest.spyOn(SessionService.prototype, 'retrieveUserSession');
         
     | 
| 
      
 31 
     | 
    
         
            +
                const data: IUserSession = {
         
     | 
| 
      
 32 
     | 
    
         
            +
                  systemLogins: [
         
     | 
| 
      
 33 
     | 
    
         
            +
                    {
         
     | 
| 
      
 34 
     | 
    
         
            +
                      id: '1',
         
     | 
| 
      
 35 
     | 
    
         
            +
                      code: 'EZC',
         
     | 
| 
      
 36 
     | 
    
         
            +
                      sessionId: 'test1',
         
     | 
| 
      
 37 
     | 
    
         
            +
                      privileges: ['PRIVILEGE1', 'PRIVILEGE2'],
         
     | 
| 
      
 38 
     | 
    
         
            +
                    },
         
     | 
| 
      
 39 
     | 
    
         
            +
                  ],
         
     | 
| 
      
 40 
     | 
    
         
            +
                };
         
     | 
| 
      
 41 
     | 
    
         
            +
                const sessionService = await SessionService.init();
         
     | 
| 
      
 42 
     | 
    
         
            +
                await sessionService.setUserSession("1", data)
         
     | 
| 
      
 43 
     | 
    
         
            +
                await sessionService.refreshDuration("1");
         
     | 
| 
      
 44 
     | 
    
         
            +
                expect(setUserSession).toHaveBeenCalledTimes(2);
         
     | 
| 
      
 45 
     | 
    
         
            +
                expect(retrieveUserSession).toHaveBeenCalledTimes(1);
         
     | 
| 
      
 46 
     | 
    
         
            +
              });
         
     | 
| 
      
 47 
     | 
    
         
            +
            });
         
     | 
| 
         @@ -1,91 +1,91 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            // import { Privilege } from '../../../src/components/system-privilege/privilege';
         
     | 
| 
       2 
     | 
    
         
            -
            // import { SystemPrivilegeRepository } from '../../../src/components/system-privilege/system-privilege.repository';
         
     | 
| 
       3 
     | 
    
         
            -
            // import { SystemRepository } from '../../../src/components/system/system.repository';
         
     | 
| 
       4 
     | 
    
         
            -
            // describe('SystemPrivilege', () => {
         
     | 
| 
       5 
     | 
    
         
            -
            //   afterEach(async () => {
         
     | 
| 
       6 
     | 
    
         
            -
            //     jest.restoreAllMocks();
         
     | 
| 
       7 
     | 
    
         
            -
            //   });
         
     | 
| 
       8 
     | 
    
         
            -
            //   it('should be able to load single package privileges', async () => {
         
     | 
| 
       9 
     | 
    
         
            -
            //     let privilegeCalled = 0;
         
     | 
| 
       10 
     | 
    
         
            -
            //     const findOrCreateMock = jest
         
     | 
| 
       11 
     | 
    
         
            -
            //       .spyOn(SystemPrivilegeRepository.prototype, 'findOrCreate')
         
     | 
| 
       12 
     | 
    
         
            -
            //       .mockResolvedValueOnce([{}, true] as any);
         
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
       14 
     | 
    
         
            -
            //     const systemRepositoryMock = jest
         
     | 
| 
       15 
     | 
    
         
            -
            //       .spyOn(SystemRepository.prototype, 'findOne')
         
     | 
| 
       16 
     | 
    
         
            -
            //       .mockResolvedValueOnce({
         
     | 
| 
       17 
     | 
    
         
            -
            //         id: 175,
         
     | 
| 
       18 
     | 
    
         
            -
            //       } as any);
         
     | 
| 
       19 
     | 
    
         
            -
             
     | 
| 
       20 
     | 
    
         
            -
            //     jest.mock('@tomei/mailer/privileges.json', () => {
         
     | 
| 
       21 
     | 
    
         
            -
            //       privilegeCalled++;
         
     | 
| 
       22 
     | 
    
         
            -
            //       return {
         
     | 
| 
       23 
     | 
    
         
            -
            //         Privileges: [
         
     | 
| 
       24 
     | 
    
         
            -
            //           {
         
     | 
| 
       25 
     | 
    
         
            -
            //             Code: 'Privilege1',
         
     | 
| 
       26 
     | 
    
         
            -
            //             Description: 'This is Privilege1',
         
     | 
| 
       27 
     | 
    
         
            -
            //           },
         
     | 
| 
       28 
     | 
    
         
            -
            //         ],
         
     | 
| 
       29 
     | 
    
         
            -
            //       };
         
     | 
| 
       30 
     | 
    
         
            -
            //     });
         
     | 
| 
       31 
     | 
    
         
            -
             
     | 
| 
       32 
     | 
    
         
            -
            //     await Privilege.loadPrivileges('mailer', 'EZC');
         
     | 
| 
       33 
     | 
    
         
            -
            //     expect(findOrCreateMock).toBeCalledTimes(1);
         
     | 
| 
       34 
     | 
    
         
            -
            //     expect(systemRepositoryMock).toBeCalledTimes(1);
         
     | 
| 
       35 
     | 
    
         
            -
            //     expect(privilegeCalled).toEqual(1);
         
     | 
| 
       36 
     | 
    
         
            -
            //   });
         
     | 
| 
       37 
     | 
    
         
            -
             
     | 
| 
       38 
     | 
    
         
            -
            //   it('should be able to load multiple package privileges', async () => {
         
     | 
| 
       39 
     | 
    
         
            -
            //     let privilegeCalled = 0;
         
     | 
| 
       40 
     | 
    
         
            -
            //     const findOrCreateMock = jest
         
     | 
| 
       41 
     | 
    
         
            -
            //       .spyOn(SystemPrivilegeRepository.prototype, 'findOrCreate')
         
     | 
| 
       42 
     | 
    
         
            -
            //       .mockResolvedValueOnce([{}, true] as any);
         
     | 
| 
       43 
     | 
    
         
            -
             
     | 
| 
       44 
     | 
    
         
            -
            //     const systemRepositoryMock = jest
         
     | 
| 
       45 
     | 
    
         
            -
            //       .spyOn(SystemRepository.prototype, 'findOne')
         
     | 
| 
       46 
     | 
    
         
            -
            //       .mockResolvedValueOnce({
         
     | 
| 
       47 
     | 
    
         
            -
            //         id: 175,
         
     | 
| 
       48 
     | 
    
         
            -
            //       } as any);
         
     | 
| 
       49 
     | 
    
         
            -
             
     | 
| 
       50 
     | 
    
         
            -
            //     jest.mock(
         
     | 
| 
       51 
     | 
    
         
            -
            //       '@tomei/mailer/privileges.json',
         
     | 
| 
       52 
     | 
    
         
            -
            //       () => {
         
     | 
| 
       53 
     | 
    
         
            -
            //         privilegeCalled++;
         
     | 
| 
       54 
     | 
    
         
            -
            //         return {
         
     | 
| 
       55 
     | 
    
         
            -
            //           Privileges: [
         
     | 
| 
       56 
     | 
    
         
            -
            //             {
         
     | 
| 
       57 
     | 
    
         
            -
            //               Code: 'Privilege1',
         
     | 
| 
       58 
     | 
    
         
            -
            //               Description: 'This is Privilege1',
         
     | 
| 
       59 
     | 
    
         
            -
            //             },
         
     | 
| 
       60 
     | 
    
         
            -
            //           ],
         
     | 
| 
       61 
     | 
    
         
            -
            //         };
         
     | 
| 
       62 
     | 
    
         
            -
            //       },
         
     | 
| 
       63 
     | 
    
         
            -
            //     );
         
     | 
| 
       64 
     | 
    
         
            -
             
     | 
| 
       65 
     | 
    
         
            -
            //     jest.mock(
         
     | 
| 
       66 
     | 
    
         
            -
            //       '@tomei/config/privileges.json',
         
     | 
| 
       67 
     | 
    
         
            -
            //       () => {
         
     | 
| 
       68 
     | 
    
         
            -
            //         privilegeCalled++;
         
     | 
| 
       69 
     | 
    
         
            -
            //         return {
         
     | 
| 
       70 
     | 
    
         
            -
            //           Privileges: [
         
     | 
| 
       71 
     | 
    
         
            -
            //             {
         
     | 
| 
       72 
     | 
    
         
            -
            //               Code: 'Privilege2',
         
     | 
| 
       73 
     | 
    
         
            -
            //               Description: 'This is Privilege2',
         
     | 
| 
       74 
     | 
    
         
            -
            //             },
         
     | 
| 
       75 
     | 
    
         
            -
            //           ],
         
     | 
| 
       76 
     | 
    
         
            -
            //         };
         
     | 
| 
       77 
     | 
    
         
            -
            //       },
         
     | 
| 
       78 
     | 
    
         
            -
            //     );
         
     | 
| 
       79 
     | 
    
         
            -
             
     | 
| 
       80 
     | 
    
         
            -
            //     await Privilege.loadPrivileges(['mailer', 'config'], 'EZC');
         
     | 
| 
       81 
     | 
    
         
            -
            //     expect(findOrCreateMock).toBeCalledTimes(2);
         
     | 
| 
       82 
     | 
    
         
            -
            //     expect(systemRepositoryMock).toBeCalledTimes(1);
         
     | 
| 
       83 
     | 
    
         
            -
            //     expect(privilegeCalled).toEqual(2);
         
     | 
| 
       84 
     | 
    
         
            -
            //   });
         
     | 
| 
       85 
     | 
    
         
            -
            // });
         
     | 
| 
       86 
     | 
    
         
            -
             
     | 
| 
       87 
     | 
    
         
            -
            describe('SystemPrivilege', () => {
         
     | 
| 
       88 
     | 
    
         
            -
              it('should be true', () => {
         
     | 
| 
       89 
     | 
    
         
            -
                expect(true).toBe(true);
         
     | 
| 
       90 
     | 
    
         
            -
              });
         
     | 
| 
       91 
     | 
    
         
            -
            });
         
     | 
| 
      
 1 
     | 
    
         
            +
            // import { Privilege } from '../../../src/components/system-privilege/privilege';
         
     | 
| 
      
 2 
     | 
    
         
            +
            // import { SystemPrivilegeRepository } from '../../../src/components/system-privilege/system-privilege.repository';
         
     | 
| 
      
 3 
     | 
    
         
            +
            // import { SystemRepository } from '../../../src/components/system/system.repository';
         
     | 
| 
      
 4 
     | 
    
         
            +
            // describe('SystemPrivilege', () => {
         
     | 
| 
      
 5 
     | 
    
         
            +
            //   afterEach(async () => {
         
     | 
| 
      
 6 
     | 
    
         
            +
            //     jest.restoreAllMocks();
         
     | 
| 
      
 7 
     | 
    
         
            +
            //   });
         
     | 
| 
      
 8 
     | 
    
         
            +
            //   it('should be able to load single package privileges', async () => {
         
     | 
| 
      
 9 
     | 
    
         
            +
            //     let privilegeCalled = 0;
         
     | 
| 
      
 10 
     | 
    
         
            +
            //     const findOrCreateMock = jest
         
     | 
| 
      
 11 
     | 
    
         
            +
            //       .spyOn(SystemPrivilegeRepository.prototype, 'findOrCreate')
         
     | 
| 
      
 12 
     | 
    
         
            +
            //       .mockResolvedValueOnce([{}, true] as any);
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
            //     const systemRepositoryMock = jest
         
     | 
| 
      
 15 
     | 
    
         
            +
            //       .spyOn(SystemRepository.prototype, 'findOne')
         
     | 
| 
      
 16 
     | 
    
         
            +
            //       .mockResolvedValueOnce({
         
     | 
| 
      
 17 
     | 
    
         
            +
            //         id: 175,
         
     | 
| 
      
 18 
     | 
    
         
            +
            //       } as any);
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
            //     jest.mock('@tomei/mailer/privileges.json', () => {
         
     | 
| 
      
 21 
     | 
    
         
            +
            //       privilegeCalled++;
         
     | 
| 
      
 22 
     | 
    
         
            +
            //       return {
         
     | 
| 
      
 23 
     | 
    
         
            +
            //         Privileges: [
         
     | 
| 
      
 24 
     | 
    
         
            +
            //           {
         
     | 
| 
      
 25 
     | 
    
         
            +
            //             Code: 'Privilege1',
         
     | 
| 
      
 26 
     | 
    
         
            +
            //             Description: 'This is Privilege1',
         
     | 
| 
      
 27 
     | 
    
         
            +
            //           },
         
     | 
| 
      
 28 
     | 
    
         
            +
            //         ],
         
     | 
| 
      
 29 
     | 
    
         
            +
            //       };
         
     | 
| 
      
 30 
     | 
    
         
            +
            //     });
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
            //     await Privilege.loadPrivileges('mailer', 'EZC');
         
     | 
| 
      
 33 
     | 
    
         
            +
            //     expect(findOrCreateMock).toBeCalledTimes(1);
         
     | 
| 
      
 34 
     | 
    
         
            +
            //     expect(systemRepositoryMock).toBeCalledTimes(1);
         
     | 
| 
      
 35 
     | 
    
         
            +
            //     expect(privilegeCalled).toEqual(1);
         
     | 
| 
      
 36 
     | 
    
         
            +
            //   });
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
      
 38 
     | 
    
         
            +
            //   it('should be able to load multiple package privileges', async () => {
         
     | 
| 
      
 39 
     | 
    
         
            +
            //     let privilegeCalled = 0;
         
     | 
| 
      
 40 
     | 
    
         
            +
            //     const findOrCreateMock = jest
         
     | 
| 
      
 41 
     | 
    
         
            +
            //       .spyOn(SystemPrivilegeRepository.prototype, 'findOrCreate')
         
     | 
| 
      
 42 
     | 
    
         
            +
            //       .mockResolvedValueOnce([{}, true] as any);
         
     | 
| 
      
 43 
     | 
    
         
            +
             
     | 
| 
      
 44 
     | 
    
         
            +
            //     const systemRepositoryMock = jest
         
     | 
| 
      
 45 
     | 
    
         
            +
            //       .spyOn(SystemRepository.prototype, 'findOne')
         
     | 
| 
      
 46 
     | 
    
         
            +
            //       .mockResolvedValueOnce({
         
     | 
| 
      
 47 
     | 
    
         
            +
            //         id: 175,
         
     | 
| 
      
 48 
     | 
    
         
            +
            //       } as any);
         
     | 
| 
      
 49 
     | 
    
         
            +
             
     | 
| 
      
 50 
     | 
    
         
            +
            //     jest.mock(
         
     | 
| 
      
 51 
     | 
    
         
            +
            //       '@tomei/mailer/privileges.json',
         
     | 
| 
      
 52 
     | 
    
         
            +
            //       () => {
         
     | 
| 
      
 53 
     | 
    
         
            +
            //         privilegeCalled++;
         
     | 
| 
      
 54 
     | 
    
         
            +
            //         return {
         
     | 
| 
      
 55 
     | 
    
         
            +
            //           Privileges: [
         
     | 
| 
      
 56 
     | 
    
         
            +
            //             {
         
     | 
| 
      
 57 
     | 
    
         
            +
            //               Code: 'Privilege1',
         
     | 
| 
      
 58 
     | 
    
         
            +
            //               Description: 'This is Privilege1',
         
     | 
| 
      
 59 
     | 
    
         
            +
            //             },
         
     | 
| 
      
 60 
     | 
    
         
            +
            //           ],
         
     | 
| 
      
 61 
     | 
    
         
            +
            //         };
         
     | 
| 
      
 62 
     | 
    
         
            +
            //       },
         
     | 
| 
      
 63 
     | 
    
         
            +
            //     );
         
     | 
| 
      
 64 
     | 
    
         
            +
             
     | 
| 
      
 65 
     | 
    
         
            +
            //     jest.mock(
         
     | 
| 
      
 66 
     | 
    
         
            +
            //       '@tomei/config/privileges.json',
         
     | 
| 
      
 67 
     | 
    
         
            +
            //       () => {
         
     | 
| 
      
 68 
     | 
    
         
            +
            //         privilegeCalled++;
         
     | 
| 
      
 69 
     | 
    
         
            +
            //         return {
         
     | 
| 
      
 70 
     | 
    
         
            +
            //           Privileges: [
         
     | 
| 
      
 71 
     | 
    
         
            +
            //             {
         
     | 
| 
      
 72 
     | 
    
         
            +
            //               Code: 'Privilege2',
         
     | 
| 
      
 73 
     | 
    
         
            +
            //               Description: 'This is Privilege2',
         
     | 
| 
      
 74 
     | 
    
         
            +
            //             },
         
     | 
| 
      
 75 
     | 
    
         
            +
            //           ],
         
     | 
| 
      
 76 
     | 
    
         
            +
            //         };
         
     | 
| 
      
 77 
     | 
    
         
            +
            //       },
         
     | 
| 
      
 78 
     | 
    
         
            +
            //     );
         
     | 
| 
      
 79 
     | 
    
         
            +
             
     | 
| 
      
 80 
     | 
    
         
            +
            //     await Privilege.loadPrivileges(['mailer', 'config'], 'EZC');
         
     | 
| 
      
 81 
     | 
    
         
            +
            //     expect(findOrCreateMock).toBeCalledTimes(2);
         
     | 
| 
      
 82 
     | 
    
         
            +
            //     expect(systemRepositoryMock).toBeCalledTimes(1);
         
     | 
| 
      
 83 
     | 
    
         
            +
            //     expect(privilegeCalled).toEqual(2);
         
     | 
| 
      
 84 
     | 
    
         
            +
            //   });
         
     | 
| 
      
 85 
     | 
    
         
            +
            // });
         
     | 
| 
      
 86 
     | 
    
         
            +
             
     | 
| 
      
 87 
     | 
    
         
            +
            describe('SystemPrivilege', () => {
         
     | 
| 
      
 88 
     | 
    
         
            +
              it('should be true', () => {
         
     | 
| 
      
 89 
     | 
    
         
            +
                expect(true).toBe(true);
         
     | 
| 
      
 90 
     | 
    
         
            +
              });
         
     | 
| 
      
 91 
     | 
    
         
            +
            });
         
     | 
    
        package/create-sso-user.sql
    CHANGED
    
    | 
         @@ -1,40 +1,40 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
             
     | 
| 
       2 
     | 
    
         
            -
            -- example to create sso-user
         
     | 
| 
       3 
     | 
    
         
            -
            CREATE USER 'sso_user'@'environment' IDENTIFIED BY 'password';
         
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
     | 
    
         
            -
            -- example to grant neccesary access to run migration
         
     | 
| 
       6 
     | 
    
         
            -
            GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_authorization_codes TO 'sso_user'@'localhost' WITH GRANT OPTION;
         
     | 
| 
       7 
     | 
    
         
            -
            GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_bearer_tokens TO 'sso_user'@'localhost' WITH GRANT OPTION;
         
     | 
| 
       8 
     | 
    
         
            -
            GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_building_types  TO 'sso_user'@'localhost' WITH GRANT OPTION;
         
     | 
| 
       9 
     | 
    
         
            -
            GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_buildings  TO 'sso_user'@'localhost' WITH GRANT OPTION;
         
     | 
| 
       10 
     | 
    
         
            -
            GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_cities TO 'sso_user'@'localhost' WITH GRANT OPTION;
         
     | 
| 
       11 
     | 
    
         
            -
            GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_companies  TO 'sso_user'@'localhost' WITH GRANT OPTION;
         
     | 
| 
       12 
     | 
    
         
            -
            GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_countries TO 'sso_user'@'localhost' WITH GRANT OPTION;
         
     | 
| 
       13 
     | 
    
         
            -
            GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_departments  TO 'sso_user'@'localhost' WITH GRANT OPTION;
         
     | 
| 
       14 
     | 
    
         
            -
            GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_grouproleprivilege  TO 'sso_user'@'localhost' WITH GRANT OPTION;
         
     | 
| 
       15 
     | 
    
         
            -
            GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_groupsystemaccess  TO 'sso_user'@'localhost' WITH GRANT OPTION;
         
     | 
| 
       16 
     | 
    
         
            -
            GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_groupsystemprivilege  TO 'sso_user'@'localhost' WITH GRANT OPTION;
         
     | 
| 
       17 
     | 
    
         
            -
            GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_groupsystemrole  TO 'sso_user'@'localhost' WITH GRANT OPTION;
         
     | 
| 
       18 
     | 
    
         
            -
            GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_oauth_tokens  TO 'sso_user'@'localhost' WITH GRANT OPTION;
         
     | 
| 
       19 
     | 
    
         
            -
            GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_roles  TO 'sso_user'@'localhost' WITH GRANT OPTION;
         
     | 
| 
       20 
     | 
    
         
            -
            GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_sequelize_meta  TO 'sso_user'@'localhost' WITH GRANT OPTION;
         
     | 
| 
       21 
     | 
    
         
            -
            GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_staff_types  TO 'sso_user'@'localhost' WITH GRANT OPTION;
         
     | 
| 
       22 
     | 
    
         
            -
            GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_staffs  TO 'sso_user'@'localhost' WITH GRANT OPTION;
         
     | 
| 
       23 
     | 
    
         
            -
            GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_states  TO 'sso_user'@'localhost' WITH GRANT OPTION;
         
     | 
| 
       24 
     | 
    
         
            -
            GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_system_accesses  TO 'sso_user'@'localhost' WITH GRANT OPTION;
         
     | 
| 
       25 
     | 
    
         
            -
            GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_systemprivilege  TO 'sso_user'@'localhost' WITH GRANT OPTION;
         
     | 
| 
       26 
     | 
    
         
            -
            GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_systemrole  TO 'sso_user'@'localhost' WITH GRANT OPTION;
         
     | 
| 
       27 
     | 
    
         
            -
            GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_systemroleprivilege  TO 'sso_user'@'localhost' WITH GRANT OPTION;
         
     | 
| 
       28 
     | 
    
         
            -
            GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_systems  TO 'sso_user'@'localhost' WITH GRANT OPTION;
         
     | 
| 
       29 
     | 
    
         
            -
            GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_updated_history  TO 'sso_user'@'localhost' WITH GRANT OPTION;
         
     | 
| 
       30 
     | 
    
         
            -
            GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_user_roles  TO 'sso_user'@'localhost' WITH GRANT OPTION;
         
     | 
| 
       31 
     | 
    
         
            -
            GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_usergroup  TO 'sso_user'@'localhost' WITH GRANT OPTION;
         
     | 
| 
       32 
     | 
    
         
            -
            GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_users  TO 'sso_user'@'localhost' WITH GRANT OPTION;
         
     | 
| 
       33 
     | 
    
         
            -
            GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_usersystemprivilege  TO 'sso_user'@'localhost' WITH GRANT OPTION;
         
     | 
| 
       34 
     | 
    
         
            -
            GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_usersystemrole  TO 'sso_user'@'localhost' WITH GRANT OPTION;
         
     | 
| 
       35 
     | 
    
         
            -
            GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_UserUserGroup  TO 'sso_user'@'localhost' WITH GRANT OPTION;
         
     | 
| 
       36 
     | 
    
         
            -
            GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production._prisma_migrations  TO 'sso_user'@'localhost' WITH GRANT OPTION;
         
     | 
| 
       37 
     | 
    
         
            -
             
     | 
| 
       38 
     | 
    
         
            -
             
     | 
| 
       39 
     | 
    
         
            -
            -- Grant user to create, alter, drop, references on the database (required for creating shadow tables)
         
     | 
| 
      
 1 
     | 
    
         
            +
             
     | 
| 
      
 2 
     | 
    
         
            +
            -- example to create sso-user
         
     | 
| 
      
 3 
     | 
    
         
            +
            CREATE USER 'sso_user'@'environment' IDENTIFIED BY 'password';
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            -- example to grant neccesary access to run migration
         
     | 
| 
      
 6 
     | 
    
         
            +
            GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_authorization_codes TO 'sso_user'@'localhost' WITH GRANT OPTION;
         
     | 
| 
      
 7 
     | 
    
         
            +
            GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_bearer_tokens TO 'sso_user'@'localhost' WITH GRANT OPTION;
         
     | 
| 
      
 8 
     | 
    
         
            +
            GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_building_types  TO 'sso_user'@'localhost' WITH GRANT OPTION;
         
     | 
| 
      
 9 
     | 
    
         
            +
            GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_buildings  TO 'sso_user'@'localhost' WITH GRANT OPTION;
         
     | 
| 
      
 10 
     | 
    
         
            +
            GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_cities TO 'sso_user'@'localhost' WITH GRANT OPTION;
         
     | 
| 
      
 11 
     | 
    
         
            +
            GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_companies  TO 'sso_user'@'localhost' WITH GRANT OPTION;
         
     | 
| 
      
 12 
     | 
    
         
            +
            GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_countries TO 'sso_user'@'localhost' WITH GRANT OPTION;
         
     | 
| 
      
 13 
     | 
    
         
            +
            GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_departments  TO 'sso_user'@'localhost' WITH GRANT OPTION;
         
     | 
| 
      
 14 
     | 
    
         
            +
            GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_grouproleprivilege  TO 'sso_user'@'localhost' WITH GRANT OPTION;
         
     | 
| 
      
 15 
     | 
    
         
            +
            GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_groupsystemaccess  TO 'sso_user'@'localhost' WITH GRANT OPTION;
         
     | 
| 
      
 16 
     | 
    
         
            +
            GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_groupsystemprivilege  TO 'sso_user'@'localhost' WITH GRANT OPTION;
         
     | 
| 
      
 17 
     | 
    
         
            +
            GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_groupsystemrole  TO 'sso_user'@'localhost' WITH GRANT OPTION;
         
     | 
| 
      
 18 
     | 
    
         
            +
            GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_oauth_tokens  TO 'sso_user'@'localhost' WITH GRANT OPTION;
         
     | 
| 
      
 19 
     | 
    
         
            +
            GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_roles  TO 'sso_user'@'localhost' WITH GRANT OPTION;
         
     | 
| 
      
 20 
     | 
    
         
            +
            GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_sequelize_meta  TO 'sso_user'@'localhost' WITH GRANT OPTION;
         
     | 
| 
      
 21 
     | 
    
         
            +
            GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_staff_types  TO 'sso_user'@'localhost' WITH GRANT OPTION;
         
     | 
| 
      
 22 
     | 
    
         
            +
            GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_staffs  TO 'sso_user'@'localhost' WITH GRANT OPTION;
         
     | 
| 
      
 23 
     | 
    
         
            +
            GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_states  TO 'sso_user'@'localhost' WITH GRANT OPTION;
         
     | 
| 
      
 24 
     | 
    
         
            +
            GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_system_accesses  TO 'sso_user'@'localhost' WITH GRANT OPTION;
         
     | 
| 
      
 25 
     | 
    
         
            +
            GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_systemprivilege  TO 'sso_user'@'localhost' WITH GRANT OPTION;
         
     | 
| 
      
 26 
     | 
    
         
            +
            GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_systemrole  TO 'sso_user'@'localhost' WITH GRANT OPTION;
         
     | 
| 
      
 27 
     | 
    
         
            +
            GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_systemroleprivilege  TO 'sso_user'@'localhost' WITH GRANT OPTION;
         
     | 
| 
      
 28 
     | 
    
         
            +
            GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_systems  TO 'sso_user'@'localhost' WITH GRANT OPTION;
         
     | 
| 
      
 29 
     | 
    
         
            +
            GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_updated_history  TO 'sso_user'@'localhost' WITH GRANT OPTION;
         
     | 
| 
      
 30 
     | 
    
         
            +
            GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_user_roles  TO 'sso_user'@'localhost' WITH GRANT OPTION;
         
     | 
| 
      
 31 
     | 
    
         
            +
            GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_usergroup  TO 'sso_user'@'localhost' WITH GRANT OPTION;
         
     | 
| 
      
 32 
     | 
    
         
            +
            GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_users  TO 'sso_user'@'localhost' WITH GRANT OPTION;
         
     | 
| 
      
 33 
     | 
    
         
            +
            GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_usersystemprivilege  TO 'sso_user'@'localhost' WITH GRANT OPTION;
         
     | 
| 
      
 34 
     | 
    
         
            +
            GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_usersystemrole  TO 'sso_user'@'localhost' WITH GRANT OPTION;
         
     | 
| 
      
 35 
     | 
    
         
            +
            GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production.sso_UserUserGroup  TO 'sso_user'@'localhost' WITH GRANT OPTION;
         
     | 
| 
      
 36 
     | 
    
         
            +
            GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES on production._prisma_migrations  TO 'sso_user'@'localhost' WITH GRANT OPTION;
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
      
 38 
     | 
    
         
            +
             
     | 
| 
      
 39 
     | 
    
         
            +
            -- Grant user to create, alter, drop, references on the database (required for creating shadow tables)
         
     | 
| 
       40 
40 
     | 
    
         
             
            GRANT CREATE, ALTER, DROP, REFERENCES ON shadow_database.* TO 'sso_user'@'localhost' WITH GRANT OPTION;
         
     | 
| 
         @@ -1229,7 +1229,7 @@ class User extends general_1.UserBase { 
     | 
|
| 
       1229 
1229 
     | 
    
         
             
                            transaction: dbTransaction,
         
     | 
| 
       1230 
1230 
     | 
    
         
             
                        });
         
     | 
| 
       1231 
1231 
     | 
    
         
             
                        let systemAccesses = dataSystemAccesses;
         
     | 
| 
       1232 
     | 
    
         
            -
                        if (group. 
     | 
| 
      
 1232 
     | 
    
         
            +
                        if (group.InheritParentSystemAccessYN === 'Y' && group.ParentGroupCode) {
         
     | 
| 
       1233 
1233 
     | 
    
         
             
                            const GroupCode = group.ParentGroupCode;
         
     | 
| 
       1234 
1234 
     | 
    
         
             
                            const parentGroup = yield User._GroupRepo.findByPk(GroupCode, dbTransaction);
         
     | 
| 
       1235 
1235 
     | 
    
         
             
                            const dataParentSystemAccesses = yield User.getInheritedSystemAccess(dbTransaction, parentGroup);
         
     |