2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved.
6 * Copyright © 2017-2018 Amdocs
7 * ================================================================================
8 * Licensed under the Apache License, Version 2.0 (the "License");
9 * you may not use this file except in compliance with the License.
10 * You may obtain a copy of the License at
12 * http://www.apache.org/licenses/LICENSE-2.0
14 * Unless required by applicable law or agreed to in writing, software
15 * distributed under the License is distributed on an "AS IS" BASIS,
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * See the License for the specific language governing permissions and
18 * limitations under the License.
19 * ============LICENSE_END=========================================================
21 package org.onap.crud.service;
23 import static org.junit.Assert.*;
25 import java.io.BufferedReader;
27 import java.io.FileReader;
28 import java.io.IOException;
30 import javax.servlet.http.HttpServletRequest;
31 import javax.ws.rs.core.HttpHeaders;
32 import javax.ws.rs.core.Response;
34 import org.junit.Before;
35 import org.junit.Test;
36 import org.mockito.Mockito;
37 import org.onap.crud.exception.CrudException;
38 import org.onap.schema.RelationshipSchemaLoader;
42 public class CrudRestServiceTest {
43 private final String putVertexPayload = "{" +
44 "\"id\": \"test-uuid\"," +
45 "\"type\": \"pserver\"," +
47 "\"fqdn\": \"myhost.onap.com\"," +
48 "\"hostname\": \"myhost\" } }";
50 private final String postVertexPayload = "{" +
51 "\"type\": \"pserver\"," +
53 "\"fqdn\": \"myhost.onap.com\"," +
54 "\"hostname\": \"myhost\" } }";
56 private final String postMissingPropVertexPayload = "{" +
57 "\"type\": \"pserver\"," +
59 "\"fqdn\": \"myhost.onap.com\"," +
60 "\"equip-type\": \"box\" } }";
62 private final String postEdgePayload = "{" +
63 "\"type\": \"tosca.relationships.HostedOn\"," +
64 "\"source\": \"services/inventory/v12/vserver/50bdab41-ad1c-4d00-952c-a0aa5d827811\"," +
65 "\"target\": \"services/inventory/v12/pserver/1d326bc7-b985-492b-9604-0d5d1f06f908\"," +
67 "\"prevent-delete\": \"NONE\" } }";
70 private CrudRestService mockService;
73 public void init() throws Exception {
74 ClassLoader classLoader = getClass().getClassLoader();
75 File dir = new File(classLoader.getResource("model").getFile());
76 System.setProperty("CONFIG_HOME", dir.getParent());
77 RelationshipSchemaLoader.resetVersionContextMap();
79 CrudGraphDataService service = new CrudGraphDataService(new TestDao());
80 CrudRestService restService = new CrudRestService(service, null);
81 mockService = Mockito.spy(restService);
83 Mockito.doReturn(true).when(mockService).validateRequest(Mockito.any(HttpServletRequest.class),
84 Mockito.anyString(), Mockito.anyString(), Mockito.any(CrudRestService.Action.class), Mockito.anyString(),
85 Mockito.any(HttpHeaders.class));
89 public void testDelete() throws CrudException {
92 response = mockService.deleteVertex("", "v11", "pserver", "872dd5df-0be9-4167-95e9-2cf4b21165ed",
93 "services/inventory/v11", new TestHeaders(), null, new TestRequest());
94 assertTrue(response.getStatus() == 200);
96 response = mockService.deleteEdge("", "v11", "tosca.relationships.HostedOn", "872dd5df-0be9-4167-95e9-2cf4b21165ed",
97 "services/inventory/v11", new TestHeaders(), null, new TestRequest());
98 assertTrue(response.getStatus() == 200);
102 public void testAddVertex() throws CrudException {
105 response = mockService.addVertex(postMissingPropVertexPayload, "v11", "services/inventory/v11",
106 new TestHeaders(), null, new TestRequest());
107 System.out.println("Response: " + response.getStatus() + "\n" + response.getEntity().toString());
108 assertTrue(response.getStatus() == 400);
110 response = mockService.addVertex(postVertexPayload, "v11", "services/inventory/v11",
111 new TestHeaders(), null, new TestRequest());
112 System.out.println("Response: " + response.getStatus() + "\n" + response.getEntity().toString());
113 assertTrue(response.getStatus() == 201);
115 response = mockService.addVertex(postMissingPropVertexPayload, "v11", "pserver", "services/inventory/v11",
116 new TestHeaders(), null, new TestRequest());
117 System.out.println("Response: " + response.getStatus() + "\n" + response.getEntity().toString());
118 assertTrue(response.getStatus() == 400);
120 response = mockService.addVertex(postVertexPayload, "v11", "pserver", "services/inventory/v11",
121 new TestHeaders(), null, new TestRequest());
122 System.out.println("Response: " + response.getStatus() + "\n" + response.getEntity().toString());
123 assertTrue(response.getStatus() == 201);
127 public void testAddEdge() throws CrudException {
130 response = mockService.addEdge(postEdgePayload, "v11", "services/inventory/v11",
131 new TestHeaders(), null, new TestRequest());
132 System.out.println("Response: " + response.getStatus() + "\n" + response.getEntity().toString());
133 assertTrue(response.getStatus() == 201);
135 response = mockService.addEdge(postEdgePayload, "v11", "tosca.relationships.HostedOn", "services/inventory/v11",
136 new TestHeaders(), null, new TestRequest());
137 System.out.println("Response: " + response.getStatus() + "\n" + response.getEntity().toString());
138 assertTrue(response.getStatus() == 201);
142 public void testUpdateVertex() throws CrudException {
146 response = mockService.updateVertex(putVertexPayload, "v11", "pserver", "bad-id",
147 "services/inventory/v11", new TestHeaders(), null, new TestRequest());
148 System.out.println("Response: " + response.getStatus() + "\n" + response.getEntity().toString());
149 assertTrue(response.getStatus() == 400);
152 response = mockService.updateVertex(putVertexPayload, "v11", "pserver", "test-uuid",
153 "services/inventory/v11", new TestHeaders(), null, new TestRequest());
154 System.out.println("Response: " + response.getStatus() + "\n" + response.getEntity().toString());
155 assertTrue(response.getStatus() == 200);
158 response = mockService.patchVertex(putVertexPayload, "v11", "pserver", "test-uuid",
159 "services/inventory/v11", new TestHeaders(), null, new TestRequest());
160 System.out.println("Response: " + response.getStatus() + "\n" + response.getEntity().toString());
161 assertTrue(response.getStatus() == 200);
165 public void testUpdateEdge() throws CrudException {
168 response = mockService.updateEdge(postEdgePayload, "v11", "tosca.relationships.HostedOn", "my-uuid",
169 "services/inventory/v11", new TestHeaders(), null, new TestRequest());
170 System.out.println("Response: " + response.getStatus() + "\n" + response.getEntity().toString());
171 assertTrue(response.getStatus() == 200);
174 response = mockService.patchEdge(postEdgePayload, "v11", "tosca.relationships.HostedOn", "my-uuid",
175 "services/inventory/v11", new TestHeaders(), null, new TestRequest());
176 System.out.println("Response: " + response.getStatus() + "\n" + response.getEntity().toString());
177 assertTrue(response.getStatus() == 200);
181 public void testGet() throws CrudException {
184 response = mockService.getVertex("", "v11", "pserver", "872dd5df-0be9-4167-95e9-2cf4b21165ed",
185 "services/inventory/v11", new TestHeaders(), new TestUriInfo(), new TestRequest());
186 System.out.println("Response: " + response.getStatus() + "\n" + response.getEntity().toString());
187 assertTrue(response.getStatus() == 200);
189 response = mockService.getEdge("", "v11", "tosca.relationships.HostedOn", "872dd5df-0be9-4167-95e9-2cf4b21165ed",
190 "services/inventory/v11", new TestHeaders(), new TestUriInfo(), new TestRequest());
191 System.out.println("Response: " + response.getStatus() + "\n" + response.getEntity().toString());
192 assertTrue(response.getStatus() == 200);
194 response = mockService.getVertices("", "v11", "pserver",
195 "services/inventory/v11", new TestHeaders(), new TestUriInfo(), new TestRequest());
196 System.out.println("Response: " + response.getStatus() + "\n" + response.getEntity().toString());
197 assertTrue(response.getStatus() == 200);
199 response = mockService.getEdges("", "v11", "tosca.relationships.HostedOn",
200 "services/inventory/v11", new TestHeaders(), new TestUriInfo(), new TestRequest());
201 System.out.println("Response: " + response.getStatus() + "\n" + response.getEntity().toString());
202 assertTrue(response.getStatus() == 200);
206 public void testBulk() throws CrudException, IOException {
209 File bulkFile = new File("src/test/resources/payloads/bulk.json");
210 String payloadStr = readFileToString(bulkFile);
211 System.out.println(payloadStr);
213 response = mockService.addBulk(payloadStr, "v11", "",
214 "services/inventory/v11", new TestHeaders(), null, new TestRequest());
215 System.out.println("Bulk Response: " + response.getStatus() + "\n" + response.getEntity().toString());
216 assertTrue(response.getStatus() == 200);
219 public static String readFileToString(File aFile) throws IOException {
221 BufferedReader br = new BufferedReader(new FileReader(aFile));
223 StringBuilder sb = new StringBuilder();
224 String line = br.readLine();
226 while (line != null) {
228 line = br.readLine();
231 return sb.toString().replaceAll("\\s+", "");
235 } catch (IOException e) {
236 fail("Unexpected IOException: " + e.getMessage());