From 83d387fb2b3fa471001d6ab4b6da26e79bbe69c9 Mon Sep 17 00:00:00 2001 From: elinuxhenrik Date: Fri, 16 Apr 2021 11:07:52 +0200 Subject: [PATCH] Improve mock interceptor Change-Id: I98e5e0a2d131e54975621b432d4e8738dc80bc9b Issue-ID: NONRTRIC-492 Signed-off-by: elinuxhenrik --- webapp-frontend/src/app/interceptor.mock.ts | 331 ++++++++++++--------- webapp-frontend/src/app/mock/policy-types.json | 7 - webapp-frontend/src/app/mock/policytypes.json | 14 - webapp-frontend/src/app/mock/type0-policies.json | 3 + .../mock/{policies.json => type1-policies.json} | 0 5 files changed, 187 insertions(+), 168 deletions(-) delete mode 100644 webapp-frontend/src/app/mock/policy-types.json delete mode 100644 webapp-frontend/src/app/mock/policytypes.json create mode 100644 webapp-frontend/src/app/mock/type0-policies.json rename webapp-frontend/src/app/mock/{policies.json => type1-policies.json} (100%) diff --git a/webapp-frontend/src/app/interceptor.mock.ts b/webapp-frontend/src/app/interceptor.mock.ts index ad0d080..42e6855 100644 --- a/webapp-frontend/src/app/interceptor.mock.ts +++ b/webapp-frontend/src/app/interceptor.mock.ts @@ -18,159 +18,196 @@ * ========================LICENSE_END=================================== */ -import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest, HttpResponse } from '@angular/common/http'; -import { Injectable, Injector } from '@angular/core'; -import { Observable, of } from 'rxjs'; -import * as policyinstance1 from './mock/policy-instance-1.json'; -import * as noTypePolicies from './mock/no-type-policies.json'; -import * as typedPolicies from './mock/policies.json'; -import * as policyinstance2 from './mock/policy-instance-2.json'; -import * as noTypePolicyinstance from './mock/policy-instance-notype.json'; -import * as policyinstance1Status from './mock/policy-instance-1-status.json'; -import * as policyinstance2Status from './mock/policy-instance-2-status.json'; -import * as eijobsProd1 from './mock/ei-jobs-producer1.json'; -import * as eijobsProd2 from './mock/ei-jobs-producer2.json'; -import * as eiProducerIds from './mock/ei-producerids.json'; -import * as eiproducer1 from './mock/ei-producer1.json'; -import * as eiproducer2 from './mock/ei-producer2.json'; -import * as eiproducerstatus1 from './mock/ei-producer-status1.json'; -import * as eiproducerstatus2 from './mock/ei-producer-status2.json'; -import * as policytypesList from './mock/policy-types.json'; -import * as policytypes1 from './mock/policy-type1.json'; -import * as policytypes0 from './mock/policy-type0.json'; -import * as policyinstanceedit from './mock/policy-instance-edit.json'; -import * as ric1 from './mock/ric1.json'; -import * as ric2 from './mock/ric2.json'; +import { + HttpEvent, + HttpHandler, + HttpInterceptor, + HttpRequest, + HttpResponse, +} from "@angular/common/http"; +import { Injectable, Injector } from "@angular/core"; +import { Observable, of } from "rxjs"; +import * as policyinstance1 from "./mock/policy-instance-1.json"; +import * as noTypePolicies from "./mock/no-type-policies.json"; +import * as type0Policies from "./mock/type0-policies.json"; +import * as type1Policies from "./mock/type1-policies.json"; +import * as policyinstance2 from "./mock/policy-instance-2.json"; +import * as noTypePolicyinstance from "./mock/policy-instance-notype.json"; +import * as policyinstance1Status from "./mock/policy-instance-1-status.json"; +import * as policyinstance2Status from "./mock/policy-instance-2-status.json"; +import * as eijobsProd1 from "./mock/ei-jobs-producer1.json"; +import * as eijobsProd2 from "./mock/ei-jobs-producer2.json"; +import * as eiProducerIds from "./mock/ei-producerids.json"; +import * as eiproducer1 from "./mock/ei-producer1.json"; +import * as eiproducer2 from "./mock/ei-producer2.json"; +import * as eiproducerstatus1 from "./mock/ei-producer-status1.json"; +import * as eiproducerstatus2 from "./mock/ei-producer-status2.json"; +import * as policytypes1 from "./mock/policy-type1.json"; +import * as policytypes0 from "./mock/policy-type0.json"; +import * as policyinstanceedit from "./mock/policy-instance-edit.json"; +import * as ric1 from "./mock/ric1.json"; +import * as ric2 from "./mock/ric2.json"; +import { delay } from "rxjs/operators"; const urls = [ - { - url: '/a1-policy/v2/policy-types', - json: policytypesList - }, - { - url: '/a1-policy/v2/policy-types/1', - json: policytypes1 - }, - { - url: '/a1-policy/v2/policy-types/0', - json: policytypes0 - }, - { - url: '/a1-policy/v2/policies?policytype_id=', - json: noTypePolicies - }, - { - url: '/a1-policy/v2/policies?policytype_id=1', - json: typedPolicies - }, - { - url: '/a1-policy/v2/policies/2001', - json: noTypePolicyinstance - }, - { - url: '/a1-policy/v2/policies/2000', - json: policyinstance1 - }, - { - url: '/a1-policy/v2/policies/2100', - json: policyinstance2 - }, - { - url: '/a1-policy/v2/policies/2001/status', - json: policyinstance1Status - }, - { - url: '/a1-policy/v2/policies/2000/status', - json: policyinstance1Status - }, - { - url: '/a1-policy/v2/policies/2100/status', - json: policyinstance2Status - }, - { - url: '/a1-policy/v2/policies/2000?type=', - json: policyinstanceedit - }, - { - url: '/a1-policy/v2/policies/2100?type=', - json: policyinstanceedit - }, - { - url: '/a1-policy/v2/policies/2000?type=1', - json: policyinstanceedit - }, - { - url: '/a1-policy/v2/policies/2100?type=1', - json: policyinstanceedit - }, - { - url: '/a1-policy/v2/policies/2000?ric=ric1&type=1', - json: '' - }, - { - url: '/a1-policy/v2/rics?policytype_id=1', - json: ric1 - }, - { - url: '/a1-policy/v2/rics?policytype_id=', - json: ric2 - }, - { - url: '/ei-producer/v1/eiproducers', - json: eiProducerIds - }, - { - url: '/ei-producer/v1/eiproducers/producer1', - json: eiproducer1 - }, - { - url: '/ei-producer/v1/eiproducers/producer2', - json: eiproducer2 - }, - { - url: '/ei-producer/v1/eiproducers/producer1/status', - json: eiproducerstatus1 - }, - { - url: '/ei-producer/v1/eiproducers/producer2/status', - json: eiproducerstatus2 - }, - { - url: '/ei-producer/v1/eiproducers/producer1/eijobs', - json: eijobsProd1 - }, - { - url: '/ei-producer/v1/eiproducers/producer2/eijobs', - json: eijobsProd2 - } + { + url: "/a1-policy/v2/policy-types/1", + json: policytypes1, + }, + { + url: "/a1-policy/v2/policy-types/0", + json: policytypes0, + }, + { + url: "/a1-policy/v2/policies?policytype_id=", + json: noTypePolicies, + }, + { + url: "/a1-policy/v2/policies?policytype_id=0", + json: type0Policies, + }, + { + url: "/a1-policy/v2/policies?policytype_id=1", + json: type1Policies, + }, + { + url: "/a1-policy/v2/policies/2001", + json: noTypePolicyinstance, + }, + { + url: "/a1-policy/v2/policies/2000", + json: policyinstance1, + }, + { + url: "/a1-policy/v2/policies/2100", + json: policyinstance2, + }, + { + url: "/a1-policy/v2/policies/2001/status", + json: policyinstance1Status, + }, + { + url: "/a1-policy/v2/policies/2000/status", + json: policyinstance1Status, + }, + { + url: "/a1-policy/v2/policies/2100/status", + json: policyinstance2Status, + }, + { + url: "/a1-policy/v2/policies/2000?type=", + json: policyinstanceedit, + }, + { + url: "/a1-policy/v2/policies/2100?type=", + json: policyinstanceedit, + }, + { + url: "/a1-policy/v2/policies/2000?type=1", + json: policyinstanceedit, + }, + { + url: "/a1-policy/v2/policies/2100?type=1", + json: policyinstanceedit, + }, + { + url: "/a1-policy/v2/policies/2000?ric=ric1&type=1", + json: "", + }, + { + url: "/a1-policy/v2/rics?policytype_id=1", + json: ric1, + }, + { + url: "/a1-policy/v2/rics?policytype_id=", + json: ric2, + }, + { + url: "/ei-producer/v1/eiproducers", + json: eiProducerIds, + }, + { + url: "/ei-producer/v1/eiproducers/producer1", + json: eiproducer1, + }, + { + url: "/ei-producer/v1/eiproducers/producer2", + json: eiproducer2, + }, + { + url: "/ei-producer/v1/eiproducers/producer1/status", + json: eiproducerstatus1, + }, + { + url: "/ei-producer/v1/eiproducers/producer2/status", + json: eiproducerstatus2, + }, + { + url: "/ei-producer/v1/eiproducers/producer1/eijobs", + json: eijobsProd1, + }, + { + url: "/ei-producer/v1/eiproducers/producer2/eijobs", + json: eijobsProd2, + }, ]; @Injectable() export class HttpMockRequestInterceptor implements HttpInterceptor { - constructor(private injector: Injector) { } - private numberOfTypes = 0; + private toggleTypes = true; - intercept(request: HttpRequest, next: HttpHandler): Observable> { - if (request.method === "PUT" && request.url.includes("policies")) { - console.log('Answered PUT policy ', request.url, request.body); - return of(new HttpResponse({ status: 200 })); - } - if (request.url === "/a1-policy/v2/policy-types" && this.numberOfTypes > 0) { - this.numberOfTypes = 0; - return of(new HttpResponse({status: 200, body:JSON.parse('{"policytype_ids": ["","1"]}')})); - } else { - this.numberOfTypes = 1; - } - for (const element of urls) { - if (request.url === element.url) { - console.log('Loaded from stub json : ' + request.url); - if (request.method === 'DELETE') { - return of(new HttpResponse({ status: 204 })); - } - return of(new HttpResponse({ status: 200, body: ((element.json) as any).default })); - } + constructor(private injector: Injector) {} + + intercept( + request: HttpRequest, + next: HttpHandler + ): Observable> { + let result: HttpResponse; + if (request.method === "PUT" && request.url.includes("policies")) { + result = new HttpResponse({ status: 200 }); + } else if (request.method === "DELETE") { + result = new HttpResponse({ status: 204 }); + } else if (request.url === "/a1-policy/v2/policy-types") { + result = this.getAlternatingNoOfTypes(); + } else { + for (const element of urls) { + if (request.url === element.url) { + result = new HttpResponse({ + status: 200, + body: (element.json as any).default, + }); } - console.log('Loaded from mock http call :' + request.url); - return next.handle(request); + } + } + + if (result) { + console.log( + "Mock answering http call :" + request.method + " " + request.url, + request.method === "PUT" ? request.body : null + ); + console.log("Returning: " + result.status, result.body); + // Adding a delay to simulate real server call. + return of(result).pipe(delay(10)); + } else { + return next.handle(request); + } + } + + getAlternatingNoOfTypes(): HttpResponse { + let result: HttpResponse; + if (this.toggleTypes) { + this.toggleTypes = false; + result = new HttpResponse({ + status: 200, + body: JSON.parse('{"policytype_ids": ["","1","0"]}'), + }); + } else { + this.toggleTypes = true; + result = new HttpResponse({ + status: 200, + body: JSON.parse('{"policytype_ids": ["","1"]}'), + }); } -} \ No newline at end of file + return result; + } +} diff --git a/webapp-frontend/src/app/mock/policy-types.json b/webapp-frontend/src/app/mock/policy-types.json deleted file mode 100644 index c65b820..0000000 --- a/webapp-frontend/src/app/mock/policy-types.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "policytype_ids": [ - "", - "1", - "0" - ] -} \ No newline at end of file diff --git a/webapp-frontend/src/app/mock/policytypes.json b/webapp-frontend/src/app/mock/policytypes.json deleted file mode 100644 index a59e12d..0000000 --- a/webapp-frontend/src/app/mock/policytypes.json +++ /dev/null @@ -1,14 +0,0 @@ -[ - { - "name": "2", - "schema": "{\"$schema\":\"http://json-schema.org/draft-07/schema#\",\"description\":\"Type 2 policy type\",\"additionalProperties\":false,\"title\":\"2\",\"type\":\"object\",\"properties\":{\"qosObjectives\":{\"additionalProperties\":false,\"type\":\"object\",\"properties\":{\"priorityLevel\":{\"type\":\"number\"}},\"required\":[\"priorityLevel\"]},\"scope\":{\"additionalProperties\":false,\"type\":\"object\",\"properties\":{\"qosId\":{\"type\":\"string\"},\"ueId\":{\"type\":\"string\"}},\"required\":[\"ueId\",\"qosId\"]}},\"required\":[\"scope\",\"qosObjectives\"]}" - }, - { - "name": "1", - "schema": "{\"$schema\":\"http://json-schema.org/draft-07/schema#\",\"description\":\"Type 1 policy type\",\"additionalProperties\":false,\"title\":\"1\",\"type\":\"object\",\"properties\":{\"qosObjectives\":{\"additionalProperties\":false,\"type\":\"object\",\"properties\":{\"priorityLevel\":{\"type\":\"number\"}},\"required\":[\"priorityLevel\"]},\"scope\":{\"additionalProperties\":false,\"type\":\"object\",\"properties\":{\"qosId\":{\"type\":\"string\"},\"ueId\":{\"type\":\"string\"}},\"required\":[\"ueId\",\"qosId\"]}},\"required\":[\"scope\",\"qosObjectives\"]}" - }, - { - "name": "0", - "schema": "{\"$schema\":\"http://json-schema.org/draft-07/schema#\",\"description\":\"Type 0 policy type (no instances)\",\"additionalProperties\":false,\"title\":\"1\",\"type\":\"object\",\"properties\":{\"qosObjectives\":{\"additionalProperties\":false,\"type\":\"object\",\"properties\":{\"priorityLevel\":{\"type\":\"number\"}},\"required\":[\"priorityLevel\"]},\"scope\":{\"additionalProperties\":false,\"type\":\"object\",\"properties\":{\"qosId\":{\"type\":\"string\"},\"ueId\":{\"type\":\"string\"}},\"required\":[\"ueId\",\"qosId\"]}},\"required\":[\"scope\",\"qosObjectives\"]}" - } - ] \ No newline at end of file diff --git a/webapp-frontend/src/app/mock/type0-policies.json b/webapp-frontend/src/app/mock/type0-policies.json new file mode 100644 index 0000000..e70a064 --- /dev/null +++ b/webapp-frontend/src/app/mock/type0-policies.json @@ -0,0 +1,3 @@ +{ + "policy_ids": [] +} \ No newline at end of file diff --git a/webapp-frontend/src/app/mock/policies.json b/webapp-frontend/src/app/mock/type1-policies.json similarity index 100% rename from webapp-frontend/src/app/mock/policies.json rename to webapp-frontend/src/app/mock/type1-policies.json -- 2.16.6