Add junit tests
[aai/gizmo.git] / src / test / java / org / onap / crud / service / CrudRestServiceTest.java
1 /**
2  * ============LICENSE_START=======================================================
3  * org.onap.aai
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
11  *
12  *       http://www.apache.org/licenses/LICENSE-2.0
13  *
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=========================================================
20  */
21 package org.onap.crud.service;
22
23 import static org.junit.Assert.*;
24
25 import java.io.BufferedReader;
26 import java.io.File;
27 import java.io.FileReader;
28 import java.io.IOException;
29
30 import javax.servlet.http.HttpServletRequest;
31 import javax.ws.rs.core.HttpHeaders;
32 import javax.ws.rs.core.Response;
33
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;
39
40
41
42 public class CrudRestServiceTest {
43   private final String putVertexPayload = "{" +
44       "\"id\": \"test-uuid\"," +
45       "\"type\": \"pserver\"," +
46       "\"properties\": {" +
47       "\"fqdn\": \"myhost.onap.com\"," +
48       "\"hostname\": \"myhost\" } }";
49   
50   private final String postVertexPayload = "{" +
51       "\"type\": \"pserver\"," +
52       "\"properties\": {" +
53       "\"fqdn\": \"myhost.onap.com\"," +
54       "\"hostname\": \"myhost\" } }";
55   
56   private final String postMissingPropVertexPayload = "{" +
57       "\"type\": \"pserver\"," +
58       "\"properties\": {" +
59       "\"fqdn\": \"myhost.onap.com\"," +
60       "\"equip-type\": \"box\" } }";
61  
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\"," +
66       "\"properties\": {" +
67       "\"prevent-delete\": \"NONE\" } }";
68
69   
70   private CrudRestService mockService;
71   
72   @Before
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();
78       
79       CrudGraphDataService service = new CrudGraphDataService(new TestDao());
80       CrudRestService restService = new CrudRestService(service, null);
81       mockService = Mockito.spy(restService);
82       
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));
86   }
87   
88   @Test
89   public void testDelete() throws CrudException {
90     Response response;
91     
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);
95     
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);
99   }
100   
101   @Test
102   public void testAddVertex() throws CrudException {
103     Response response;
104     
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);
109     
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);
114     
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); 
119     
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);   
124   }
125   
126   @Test
127   public void testAddEdge() throws CrudException {
128     Response response;
129     
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);
134     
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);   
139   }
140   
141   @Test
142   public void testUpdateVertex() throws CrudException {
143     Response response;
144     
145     // Test ID mismatch
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);  
150     
151     // Success case
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);  
156     
157     // Patch
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);  
162   }
163   
164   @Test
165   public void testUpdateEdge() throws CrudException {
166     Response response;
167     
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);  
172     
173     // Patch
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);
178   }
179   
180   @Test
181   public void testGet() throws CrudException {
182     Response response;
183     
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);
188     
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);
193     
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);
198     
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);
203   }
204   
205   @Test
206   public void testBulk() throws CrudException, IOException {
207     Response response;
208     
209     File bulkFile = new File("src/test/resources/payloads/bulk.json");
210     String payloadStr = readFileToString(bulkFile); 
211     System.out.println(payloadStr);
212     
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);  
217   }
218   
219   public static String readFileToString(File aFile) throws IOException {
220
221     BufferedReader br = new BufferedReader(new FileReader(aFile));
222     try {
223       StringBuilder sb = new StringBuilder();
224       String line = br.readLine();
225
226       while (line != null) {
227         sb.append(line);
228         line = br.readLine();
229       }
230
231       return sb.toString().replaceAll("\\s+", "");
232     } finally {
233       try {
234         br.close();
235       } catch (IOException e) {
236         fail("Unexpected IOException: " + e.getMessage());
237       }
238     }
239   }
240
241 }