diff options
Diffstat (limited to 'public/src/app/api/rest-api.service.spec.ts')
-rw-r--r-- | public/src/app/api/rest-api.service.spec.ts | 476 |
1 files changed, 466 insertions, 10 deletions
diff --git a/public/src/app/api/rest-api.service.spec.ts b/public/src/app/api/rest-api.service.spec.ts index ce921cb..c0fea4b 100644 --- a/public/src/app/api/rest-api.service.spec.ts +++ b/public/src/app/api/rest-api.service.spec.ts @@ -1,23 +1,479 @@ -import { TestBed, inject } from '@angular/core/testing'; -import { HttpModule } from '@angular/http'; -import { RestApiService } from './rest-api.service'; +import { HttpClientTestingModule } from '@angular/common/http/testing'; +import { TestBed, async, inject } from '@angular/core/testing'; +import { + BaseRequestOptions, + Http, + HttpModule, + Response, + ResponseOptions, + XHRBackend +} from '@angular/http'; +import { MockBackend } from '@angular/http/testing'; import { v4 as genrateUuid } from 'uuid'; +import { Store } from '../store/store'; +import { RestApiService } from './rest-api.service'; describe('RestApiService', () => { - beforeEach(() => { - TestBed.configureTestingModule({ - imports: [HttpModule], - providers: [RestApiService] - }); - }); + let service: RestApiService; + let backend: MockBackend; + + beforeEach( + async(() => { + TestBed.configureTestingModule({ + imports: [HttpModule, HttpClientTestingModule], + providers: [ + RestApiService, + Store, + MockBackend, + BaseRequestOptions, + { + provide: Http, + deps: [MockBackend, BaseRequestOptions], + useFactory: ( + backend: XHRBackend, + defaultOptions: BaseRequestOptions + ) => { + return new Http(backend, defaultOptions); + } + } + ] + }); + // Get the MockBackend + backend = TestBed.get(MockBackend); + service = TestBed.get(RestApiService); + }) + ); it( 'should be created', - inject([RestApiService], (service: RestApiService) => { + inject([RestApiService], () => { expect(service).toBeTruthy(); }) ); + it('should baseUrl match localhost', () => { + expect(service.baseUrl).toBe('http://localhost:8446'); + }); + + it('should headers user id get default', () => { + service.addHeaders(); + expect(service.headers.get('USER_ID')).toBe('ym903w'); + }); + + it('should headers Content-Type json', () => { + service.addHeaders(); + expect(service.headers.get('Content-Type')).toBe('application/json'); + }); + + it( + 'should get service instance from API', + async(() => { + const serviceInstances = [ + { + name: 'ciService669277f472b0', + category: 'Mobility' + } + ]; + + backend.connections.subscribe(connection => { + connection.mockRespond( + new Response( + new ResponseOptions({ + body: JSON.stringify(serviceInstances) + }) + ) + ); + }); + + service.getServiceInstances('123456').subscribe(_res => { + expect(_res.length).toBe(1); + expect(_res).toEqual(serviceInstances); + }); + }) + ); + + it( + 'should get template resources from API', + async(() => { + const template = [ + { + name: 'AviStone1234', + version: '0.1' + } + ]; + + backend.connections.subscribe(connection => { + connection.mockRespond( + new Response( + new ResponseOptions({ + body: JSON.stringify(template) + }) + ) + ); + }); + + service.getTemplateResources().subscribe(_res => { + expect(_res.length).toBe(1); + expect(_res).toEqual(template); + }); + }) + ); + + it( + 'should getCompositionMonitoringComponent from API', + async(() => { + const template = [ + { + name: 'AviStone1234', + version: '0.1' + } + ]; + + backend.connections.subscribe(connection => { + connection.mockRespond( + new Response( + new ResponseOptions({ + body: JSON.stringify(template) + }) + ) + ); + }); + + service.getCompositionMonitoringComponent('123456').subscribe(_res => { + expect(_res.length).toBe(1); + expect(_res).toEqual(template); + }); + }) + ); + + it( + 'importVFCMT from API', + async(() => { + const template = [ + { + name: 'AviStone1234', + version: '0.1' + } + ]; + + backend.connections.subscribe(connection => { + connection.mockRespond( + new Response( + new ResponseOptions({ + body: JSON.stringify(template) + }) + ) + ); + }); + + service.importVFCMT({}).subscribe(_res => { + expect(_res.length).toBe(1); + expect(_res).toEqual(template); + }); + }) + ); + + it( + 'deleteMonitoringComponent from API', + async(() => { + const template = [ + { + name: 'AviStone1234', + version: '0.1' + } + ]; + + backend.connections.subscribe(connection => { + connection.mockRespond( + new Response( + new ResponseOptions({ + body: JSON.stringify(template) + }) + ) + ); + }); + + service + .deleteMonitoringComponent( + { + contextType: 'service', + uuid: '123456' + }, + '45678', + 'liav' + ) + .subscribe(_res => { + console.log('delete', _res); + }); + }) + ); + + it( + 'deleteMonitoringComponentWithBlueprint from API', + async(() => { + const template = [ + { + name: 'AviStone1234', + version: '0.1' + } + ]; + + backend.connections.subscribe(connection => { + connection.mockRespond( + new Response( + new ResponseOptions({ + body: JSON.stringify(template) + }) + ) + ); + }); + + service + .deleteMonitoringComponentWithBlueprint( + { + contextType: 'service', + uuid: '123456' + }, + 'voskComp', + '45678', + 'liav' + ) + .subscribe(_res => { + console.log('delete', _res); + }); + }) + ); + + it( + 'createNewVFCMT from API', + async(() => { + const template = [ + { + name: 'AviStone1234', + version: '0.1' + } + ]; + + backend.connections.subscribe(connection => { + connection.mockRespond( + new Response( + new ResponseOptions({ + body: JSON.stringify(template) + }) + ) + ); + }); + + service.createNewVFCMT({}).subscribe(_res => { + expect(_res.length).toBe(1); + expect(_res).toEqual(template); + }); + }) + ); + + it( + 'saveMonitoringComponent from API', + async(() => { + const template = [ + { + name: 'AviStone1234', + version: '0.1' + } + ]; + + backend.connections.subscribe(connection => { + connection.mockRespond( + new Response( + new ResponseOptions({ + body: JSON.stringify(template) + }) + ) + ); + }); + + service + .saveMonitoringComponent({ + contextType: 'service', + serviceUuid: '123456', + vfiName: 'liavVfi', + vfcmtUuid: '987456', + cdump: {} + }) + .subscribe(_res => { + expect(_res.length).toBe(1); + expect(_res).toEqual(template); + }); + }) + ); + + it( + 'submitMonitoringComponent from API', + async(() => { + const template = [ + { + name: 'AviStone1234', + version: '0.1' + } + ]; + + backend.connections.subscribe(connection => { + connection.mockRespond( + new Response( + new ResponseOptions({ + body: JSON.stringify(template) + }) + ) + ); + }); + + service + .submitMonitoringComponent({ + contextType: 'service', + serviceUuid: '123456', + vfiName: 'liavVfi', + vfcmtUuid: '987456', + cdump: {}, + flowType: 'SNMP' + }) + .subscribe(_res => { + expect(_res.length).toBe(1); + expect(_res).toEqual(template); + }); + }) + ); + + it( + 'should get Vfcmt Reference Data from API', + async(() => { + const template = [ + { + name: 'AviStone1234', + version: '0.1' + } + ]; + + backend.connections.subscribe(connection => { + connection.mockRespond( + new Response( + new ResponseOptions({ + body: JSON.stringify(template) + }) + ) + ); + }); + + service.getVfcmtReferenceData('123456').subscribe(_res => { + expect(_res.length).toBe(1); + expect(_res).toEqual(template); + }); + }) + ); + + it( + 'should get vfcmt list from API', + async(() => { + const dummyVfcmts = [ + { + uuid: 'cba37ed8-94e1-406f-b4f5-b5edbc31ac85', + name: 'CIe4d5a9b271d6' + }, + { + uuid: '64471437-8feb-40d9-a8b0-9407a81dd5c0', + name: 'teSt.__.monitoring---TempLATE.6hnc' + } + ]; + + backend.connections.subscribe(connection => { + expect(connection.request.url).toMatch( + 'http://localhost:8446/service/123456/0.1/monitoringComponents' + ); + connection.mockRespond( + new Response( + new ResponseOptions({ + body: JSON.stringify(dummyVfcmts) + }) + ) + ); + }); + + service + .getMonitoringComponents({ + contextType: 'service', + uuid: '123456', + version: '0.1' + }) + .subscribe(_res => { + expect(_res.length).toBe(2); + expect(_res).toEqual(dummyVfcmts); + }); + }) + ); + + it( + 'should get migration vfcmt list from API', + async(() => { + const dummyVfcmts = [ + { + uuid: 'cba37ed8-94e1-406f-b4f5-b5edbc31ac85', + name: 'CIe4d5a9b271d6' + }, + { + uuid: '64471437-8feb-40d9-a8b0-9407a81dd5c0', + name: 'teSt.__.monitoring---TempLATE.6hnc' + } + ]; + + backend.connections.subscribe(connection => { + expect(connection.request.url).toMatch( + 'http://localhost:8446/service/123456/0.1/getVfcmtsForMigration' + ); + connection.mockRespond( + new Response( + new ResponseOptions({ + body: JSON.stringify(dummyVfcmts) + }) + ) + ); + }); + + service + .getVfcmtsForMigration({ + contextType: 'service', + uuid: '123456', + version: '0.1' + }) + .subscribe(_res => { + expect(_res.length).toBe(2); + expect(_res).toEqual(dummyVfcmts); + }); + }) + ); + + it( + 'should get flow type from API', + async(() => { + const flowType = ['syslog', 'SNMP']; + + backend.connections.subscribe(connection => { + expect(connection.request.url).toMatch( + 'http://localhost:8446/conf/composition' + ); + connection.mockRespond( + new Response( + new ResponseOptions({ + body: JSON.stringify(flowType) + }) + ) + ); + }); + + service.getFlowType().subscribe(_res => { + expect(_res.length).toBe(2); + expect(_res).toEqual(flowType); + }); + }) + ); + it('should genrate deffrent uuid each time for request id', () => { const firstUuid = genrateUuid(); const secondUuid = genrateUuid(); |