72423ca7f7f9fa7825cc0b30d7d71544fb2a701d
[portal/nonrtric-controlpanel.git] / webapp-frontend / src / app / interceptor.mock.ts
1 /*-
2  * ========================LICENSE_START=================================
3  * O-RAN-SC
4  * %%
5  * Copyright (C) 2021 Nordix Foundation
6  * %%
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
10  *
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  *
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===================================
19  */
20
21 import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest, HttpResponse } from '@angular/common/http';
22 import { Injectable, Injector } from '@angular/core';
23 import { Observable, of } from 'rxjs';
24 import * as policyinstances1 from './mock/policy-instance-1.json';
25 import * as policies from './mock/policies.json';
26 import * as policyinstances2 from './mock/policy-instance-2.json';
27 import * as policyinstances1Status from './mock/policy-instance-1-status.json';
28 import * as policyinstances2Status from './mock/policy-instance-2-status.json';
29 import * as eijobsProd1 from './mock/ei-jobs-producer1.json';
30 import * as eijobsProd2 from './mock/ei-jobs-producer2.json';
31 import * as eiProducerIds from './mock/ei-producerids.json';
32 import * as eiproducer1 from './mock/ei-producer1.json';
33 import * as eiproducer2 from './mock/ei-producer2.json';
34 import * as eiproducerstatus1 from './mock/ei-producer-status1.json';
35 import * as eiproducerstatus2 from './mock/ei-producer-status2.json';
36 import * as policytypesList from './mock/policy-types.json';
37 import * as policytypes1 from './mock/policy-type1.json';
38 import * as policyinstanceedit from './mock/policy-instance-edit.json';
39 import * as ric1 from './mock/ric1.json';
40 import * as ric2 from './mock/ric2.json';
41
42 const urls = [
43     {
44         url: '/a1-policy/v2/policy-types',
45         json: policytypesList
46     },
47     {
48         url: '/a1-policy/v2/policy-types/',
49         json: policytypes1
50     },
51     {
52         url: '/a1-policy/v2/policy-types/1',
53         json: policytypes1
54     },
55     {
56         url: '/a1-policy/v2/policies?policytype_id=',
57         json: policies
58     },
59     {
60         url: '/a1-policy/v2/policies?policytype_id=1',
61         json: policies
62     },
63     {
64         url: '/a1-policy/v2/policies/2000',
65         json: policyinstances1
66     },
67     {
68         url: '/a1-policy/v2/policies/2100',
69         json: policyinstances2
70     },
71     {
72         url: '/a1-policy/v2/policies/2000/status',
73         json: policyinstances1Status
74     },
75     {
76         url: '/a1-policy/v2/policies/2100/status',
77         json: policyinstances2Status
78     },
79     {
80         url: '/a1-policy/v2/policies/2000?type=',
81         json: policyinstanceedit
82     },
83     {
84         url: '/a1-policy/v2/policies/2100?type=',
85         json: policyinstanceedit
86     },
87     {
88         url: '/a1-policy/v2/policies/2000?type=1',
89         json: policyinstanceedit
90     },
91     {
92         url: '/a1-policy/v2/policies/2100?type=1',
93         json: policyinstanceedit
94     },
95     {
96         url: '/a1-policy/v2/policies/2000?ric=ric1&type=1',
97         json: ''
98     },
99     {
100         url: '/a1-policy/v2/rics?policytype_id=1',
101         json: ric1
102     },
103     {
104         url: '/a1-policy/v2/rics?policytype_id=',
105         json: ric2
106     },
107     {
108         url: '/ei-producer/v1/eiproducers',
109         json: eiProducerIds
110     },
111     {
112         url: '/ei-producer/v1/eiproducers/producer1',
113         json: eiproducer1
114     },
115     {
116         url: '/ei-producer/v1/eiproducers/producer2',
117         json: eiproducer2
118     },
119     {
120         url: '/ei-producer/v1/eiproducers/producer1/status',
121         json: eiproducerstatus1
122     },
123     {
124         url: '/ei-producer/v1/eiproducers/producer2/status',
125         json: eiproducerstatus2
126     },
127     {
128         url: '/ei-producer/v1/eiproducers/producer1/eijobs',
129         json: eijobsProd1
130     },
131     {
132         url: '/ei-producer/v1/eiproducers/producer2/eijobs',
133         json: eijobsProd2
134     }
135 ];
136
137 @Injectable()
138 export class HttpMockRequestInterceptor implements HttpInterceptor {
139     constructor(private injector: Injector) { }
140
141     intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
142         if (request.method === "PUT" && request.url.includes("policies")) {
143             console.log('Answered PUT policy ' + request.url);
144             return of(new HttpResponse({ status: 200 }));
145         }
146         for (const element of urls) {
147             if (request.url === element.url) {
148                 console.log('Loaded from stub json : ' + request.url);
149                 if (request.method === 'DELETE') {
150                     return of(new HttpResponse({ status: 204 }));
151                 }
152                 return of(new HttpResponse({ status: 200, body: ((element.json) as any).default }));
153             }
154         }
155         console.log('Loaded from mock http call :' + request.url);
156         return next.handle(request);
157     }
158 }