From 5d6c30fdbfa3d4f15b702652c48107b413a73fff Mon Sep 17 00:00:00 2001 From: "phani.y" Date: Wed, 11 Mar 2020 17:01:13 +0530 Subject: final changes Issue-ID: USECASEUI-411 Signed-off-by: phani.y Change-Id: I8c295b112af7eef92798ee4615d13db44c5e1795 --- usecaseui-portal/testBE/FakeBackendInterceptor.ts | 235 ++++++++++++++++++++++ 1 file changed, 235 insertions(+) create mode 100644 usecaseui-portal/testBE/FakeBackendInterceptor.ts (limited to 'usecaseui-portal/testBE') diff --git a/usecaseui-portal/testBE/FakeBackendInterceptor.ts b/usecaseui-portal/testBE/FakeBackendInterceptor.ts new file mode 100644 index 00000000..dd1c0d20 --- /dev/null +++ b/usecaseui-portal/testBE/FakeBackendInterceptor.ts @@ -0,0 +1,235 @@ +import { Injectable } from '@angular/core'; +import { HttpRequest, HttpResponse, HttpHandler, HttpEvent, HttpInterceptor, HTTP_INTERCEPTORS } from '@angular/common/http'; +import { Observable } from 'rxjs/Observable'; +import 'rxjs/add/observable/of'; +import 'rxjs/add/observable/throw'; +import 'rxjs/add/operator/delay'; +import 'rxjs/add/operator/mergeMap'; +import 'rxjs/add/operator/materialize'; +import 'rxjs/add/operator/dematerialize'; + +@Injectable() +export class FakeBackendInterceptor implements HttpInterceptor { + + constructor() { } + loopcnt: any = 0; + bodyData = []; + statusCnt:any =10; + + intercept(request: HttpRequest, next: HttpHandler): Observable> { + // array in local storage for registered users + let sites: any[] = JSON.parse(localStorage.getItem('sites')) || []; + + // wrap in delayed observable to simulate server api call + return Observable.of(null).mergeMap(() => { + + // create site + if (request.url.endsWith('order/newSiteData') && request.method === 'POST') { + // get new user object from post body + let newSite = request.body; + sites.push(newSite); + localStorage.setItem('sites', JSON.stringify(sites)); + console.log(sites); + + // respond 200 OK + return Observable.of(new HttpResponse({ status: 200 })); + } + // get data manage service data + if (request.url.endsWith('/uui-lcm/Sotnservices/servicesubscription/SOTN/serviceinstance/ISAAC-IS02') || request.url.endsWith('/uui-lcm/Sotnservices/servicesubscription/SOTN/serviceinstance/ISAAC-IS03') && request.method === 'GET') { + let body = { + "service":{ + "name":"CCVPNServiceV2-36", + "description":"CCVPNServiceV2", + "serviceInvariantUuid":"57c8a933-1364-4f85-b7a9-666d80ecc5b6", + "serviceUuid":"0734e398-a427-49f2-9abe-de8eb02542ad", + "globalSubscriberId": "{{customer}}", + "serviceType": "{{service-subscription}}", + "parameters":{ + "locationConstraints":[], + "resources":[], + "requestInputs":{ + "sotnUnderlay":[ + { + "l2vpn":[ + { + "l2vpn_COS": "123", + "l2vpn_dualLink": "Yes", + "l2vpn_description": "VPN Description", + "l2vpn_name": "VPN2", + "l2vpn_tenantId": "989933", + "l2vpn_vpnType": "SOTN", + "l2vpn_cbs": "123", + "l2vpn_ebs": "23", + "l2vpn_colorAware": "true", + "l2vpn_reroute": "Yes", + "l2vpn_couplingFlag": "true", + "l2vpn_cir": "100", + "l2vpn_startTime": "28-02-2020", + "l2vpn_endTime": "21-02-2020", + "l2vpn_eir": "1000", + "l2vpn_SLS": "1234" + } + ], + "sotnUni":[ + { + "sotnuni_cVLAN": "Huawei", + "sotnuni_tpId": "Huawei-112233" + }, + { + "sotnuni_cVLAN": "Huawei-1", + "sotnuni_tpId": "Huawei1-554433" + } + ] + } + ] + } + } + } + + }; + return Observable.of(new HttpResponse({ status: 200, body: body })); + + } + // get monotor service data + if (request.url.endsWith('/uui-lcm/Sotnservices/resourceTopology/service/service-subscriptions/service-subscription/sotn/service-instances/service-instance/ISAAC-IS02') || request.url.endsWith('/uui-lcm/Sotnservices/resourceTopology/service/service-subscriptions/service-subscription/sotn/service-instances/service-instance/ISAAC-IS03') && request.method === 'GET') { + let body = { + "nodes": [ + { + "id": "1", + "shape": "circularImage", + "image": "./assets/images/tpoint.png", + "label": "Termination Point", + "color": "Green", + "dataNode": {} + }, + { + "id": "2", + "shape": "circularImage", + "image": "./assets/images/edge.png", + "label": "Node", + "color": "Green", + "dataNode": { + "ethtSvcName": "sotn-021-VS-monitored", + "colorAware": "true", + "cbs": "100", + "couplingFlag": "true", + "ebs": "evpl", + "cir": "200000", + "eir": "0" + } + }, + { + "id": "3", + "shape": "circularImage", + "image": "./assets/images/logicallink.png", + "label": "Logical Link", + "color": "Green", + "dataNode": { + "ethtSvcName": "sotn-021-VS-monitored", + "colorAware": "true", + "cbs": "100", + "couplingFlag": "true", + "ebs": "evpl", + "cir": "200000", + "eir": "0" + } + }, + { + "id": "4", + "shape": "circularImage", + "image": "./assets/images/edge.png", + "label": "Node", + "color": "Green", + "dataNode": { + "zipcode": "100095", + "siteName": "hubtravel", + "description": "desc", + "location": "laptop-5", + "cvlan": "100" + } + }, + { + "id": "5", + "shape": "circularImage", + "image": "./assets/images/tpoint.png", + "label": "Termination Point", + "color": "Green", + "dataNode": { + "accessltpid": "155", + "siteName": "hubtravel", + "description": "desc", + "accessnodeid": "10.10.10.10", + "cvlan": "100" + } + } + ], + "edges": [ + { + "from": "1", + "to": "2" + }, + { + "from": "2", + "to": "3" + }, + { + "from": "3", + "to": "4" + }, + { + "from": "4", + "to": "5" + } + ] + }; + + return Observable.of(new HttpResponse({ status: 200, body: body })); + + } + + if (request.url.endsWith('/uui-lcm/customers/service-subscriptions') && request.method === 'GET') { + let body = { + "subscriptions": [ + { + "serviceType": "SOTN" + }] + }; + + return Observable.of(new HttpResponse({ status: 200, body: body })); + + } + if (request.url.endsWith('/uui-lcm/Sotnservices/ServiceInstances/SOTN') && request.method === 'GET') { + let body = { + "serviceInstanceList": [ + { + "serviceInstance": "ISAAC-IS02", + "serviceInstancename":"SiteService-5011" + }, + { + "serviceInstance": "ISAAC-IS03", + "serviceInstancename":"ISAAC-IS0333" + } + ] + }; + + return Observable.of(new HttpResponse({ status: 200, body: body })); + + } + // pass through any requests not handled above + return next.handle(request); + + }) + + // call materialize and dematerialize to ensure delay even if an error is thrown (https://github.com/Reactive-Extensions/RxJS/issues/648) + .materialize() + .delay(500) + .dematerialize(); + } +} + +export let fakeBackendProvider = { + // use fake backend in place of Http service for backend-less development + provide: HTTP_INTERCEPTORS, + useClass: FakeBackendInterceptor, + multi: true +}; \ No newline at end of file -- cgit 1.2.3-korg