2 * ========================LICENSE_START=================================
5 * Copyright (C) 2021 Nordix Foundation
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ========================LICENSE_END===================================
28 } from "@angular/common/http";
29 import { Injectable, Injector } from "@angular/core";
30 import { Observable, of, throwError } from "rxjs";
31 import * as policyinstance1 from "./mock/policy-instance-1.json";
32 import * as noTypePolicies from "./mock/no-type-policies.json";
33 import * as type0Policies from "./mock/type0-policies.json";
34 import * as type1Policies from "./mock/type1-policies.json";
35 import * as policyinstance2 from "./mock/policy-instance-2.json";
36 import * as noTypePolicyinstance from "./mock/policy-instance-notype.json";
37 import * as policyinstance1Status from "./mock/policy-instance-1-status.json";
38 import * as policyinstance2Status from "./mock/policy-instance-2-status.json";
39 import * as producerIds from "./mock/producerids.json";
40 import * as producer1 from "./mock/producer1.json";
41 import * as producer2 from "./mock/producer2.json";
42 import * as producer3 from "./mock/producer3.json";
43 import * as producerstatus1 from "./mock/producer-status1.json";
44 import * as producerstatus2 from "./mock/producer-status2.json";
45 import * as producerstatus3 from "./mock/producer-status3.json";
46 import * as policytypes1 from "./mock/policy-type1.json";
47 import * as policytypes0 from "./mock/policy-type0.json";
48 import * as policyinstanceedit from "./mock/policy-instance-edit.json";
49 import * as ric1 from "./mock/ric1.json";
50 import * as ric2 from "./mock/ric2.json";
51 import * as ricconfig from "./mock/ric-configuration.json";
52 import * as jobIds from "./mock/jobids.json";
53 import * as infoJob1 from "./mock/info-job1.json";
54 import * as infoJob2 from "./mock/info-job2.json";
55 import * as infoJob3 from "./mock/info-job3.json";
56 import * as job1Status from "./mock/job1-status.json";
57 import * as job2Status from "./mock/job2-status.json";
58 import * as job3Status from "./mock/job3-status.json";
59 import { delay } from "rxjs/operators";
61 const POLICY_PATH = "/a1-policy/v2"
62 const INFO_PATH = "/data-producer/v1"
63 const CONSUMER_PATH = "/data-consumer/v1"
67 url: POLICY_PATH + "/policy-types/1",
71 url: POLICY_PATH + "/policy-types/0",
75 url: POLICY_PATH + "/policies?policytype_id=",
79 url: POLICY_PATH + "/policies?policytype_id=0",
83 url: POLICY_PATH + "/policies?policytype_id=1",
87 url: POLICY_PATH + "/policies/2001",
88 json: noTypePolicyinstance,
91 url: POLICY_PATH + "/policies/2000",
92 json: policyinstance1,
95 url: POLICY_PATH + "/policies/2100",
96 json: policyinstance2,
99 url: POLICY_PATH + "/policies/2001/status",
100 json: policyinstance1Status,
103 url: POLICY_PATH + "/policies/2000/status",
104 json: policyinstance1Status,
107 url: POLICY_PATH + "/policies/2100/status",
108 json: policyinstance2Status,
111 url: POLICY_PATH + "/policies/2000?type=",
112 json: policyinstanceedit,
115 url: POLICY_PATH + "/policies/2100?type=",
116 json: policyinstanceedit,
119 url: POLICY_PATH + "/policies/2000?type=1",
120 json: policyinstanceedit,
123 url: POLICY_PATH + "/policies/2100?type=1",
124 json: policyinstanceedit,
127 url: POLICY_PATH + "/policies/2000?ric=ric1&type=1",
131 url: POLICY_PATH + "/rics?policytype_id=0",
135 url: POLICY_PATH + "/rics?policytype_id=1",
139 url: POLICY_PATH + "/rics?policytype_id=",
143 url: INFO_PATH + "/info-producers",
147 url: INFO_PATH + "/info-producers/producer1",
151 url: INFO_PATH + "/info-producers/producer2",
155 url: INFO_PATH + "/info-producers/producer3",
159 url: INFO_PATH + "/info-producers/producer1/status",
160 json: producerstatus1,
163 url: INFO_PATH + "/info-producers/producer2/status",
164 json: producerstatus2,
167 url: INFO_PATH + "/info-producers/producer3/status",
168 json: producerstatus3,
171 url: CONSUMER_PATH + "/info-jobs",
175 url: CONSUMER_PATH + "/info-jobs/job1",
179 url: CONSUMER_PATH + "/info-jobs/job2",
183 url: CONSUMER_PATH + "/info-jobs/job3",
187 url: CONSUMER_PATH + "/info-jobs/job1/status",
191 url: CONSUMER_PATH + "/info-jobs/job2/status",
195 url: CONSUMER_PATH + "/info-jobs/job3/status",
199 url: '/a1-policy/v2/configuration',
205 export class HttpMockRequestInterceptor implements HttpInterceptor {
206 private toggleTypes = true;
208 constructor(private injector: Injector) {}
211 request: HttpRequest<any>,
213 ): Observable<HttpEvent<any>> {
214 let result: HttpResponse<any>;
215 if (request.method === "PUT" && request.url.includes("policies")) {
216 result = new HttpResponse({ status: 200 });
217 } else if (request.method === "DELETE") {
218 result = new HttpResponse({ status: 204 });
219 } else if (request.url === POLICY_PATH + "/policy-types") {
220 result = this.getAlternatingNoOfTypes();
222 for (const element of urls) {
223 if (request.url === element.url) {
224 result = new HttpResponse({
226 body: (element.json as any).default,
234 "Mock answering http call :" + request.method + " " + request.url,
235 request.method === "PUT" ? request.body : null
237 console.log("Returning: " + result.status, result.body);
238 // Adding a delay to simulate real server call.
239 return of(result).pipe(delay(10));
241 return next.handle(request);
245 getAlternatingNoOfTypes(): HttpResponse<any> {
246 let result: HttpResponse<any>;
247 if (this.toggleTypes) {
248 this.toggleTypes = false;
249 result = new HttpResponse({
251 body: JSON.parse('{"policytype_ids": ["","1","0"]}'),
254 this.toggleTypes = true;
255 result = new HttpResponse({
257 body: JSON.parse('{"policytype_ids": ["","1"]}'),