From 16497e1528ae3339cc7b30b8a62f44050a587311 Mon Sep 17 00:00:00 2001 From: Sarika002 Date: Mon, 13 Jun 2022 14:04:47 +0530 Subject: [PATCH 1/4] fix: added test cases --- .../test/unit/app.controller.spec.ts | 34 +++++++++++++++++++ .../test/unit/app.controller.spec.ts | 34 +++++++++++++++++++ .../test/unit/app.controller.spec.ts | 34 +++++++++++++++++++ .../test/unit/app.controller.spec.ts | 34 +++++++++++++++++++ 4 files changed, 136 insertions(+) create mode 100644 tenant-config-service/test/unit/app.controller.spec.ts create mode 100644 tenant-master-service/test/unit/app.controller.spec.ts create mode 100644 tenant-provisioning/test/unit/app.controller.spec.ts create mode 100644 tenant-registration/test/unit/app.controller.spec.ts diff --git a/tenant-config-service/test/unit/app.controller.spec.ts b/tenant-config-service/test/unit/app.controller.spec.ts new file mode 100644 index 0000000..797cb60 --- /dev/null +++ b/tenant-config-service/test/unit/app.controller.spec.ts @@ -0,0 +1,34 @@ +import {AppController } from '@app/app.controller'; +import { AppService } from '@app/app.service'; +import { Test, TestingModule } from '@nestjs/testing'; + +describe('Testing AppController', () => { + let appController: AppController; + let appService: AppService; + + const mockAppService = { + getHello: jest.fn() + }; + + beforeAll(async () => { + const module: TestingModule = await Test.createTestingModule({ + controllers: [AppController], + providers: [AppService], + }) + .overrideProvider(AppService) + .useValue(mockAppService) + .compile(); + + appController = module.get(AppController); + appService = module.get(AppService); + }); + + it('should return "Hello World!"', () => { + const message = 'hello-message'; + + const getHello = jest.spyOn(appService, 'getHello'); + appController.getConfigTenantService(message); + expect(getHello).toHaveBeenCalledWith(message); + }); + +}); \ No newline at end of file diff --git a/tenant-master-service/test/unit/app.controller.spec.ts b/tenant-master-service/test/unit/app.controller.spec.ts new file mode 100644 index 0000000..797cb60 --- /dev/null +++ b/tenant-master-service/test/unit/app.controller.spec.ts @@ -0,0 +1,34 @@ +import {AppController } from '@app/app.controller'; +import { AppService } from '@app/app.service'; +import { Test, TestingModule } from '@nestjs/testing'; + +describe('Testing AppController', () => { + let appController: AppController; + let appService: AppService; + + const mockAppService = { + getHello: jest.fn() + }; + + beforeAll(async () => { + const module: TestingModule = await Test.createTestingModule({ + controllers: [AppController], + providers: [AppService], + }) + .overrideProvider(AppService) + .useValue(mockAppService) + .compile(); + + appController = module.get(AppController); + appService = module.get(AppService); + }); + + it('should return "Hello World!"', () => { + const message = 'hello-message'; + + const getHello = jest.spyOn(appService, 'getHello'); + appController.getConfigTenantService(message); + expect(getHello).toHaveBeenCalledWith(message); + }); + +}); \ No newline at end of file diff --git a/tenant-provisioning/test/unit/app.controller.spec.ts b/tenant-provisioning/test/unit/app.controller.spec.ts new file mode 100644 index 0000000..c91a3a6 --- /dev/null +++ b/tenant-provisioning/test/unit/app.controller.spec.ts @@ -0,0 +1,34 @@ +import {AppController } from '@app/app.controller'; +import { AppService } from '@app/app.service'; +import { Test, TestingModule } from '@nestjs/testing'; + +describe('Testing AppController', () => { + let appController: AppController; + let appService: AppService; + + const mockAppService = { + getHello: jest.fn() + }; + + beforeAll(async () => { + const module: TestingModule = await Test.createTestingModule({ + controllers: [AppController], + providers: [AppService], + }) + .overrideProvider(AppService) + .useValue(mockAppService) + .compile(); + + appController = module.get(AppController); + appService = module.get(AppService); + }); + + it('should return "Hello World!"', () => { + const message = 'hello-2'; + + const getHello = jest.spyOn(appService, 'getHello'); + appController.getHello(message); + expect(getHello).toHaveBeenCalledWith(message); + }); + +}); \ No newline at end of file diff --git a/tenant-registration/test/unit/app.controller.spec.ts b/tenant-registration/test/unit/app.controller.spec.ts new file mode 100644 index 0000000..5fe44db --- /dev/null +++ b/tenant-registration/test/unit/app.controller.spec.ts @@ -0,0 +1,34 @@ +import {AppController } from '@app/app.controller'; +import { AppService } from '@app/app.service'; +import { Test, TestingModule } from '@nestjs/testing'; + +describe('Testing AppController', () => { + let appController: AppController; + let appService: AppService; + + const mockAppService = { + getHello: jest.fn() + }; + + beforeAll(async () => { + const module: TestingModule = await Test.createTestingModule({ + controllers: [AppController], + providers: [AppService], + }) + .overrideProvider(AppService) + .useValue(mockAppService) + .compile(); + + appController = module.get(AppController); + appService = module.get(AppService); + }); + + it('should return "Hello World!"', () => { + const message = 'hello'; + + const getHello = jest.spyOn(appService, 'getHello'); + appController.getHello(message); + expect(getHello).toHaveBeenCalledWith(message); + }); + +}); \ No newline at end of file From 7617ff061ed534e9a0181975da7a91fa6bf31bb6 Mon Sep 17 00:00:00 2001 From: Sarika002 Date: Tue, 14 Jun 2022 17:15:42 +0530 Subject: [PATCH 2/4] fix: increase test code coverage --- .../test/unit/app.controller.spec.ts | 23 +++++++++++-- .../test/unit/app.controller.spec.ts | 34 ------------------- .../test/unit/app.controller.spec.ts | 34 ------------------- .../unit/tenant.master.controller.spec.ts | 2 ++ .../test/unit/app.controller.spec.ts | 34 ------------------- .../unit/tenantprovision.controller.spec.ts | 2 ++ .../test/unit/app.controller.spec.ts | 34 ------------------- 7 files changed, 25 insertions(+), 138 deletions(-) delete mode 100644 tenant-config-service/test/unit/app.controller.spec.ts delete mode 100644 tenant-master-service/test/unit/app.controller.spec.ts delete mode 100644 tenant-provisioning/test/unit/app.controller.spec.ts delete mode 100644 tenant-registration/test/unit/app.controller.spec.ts diff --git a/multitenancy-rest-service/test/unit/app.controller.spec.ts b/multitenancy-rest-service/test/unit/app.controller.spec.ts index 76173be..ae0e651 100644 --- a/multitenancy-rest-service/test/unit/app.controller.spec.ts +++ b/multitenancy-rest-service/test/unit/app.controller.spec.ts @@ -7,6 +7,7 @@ import { Test, TestingModule } from '@nestjs/testing'; import { Request, Response } from 'express'; import * as httpMocks from 'node-mocks-http'; import { Observable, of } from 'rxjs'; +import { AppModule } from '@app/app.module'; describe('Testing AppController', () => { let appController: AppController; @@ -74,6 +75,7 @@ describe('Testing AppController', () => { beforeAll(async () => { const module: TestingModule = await Test.createTestingModule({ + imports: [AppModule], controllers: [AppController], providers: [AppService, AuthService, PublicKeyCache], }) @@ -193,10 +195,17 @@ describe('Testing AppController', () => { mockSubscribe.mockRestore(); }); - it('Testing appcontroller "listAllTenant"', async () => { + it('Testing appcontroller "listAllTenant"', () => { + mockRequest.query = { + tenantName: 'tenantName', + isDeleted: 'true', + page: '1' + }; const mockSubscribe = jest.spyOn(Observable.prototype, 'subscribe'); - await appController.listAllTenant(mockRequest, mockResponse); + const listAllTenant = jest.spyOn(appService, 'listAllTenant'); + appController.listAllTenant(mockRequest, mockResponse); expect(mockSubscribe).toHaveBeenCalled(); + expect(listAllTenant).toHaveBeenCalledWith('tenantName', 'true','1'); mockSubscribe.mockRestore(); }); @@ -216,9 +225,19 @@ describe('Testing AppController', () => { }); it('Testing appcontroller "deleteTenant"', async () => { + mockRequest.params ={ + tenantName: 'tenantName' + }; + + mockRequest.headers = { + authorization: 'Bearer token' + }; + const mockSubscribe = jest.spyOn(Observable.prototype, 'subscribe'); + const deleteTenant = jest.spyOn(appService, 'deleteTenant'); await appController.deleteTenant(mockRequest, mockResponse); expect(mockSubscribe).toHaveBeenCalled(); + expect(deleteTenant).toHaveBeenCalledWith('tenantName', mockRequest.headers['authorization']); mockSubscribe.mockRestore(); }); diff --git a/tenant-config-service/test/unit/app.controller.spec.ts b/tenant-config-service/test/unit/app.controller.spec.ts deleted file mode 100644 index 797cb60..0000000 --- a/tenant-config-service/test/unit/app.controller.spec.ts +++ /dev/null @@ -1,34 +0,0 @@ -import {AppController } from '@app/app.controller'; -import { AppService } from '@app/app.service'; -import { Test, TestingModule } from '@nestjs/testing'; - -describe('Testing AppController', () => { - let appController: AppController; - let appService: AppService; - - const mockAppService = { - getHello: jest.fn() - }; - - beforeAll(async () => { - const module: TestingModule = await Test.createTestingModule({ - controllers: [AppController], - providers: [AppService], - }) - .overrideProvider(AppService) - .useValue(mockAppService) - .compile(); - - appController = module.get(AppController); - appService = module.get(AppService); - }); - - it('should return "Hello World!"', () => { - const message = 'hello-message'; - - const getHello = jest.spyOn(appService, 'getHello'); - appController.getConfigTenantService(message); - expect(getHello).toHaveBeenCalledWith(message); - }); - -}); \ No newline at end of file diff --git a/tenant-master-service/test/unit/app.controller.spec.ts b/tenant-master-service/test/unit/app.controller.spec.ts deleted file mode 100644 index 797cb60..0000000 --- a/tenant-master-service/test/unit/app.controller.spec.ts +++ /dev/null @@ -1,34 +0,0 @@ -import {AppController } from '@app/app.controller'; -import { AppService } from '@app/app.service'; -import { Test, TestingModule } from '@nestjs/testing'; - -describe('Testing AppController', () => { - let appController: AppController; - let appService: AppService; - - const mockAppService = { - getHello: jest.fn() - }; - - beforeAll(async () => { - const module: TestingModule = await Test.createTestingModule({ - controllers: [AppController], - providers: [AppService], - }) - .overrideProvider(AppService) - .useValue(mockAppService) - .compile(); - - appController = module.get(AppController); - appService = module.get(AppService); - }); - - it('should return "Hello World!"', () => { - const message = 'hello-message'; - - const getHello = jest.spyOn(appService, 'getHello'); - appController.getConfigTenantService(message); - expect(getHello).toHaveBeenCalledWith(message); - }); - -}); \ No newline at end of file diff --git a/tenant-master-service/test/unit/tenant.master.controller.spec.ts b/tenant-master-service/test/unit/tenant.master.controller.spec.ts index 4af9565..7be80d9 100644 --- a/tenant-master-service/test/unit/tenant.master.controller.spec.ts +++ b/tenant-master-service/test/unit/tenant.master.controller.spec.ts @@ -1,6 +1,7 @@ import { Test, TestingModule } from '@nestjs/testing'; import { TenantMasterController } from '@app/tenant-master/tenant.master.controller'; import { TenantMasterService } from '@app/tenant-master/tenant.master.service'; +import { TenantMasterModule } from '@app/tenant-master/tenant.master.module'; describe('Tenant Master Controller', () => { let tenantMasterController: TenantMasterController; @@ -20,6 +21,7 @@ describe('Tenant Master Controller', () => { }; beforeAll(async () => { const module: TestingModule = await Test.createTestingModule({ + imports: [TenantMasterModule], controllers: [TenantMasterController], providers: [TenantMasterService], }) diff --git a/tenant-provisioning/test/unit/app.controller.spec.ts b/tenant-provisioning/test/unit/app.controller.spec.ts deleted file mode 100644 index c91a3a6..0000000 --- a/tenant-provisioning/test/unit/app.controller.spec.ts +++ /dev/null @@ -1,34 +0,0 @@ -import {AppController } from '@app/app.controller'; -import { AppService } from '@app/app.service'; -import { Test, TestingModule } from '@nestjs/testing'; - -describe('Testing AppController', () => { - let appController: AppController; - let appService: AppService; - - const mockAppService = { - getHello: jest.fn() - }; - - beforeAll(async () => { - const module: TestingModule = await Test.createTestingModule({ - controllers: [AppController], - providers: [AppService], - }) - .overrideProvider(AppService) - .useValue(mockAppService) - .compile(); - - appController = module.get(AppController); - appService = module.get(AppService); - }); - - it('should return "Hello World!"', () => { - const message = 'hello-2'; - - const getHello = jest.spyOn(appService, 'getHello'); - appController.getHello(message); - expect(getHello).toHaveBeenCalledWith(message); - }); - -}); \ No newline at end of file diff --git a/tenant-provisioning/test/unit/tenantprovision.controller.spec.ts b/tenant-provisioning/test/unit/tenantprovision.controller.spec.ts index 531aaaa..26f24cf 100644 --- a/tenant-provisioning/test/unit/tenantprovision.controller.spec.ts +++ b/tenant-provisioning/test/unit/tenantprovision.controller.spec.ts @@ -1,6 +1,7 @@ import { Test, TestingModule } from '@nestjs/testing'; import { TenantprovisionController } from '@app/tenant-provisioning/tenantprovision.controller'; import { TenantprovisionService } from '@app/tenant-provisioning/tenantprovision.service'; +import { TenantprovisionModule } from '@app/tenant-provisioning/tenantprovision.module'; describe('Testing Provisioning MicroService Controller', () => { let tenantprovisionController: TenantprovisionController; @@ -18,6 +19,7 @@ describe('Testing Provisioning MicroService Controller', () => { beforeAll(async () => { const module: TestingModule = await Test.createTestingModule({ + imports: [TenantprovisionModule], controllers: [TenantprovisionController], providers: [TenantprovisionService], }) diff --git a/tenant-registration/test/unit/app.controller.spec.ts b/tenant-registration/test/unit/app.controller.spec.ts deleted file mode 100644 index 5fe44db..0000000 --- a/tenant-registration/test/unit/app.controller.spec.ts +++ /dev/null @@ -1,34 +0,0 @@ -import {AppController } from '@app/app.controller'; -import { AppService } from '@app/app.service'; -import { Test, TestingModule } from '@nestjs/testing'; - -describe('Testing AppController', () => { - let appController: AppController; - let appService: AppService; - - const mockAppService = { - getHello: jest.fn() - }; - - beforeAll(async () => { - const module: TestingModule = await Test.createTestingModule({ - controllers: [AppController], - providers: [AppService], - }) - .overrideProvider(AppService) - .useValue(mockAppService) - .compile(); - - appController = module.get(AppController); - appService = module.get(AppService); - }); - - it('should return "Hello World!"', () => { - const message = 'hello'; - - const getHello = jest.spyOn(appService, 'getHello'); - appController.getHello(message); - expect(getHello).toHaveBeenCalledWith(message); - }); - -}); \ No newline at end of file From 276c0d2a93eec982ee3e6cd9f3e6b1295d1c2dff Mon Sep 17 00:00:00 2001 From: Sarika002 Date: Mon, 20 Jun 2022 16:47:44 +0530 Subject: [PATCH 3/4] fix: covered untested files --- .../src/iam/keycloakUser.ts | 3 +- .../test/unit/app.controller.spec.ts | 178 +++++++++++++++++- .../test/unit/auth.service.spec.ts | 50 +++++ .../test/unit/permission.spec.ts | 56 +++++- 4 files changed, 275 insertions(+), 12 deletions(-) diff --git a/multitenancy-rest-service/src/iam/keycloakUser.ts b/multitenancy-rest-service/src/iam/keycloakUser.ts index 799ac8c..3180efe 100644 --- a/multitenancy-rest-service/src/iam/keycloakUser.ts +++ b/multitenancy-rest-service/src/iam/keycloakUser.ts @@ -302,7 +302,8 @@ export class KeycloakUser { entitlements: false, context: { attributes: {} - } + }, + clientId: "" } ); diff --git a/multitenancy-rest-service/test/unit/app.controller.spec.ts b/multitenancy-rest-service/test/unit/app.controller.spec.ts index 4a9f356..49ece46 100644 --- a/multitenancy-rest-service/test/unit/app.controller.spec.ts +++ b/multitenancy-rest-service/test/unit/app.controller.spec.ts @@ -7,7 +7,6 @@ import { Test, TestingModule } from '@nestjs/testing'; import { Request, Response } from 'express'; import * as httpMocks from 'node-mocks-http'; import { Observable, of } from 'rxjs'; -import { AppModule } from '@app/app.module'; describe('Testing AppController', () => { let appController: AppController; @@ -44,6 +43,7 @@ describe('Testing AppController', () => { createTable: jest.fn(() => of(mockMessage)), createRealm: jest.fn(), getAdminDetails: jest.fn(), + createRedirectUrl: jest.fn(), createUser: jest.fn(), listAllUser: jest.fn(), userInfo: jest.fn(), @@ -77,7 +77,6 @@ describe('Testing AppController', () => { beforeAll(async () => { const module: TestingModule = await Test.createTestingModule({ - imports: [AppModule], controllers: [AppController], providers: [AppService, AuthService, PublicKeyCache], }) @@ -106,6 +105,19 @@ describe('Testing AppController', () => { mockgetAccessToken.mockRestore(); }); + it('Testing appcontroller "when login failed"', async () => { + const mockBody = { + username: '', + password: process.env.TEST_PASSWORD, + tenantName: 'tenantName', + clientId: 'clientId', + clientSecret: 'clientSecret', + } + + expect(async () => await appController.login(mockBody, mockResponse)).rejects.toThrow('Please enter userName'); + + }); + it('Testing appcontroller "logout"', async () => { const mockBody = { tenantName: 'tenantName', @@ -132,6 +144,16 @@ describe('Testing AppController', () => { mockrefreshAccessToken.mockRestore(); }); + it('Testing appcontroller "forgetPassword"', () => { + mockRequest.query ={ + tenantName: 'tenantName' + }; + const createRedirectUrl = jest.spyOn(appService, 'createRedirectUrl'); + appController.forgotPassword(mockRequest,mockResponse); + expect(createRedirectUrl).toHaveBeenCalled(); + createRedirectUrl.mockRestore(); + }); + it('Testing appcontroller "publicKey"', async () => { mockRequest.params = { tenantName: 'tenantName' @@ -183,7 +205,7 @@ describe('Testing AppController', () => { }); it('Testing appcontroller "getTenantConfig"', async () => { - mockRequest.params = { + mockRequest.query = { tenantName: 'tenantName', }; mockRequest.headers = { @@ -197,6 +219,17 @@ describe('Testing AppController', () => { mockSubscribe.mockRestore(); }); + it('Testing appcontroller "when getTenantConfig gets failed"', async () => { + mockRequest.query = { + tenantName: 'tenantname', + }; + mockRequest.headers = { + authorization: authToken + }; + + expect(async () => await appController.getTenantConfig(mockRequest, mockResponse)).rejects.toThrow("Not Allowed"); + }); + it('Testing appcontroller "listAllTenant"', () => { mockRequest.query = { tenantName: 'tenantName', @@ -226,6 +259,17 @@ describe('Testing AppController', () => { mockSubscribe.mockRestore(); }); + it('Testing appcontroller "when updateDescription gets failed"', async () => { + mockRequest.body = { + action: { + tenantName: '__', + description: 'newDescription' + } + }; + expect(async () => await appController.updateDescription(mockRequest, mockResponse)).rejects.toThrow('Updation Not Allowed'); + }); + + it('Testing appcontroller "deleteTenant"', async () => { mockRequest.params ={ tenantName: 'tenantName' @@ -255,7 +299,7 @@ describe('Testing AppController', () => { } }; mockRequest.body = { - tenantName: 'tenantName', + tenantName: '', password: process.env.TEST_PASSWORD, userDetails: { userName: 'userName', @@ -277,7 +321,7 @@ describe('Testing AppController', () => { it('Testing appcontroller "listAllUser"', async () => { mockRequest.query = { - tenantName: 'tenantName', + tenantName: '', page: '1' }; @@ -298,8 +342,8 @@ describe('Testing AppController', () => { it('Testing appcontroller "getUserInfo"', async () => { mockRequest.query = { - tenantName: 'tenantName', - usertName: 'usertName', + tenantName: '', + userName: 'userName', }; mockRequest.headers = { @@ -316,7 +360,7 @@ describe('Testing AppController', () => { it('Testing appcontroller "updateUser"', async () => { mockRequest.body = { - tenantName: 'tenantName', + tenantName: '', userName: 'userName', action: { firstName: 'firstName' @@ -335,6 +379,22 @@ describe('Testing AppController', () => { mockSend.mockRestore(); }); + it('Testing appcontroller "when updateUser gets failed"', async () => { + mockRequest.body = { + tenantName: 'tenantName', + userName: '', + action: { + firstName: 'firstName' + } + }; + + mockRequest.headers = { + authorization: authToken + }; + + expect(async () => await appController.updateUser(mockRequest, mockResponse)).rejects.toThrow('Please enter userName'); + }); + it('Testing appcontroller "deleteUser"', async () => { mockRequest.params = { tenantName: 'tenantName', @@ -353,6 +413,19 @@ describe('Testing AppController', () => { mockSend.mockRestore(); }); + it('Testing appcontroller "when deleteUser gets failed"', async () => { + mockRequest.params = { + tenantName: 'tenantName', + userName: 'userName', + }; + + mockRequest.headers = { + authorization: authToken + }; + + expect(async () => await appController.deleteUser(mockRequest, mockResponse)).rejects.toThrow("Not Allowed"); + }); + it('Testing appcontroller "tenantClient"', async () => { mockRequest.body = { tenantName: 'string', @@ -390,9 +463,22 @@ describe('Testing AppController', () => { mockSend.mockRestore(); }); + it('Testing appcontroller "when createRole gets failed"', async () => { + mockRequest.body = { + tenantName: '', + roleDetails: { + name: 'string' + } + }; + mockRequest.headers = { + authorization: authToken + }; + expect(async () => await appController.createRole(mockRequest, mockResponse)).rejects.toThrow("Please enter tenantName"); + }); + it('Testing appcontroller "getAvailableRoles"', async () => { mockRequest.query = { - tenantName: 'tenantName', + tenantName: '', }; mockRequest.headers = { authorization: authToken @@ -421,6 +507,30 @@ describe('Testing AppController', () => { mockSend.mockRestore(); }); + it('Testing appcontroller "when getRoleInfo tenantName get failed"', async () => { + mockRequest.query = { + tenantName: '', + roleName: 'roleName' + }; + mockRequest.headers = { + authorization: authToken + }; + + expect(async () => await appController.getRoleInfo(mockRequest, mockResponse)).rejects.toThrow("Please enter tenantName"); + }); + + it('Testing appcontroller "when getRoleInfo roleName get failed"', async () => { + mockRequest.query = { + tenantName: 'tenantName', + roleName: '' + }; + mockRequest.headers = { + authorization: authToken + }; + + expect(async () => await appController.getRoleInfo(mockRequest, mockResponse)).rejects.toThrow("Please enter roleName"); + }); + it('Testing appcontroller "updateRole"', async () => { mockRequest.body = { tenantName: 'tenantName', @@ -440,6 +550,37 @@ describe('Testing AppController', () => { mockSend.mockRestore(); }); + it('Testing appcontroller "when updateRole tenantName gets failed"', async () => { + mockRequest.body = { + tenantName: '', + roleName: 'roleName', + action: { + name: 'string' + } + }; + mockRequest.headers = { + authorization: authToken + }; + + expect(async () => await appController.updateRole(mockRequest, mockResponse)).rejects.toThrow("Please enter tenantName"); + }); + + it('Testing appcontroller "when updateRole roleName gets failed"', async () => { + mockRequest.body = { + tenantName: 'tenantName', + roleName: '', + action: { + name: 'string' + } + }; + mockRequest.headers = { + authorization: authToken + }; + + expect(async () => await appController.updateRole(mockRequest, mockResponse)).rejects.toThrow("Please enter roleName"); + }); + + it('Testing appcontroller "deleteRole"', async () => { mockRequest.params = { tenantName: 'tenantName', @@ -479,7 +620,7 @@ describe('Testing AppController', () => { it('Testing appcontroller "listPermission"', async () => { mockRequest.query = { - tenantName: 'string', + tenantName: '', clientName: 'string', } mockRequest.headers = { @@ -608,6 +749,23 @@ describe('Testing AppController', () => { connect.mockRestore(); }); + it('Testing appcontroller "when connectDatabase method gets failed"', async () => { + mockRequest.query = { + host: 'host', + port: '3306', + tenantName: '', + password: process.env.TEST_PASSWORD, + dbName: 'tenant_db' + } + + mockRequest.headers = { + authorization: authToken + }; + + expect(async () => await appController.connectDatabase(mockRequest, mockResponse)).rejects.toThrow("Updation Not Allowed"); + + }); + it('Testing appcontroller "createTable"', async () => { const mockSubscribe = jest.spyOn(Observable.prototype, 'subscribe'); await appController.createTable(mockRequest, mockResponse); diff --git a/multitenancy-rest-service/test/unit/auth.service.spec.ts b/multitenancy-rest-service/test/unit/auth.service.spec.ts index 48e7377..c20abe4 100644 --- a/multitenancy-rest-service/test/unit/auth.service.spec.ts +++ b/multitenancy-rest-service/test/unit/auth.service.spec.ts @@ -56,6 +56,23 @@ describe('Testing Auth Service', () => { mockAccessToken.mockRestore(); }); + it('Testing "when getAccessToken method parameters are missing"', async () => { + const body = { + username: 'string', + password: process.env.TEST_PASSWORD, + tenantName: '', + clientId: '', + clientSecret: '' + } + + const mockAccessToken = jest.spyOn(axios, 'post').mockResolvedValue(accessToken); + const response = await authService.getAccessToken(body); + + expect(mockAccessToken).toHaveBeenCalled(); + expect(response).toEqual(accessToken); + mockAccessToken.mockRestore(); + }); + it('Testing "logout"', async () => { const body = { tenantName: 'string', @@ -72,6 +89,23 @@ describe('Testing Auth Service', () => { mockLogOut.mockRestore(); }); + it('Testing "when logout method parameters are missing"', async () => { + const body = { + tenantName: 'master', + refreshToken: 'string', + clientId: '', + clientSecret: '' + } + + const mockLogOut = jest.spyOn(axios, 'post').mockResolvedValue({ status: 204 }); + const response = await authService.logout(body); + + expect(mockLogOut).toHaveBeenCalled(); + expect(response).toEqual(204); + mockLogOut.mockRestore(); + }); + + it('Testing "refreshAccessToken"', async () => { const body = { tenantName: 'string', @@ -88,6 +122,22 @@ describe('Testing Auth Service', () => { mockrefreshAccessToken.mockRestore(); }); + it('Testing "when refreshAccessToken method parameters are missing"', async () => { + const body = { + tenantName: 'master', + refreshToken: 'string', + clientId: '', + clientSecret: '' + } + + const mockrefreshAccessToken = jest.spyOn(axios, 'post').mockResolvedValue(accessToken); + const response = await authService.refreshAccessToken(body); + + expect(mockrefreshAccessToken).toHaveBeenCalled(); + expect(response).toEqual(accessToken); + mockrefreshAccessToken.mockRestore(); + }); + it('Testing "validateToken"', async () => { const mockvalidateToken = jest.spyOn(axios, 'post').mockResolvedValue({ data: { active: true } }); const response = await authService.validateToken('string', 'string', 'string'); diff --git a/multitenancy-rest-service/test/unit/permission.spec.ts b/multitenancy-rest-service/test/unit/permission.spec.ts index 7bcd3e6..4bbe121 100644 --- a/multitenancy-rest-service/test/unit/permission.spec.ts +++ b/multitenancy-rest-service/test/unit/permission.spec.ts @@ -21,7 +21,21 @@ jest.mock('@keycloak/keycloak-admin-client', () => { clientId: 'string', } ]), - createPermission: jest.fn() + findPermissions: jest.fn().mockResolvedValue([ + { + id: 'id', + name: 'name' + } + ]), + createPermission: jest.fn(), + updatePermission: jest.fn(), + delPermission: jest.fn().mockResolvedValue([ + { + id: 'id', + type: 'string', + permissionId: 'test-permission' + } + ]), }, setAccessToken: jest.fn() }; @@ -54,4 +68,44 @@ describe('Testing Keycloak Authorization Permission', () => { const response = await keycloakAuthPermission.createPermission(body, token); expect(response).toEqual('Permission created successfully'); }); + + it('Testing "getPermissions" method', async () => { + const tenantName = 'string'; + const clientName = 'string'; + const token = 'Bearer token'; + + const response = await keycloakAuthPermission.getPermissions(tenantName, clientName, token); + expect (response).toEqual([{ + id: 'id', + name: 'name' + }]); + }); + + it('Testing "updatePermission" method', async () => { + const body = { + tenantName: 'string', + clientName: 'string', + permissionName: 'string', + permissionType: 'user', + permissionDetails: { + name: "test-permission", + description: "test permission description" + } + }; + const token = 'Bearer token'; + const response = await keycloakAuthPermission.updatePermission(body, token); + expect(response).toEqual('Permission updated successfully'); + }); + + it('Testing "deletePermission" method', async () => { + const body = { + tenantName: 'string', + clientName: 'string', + permissionName: 'string', + permissionType: 'user' + }; + const token = 'Bearer token'; + const response = await keycloakAuthPermission.deletePermission(body, token); + expect(response).toEqual('Permission deleted successfully'); + }); }); From 269811baff40af7a201e06f59ec0471285ed72ab Mon Sep 17 00:00:00 2001 From: Sarika002 Date: Fri, 24 Jun 2022 16:43:16 +0530 Subject: [PATCH 4/4] commit on main --- multitenancy-rest-service/src/iam/keycloakUser.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/multitenancy-rest-service/src/iam/keycloakUser.ts b/multitenancy-rest-service/src/iam/keycloakUser.ts index 3180efe..8fb189a 100644 --- a/multitenancy-rest-service/src/iam/keycloakUser.ts +++ b/multitenancy-rest-service/src/iam/keycloakUser.ts @@ -303,7 +303,6 @@ export class KeycloakUser { context: { attributes: {} }, - clientId: "" } );