Upgrade version of aai-common
[aai/gizmo.git] / src / test / java / org / onap / crud / event / GraphEventTest.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.event;
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.ws.rs.core.Response.Status;
31
32 import org.junit.Test;
33 import org.onap.crud.entity.Edge;
34 import org.onap.crud.entity.Vertex;
35 import org.onap.crud.event.GraphEvent;
36 import org.onap.crud.event.GraphEvent.GraphEventOperation;
37 import org.onap.crud.event.GraphEvent.GraphEventResult;
38 import org.onap.crud.event.GraphEventVertex;
39 import org.onap.crud.exception.CrudException;
40 import org.junit.runner.RunWith;
41 import org.mockito.junit.MockitoJUnitRunner;
42 import org.onap.crud.OXMModelLoaderSetup;
43
44 @RunWith(MockitoJUnitRunner.Silent.class)
45 public class GraphEventTest extends OXMModelLoaderSetup{
46   private final String vertexPayload = "{" +
47       "\"key\": \"test-uuid\"," +
48       "\"type\": \"pserver\"," +
49       "\"properties\": {" +
50       "\"fqdn\": \"myhost.onap.com\"," +
51       "\"hostname\": \"myhost\" } }";
52   
53   private final String edgePayload = "{" +
54       "\"key\": \"test-uuid\"," +
55       "\"type\": \"tosca.relationships.HostedOn\"," +
56       "\"properties\": {" +
57       "\"prevent-delete\": \"NONE\" }," +
58       "\"source\": {" +
59       "\"key\": \"50bdab41-ad1c-4d00-952c-a0aa5d827811\", \"type\": \"vserver\"}," +
60       "\"target\": {" +
61       "\"key\": \"1d326bc7-b985-492b-9604-0d5d1f06f908\", \"type\": \"pserver\"}" +
62       " }";
63   
64   @Test
65   public void validateGraphEvent() throws CrudException, IOException {
66     // Test building event from json
67     File file = new File("src/test/resources/payloads/graphVertexEvent.json");
68     String payloadStr = readFileToString(file); 
69     GraphEvent event = GraphEvent.fromJson(payloadStr);
70     assertTrue(event.getOperation() == GraphEventOperation.UPDATE);
71     assertTrue(event.getDbTransactionId().equals("b3e2853e-f643-47a3-a0c3-cb54cc997ad3"));
72     assertTrue(event.getTimestamp() == Long.parseLong("1514927928167"));
73     assertTrue(event.getTransactionId().equals("c0a81fa7-5ef4-49cd-ab39-e42c53c9b9a4"));
74     assertTrue(event.getObjectKey().equals("mykey"));
75     assertTrue(event.getObjectType().equals("vertex->pserver"));
76     assertTrue(event.getVertex().getId().equals("mykey"));
77     assertTrue(event.getVertex().getModelVersion().equals("v11"));
78     assertTrue(event.getVertex().getType().equals("pserver"));
79     assertTrue(event.getVertex().getProperties() != null);
80     assertTrue(event.getVertex().toVertex() != null);
81     assertTrue(event.getVertex().toJson() != null);
82    
83     // Test building event from vertex
84     Vertex vertex = Vertex.fromJson(vertexPayload, "v11");
85     event = GraphEvent.builder(GraphEventOperation.CREATE).vertex(GraphEventVertex.fromVertex(vertex, "v11")).build();
86     assertTrue(event.getOperation() == GraphEventOperation.CREATE);
87     
88     
89     // Test building event from edge
90     Edge edge = Edge.fromJson(edgePayload);
91     event = GraphEvent.builder(GraphEventOperation.UPDATE).edge(GraphEventEdge.fromEdge(edge, "v11")).build();    
92     assertTrue(event.getOperation() == GraphEventOperation.UPDATE);
93     assertTrue(event.getObjectKey().equals("test-uuid"));
94     assertTrue(event.getObjectType().equals("edge->tosca.relationships.HostedOn"));
95     assertTrue(event.getEdge().getId().equals("test-uuid"));
96     assertTrue(event.getEdge().getType().equals("tosca.relationships.HostedOn"));
97     assertTrue(event.getEdge().getProperties() != null);
98     assertTrue(event.getEdge().toEdge() != null);
99     assertTrue(event.getEdge().toJson() != null);
100  
101     // Test Getters/Setters
102     event.setDbTransactionId("a");
103     assertTrue(event.getDbTransactionId().equals("a"));
104     event.setErrorMessage("error");
105     assertTrue(event.getErrorMessage().equals("error"));
106     event.setResult(GraphEventResult.FAILURE);
107     assertTrue(event.getResult() == GraphEventResult.FAILURE);
108     event.setHttpErrorStatus(Status.BAD_REQUEST);
109     assertTrue(event.getHttpErrorStatus() == Status.BAD_REQUEST);
110     event.setTimestamp(1234567);
111     assertTrue(event.getTimestamp() == Long.parseLong("1234567"));
112   }
113   
114   public static String readFileToString(File aFile) throws IOException {
115     BufferedReader br = new BufferedReader(new FileReader(aFile));
116     try {
117       StringBuilder sb = new StringBuilder();
118       String line = br.readLine();
119
120       while (line != null) {
121         sb.append(line);
122         line = br.readLine();
123       }
124
125       return sb.toString().replaceAll("\\s+", "");
126     } finally {
127       try {
128         br.close();
129       } catch (IOException e) {
130         fail("Unexpected IOException: " + e.getMessage());
131       }
132     }
133   }
134 }