/**
- * ============LICENSE_START==========================================
+ * ============LICENSE_START=======================================================
* org.onap.aai
- * ===================================================================
+ * ================================================================================
* Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved.
- * Copyright © 2017-2018 Amdocs
- * ===================================================================
+ * Copyright © 2017-2018 European Software Marketing Ltd.
+ * ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
- * http://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
- * ============LICENSE_END============================================
+ * ============LICENSE_END=========================================================
*/
package org.onap.aai.modelloader.restclient;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertEquals;
import java.io.File;
import java.io.IOException;
import java.util.Properties;
import java.util.stream.IntStream;
import java.util.stream.Stream;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-import javax.xml.parsers.DocumentBuilder;
+
import javax.xml.parsers.DocumentBuilderFactory;
-import org.junit.Ignore;
+
import org.onap.aai.modelloader.config.ModelLoaderConfig;
+import org.onap.aai.modelloader.entity.ArtifactType;
import org.onap.aai.modelloader.entity.model.ModelArtifact;
import org.onap.aai.modelloader.entity.model.ModelArtifactParser;
-import org.onap.aai.modelloader.restclient.AaiRestClient;
-import org.onap.aai.modelloader.entity.ArtifactType;
-import org.onap.aai.restclient.client.OperationResult;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.client.RestTemplate;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
public class TestAaiRestClient {
+ private static final String MODEL_FILE = "src/test/resources/models/l3-network-widget.xml";
+
// This test requires a running A&AI system. To test locally, annotate with org.junit.Test
- @Ignore
public void testRestClient() throws Exception {
- final String MODEL_FILE = "src/test/resources/models/l3-network-widget.xml";
-
Properties props = new Properties();
props.setProperty("ml.distribution.ARTIFACT_TYPES", "MODEL_INVENTORY_PROFILE,MODEL_QUERY_SPEC,VNF_CATALOG");
props.setProperty("ml.aai.BASE_URL", "https://localhost:8443");
props.setProperty("ml.aai.MODEL_URL", "/aai/v9/service-design-and-creation/models/model/");
- props.setProperty("ml.aai.KEYSTORE_FILE", "aai-client-cert.p12");
- props.setProperty("ml.aai.KEYSTORE_PASSWORD", "OBF:1i9a1u2a1unz1lr61wn51wn11lss1unz1u301i6o");
ModelLoaderConfig config = new ModelLoaderConfig(props, ".");
File xmlFile = new File(MODEL_FILE);
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
dbFactory.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);
- DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
- Document doc = dBuilder.parse(xmlFile);
+ Document doc = dbFactory.newDocumentBuilder().parse(xmlFile);
NodeList nodesList = doc.getDocumentElement().getChildNodes();
model.setPayload(readFile(MODEL_FILE));
model.setModelNamespace("http://org.openecomp.aai.inventory/v9");
- AaiRestClient aaiClient = new AaiRestClient(config);
+ AaiRestClient aaiClient = new AaiRestClient(config, new RestTemplate());
// GET model
- OperationResult opResult =
- aaiClient.getResource(getURL(model, config), "example-trans-id-0", MediaType.APPLICATION_XML_TYPE);
- assertTrue(opResult.getResultCode() == Response.Status.NOT_FOUND.getStatusCode());
+ ResponseEntity opResult =
+ aaiClient.getResource(getUrl(model, config), "example-trans-id-0", MediaType.APPLICATION_XML, String.class);
+ assertEquals(opResult.getStatusCode(), HttpStatus.NOT_FOUND);
// PUT the model
- opResult = aaiClient.putResource(getURL(model, config), model.getPayload(), "example-trans-id-1",
- MediaType.APPLICATION_XML_TYPE);
- assertTrue(opResult.getResultCode() == Response.Status.CREATED.getStatusCode());
+ opResult = aaiClient.putResource(getUrl(model, config), model.getPayload(), "example-trans-id-1",
+ MediaType.APPLICATION_XML, String.class);
+ assertEquals(opResult.getStatusCode(), HttpStatus.CREATED);
// DELETE the model
- opResult = aaiClient.getAndDeleteResource(getURL(model, config), "example-trans-id-3");
- assertTrue(opResult.getResultCode() == Response.Status.NO_CONTENT.getStatusCode());
+ opResult = aaiClient.getAndDeleteResource(getUrl(model, config), "example-trans-id-3");
+ assertEquals(opResult.getStatusCode(), HttpStatus.NO_CONTENT);
} catch (Exception e) {
e.printStackTrace();
}
return new String(encoded);
}
- private String getURL(ModelArtifact model, ModelLoaderConfig config) {
- String baseURL = config.getAaiBaseUrl().trim();
- String subURL = null;
+ private String getUrl(ModelArtifact model, ModelLoaderConfig config) {
+ String subUrl;
if (model.getType().equals(ArtifactType.MODEL)) {
- subURL = config.getAaiModelUrl(model.getModelNamespaceVersion()).trim();
+ subUrl = config.getAaiModelUrl(model.getModelNamespaceVersion()).trim();
} else {
- subURL = config.getAaiNamedQueryUrl(model.getModelNamespaceVersion()).trim();
+ subUrl = config.getAaiNamedQueryUrl(model.getModelNamespaceVersion()).trim();
}
- if ((!baseURL.endsWith("/")) && (!subURL.startsWith("/"))) {
- baseURL = baseURL + "/";
+ String baseUrl = config.getAaiBaseUrl().trim();
+ if (!baseUrl.endsWith("/") && !subUrl.startsWith("/")) {
+ baseUrl = baseUrl + "/";
}
- if (baseURL.endsWith("/") && subURL.startsWith("/")) {
- baseURL = baseURL.substring(0, baseURL.length() - 1);
+ if (baseUrl.endsWith("/") && subUrl.startsWith("/")) {
+ baseUrl = baseUrl.substring(0, baseUrl.length() - 1);
}
- if (!subURL.endsWith("/")) {
- subURL = subURL + "/";
+ if (!subUrl.endsWith("/")) {
+ subUrl = subUrl + "/";
}
- return baseURL + subURL + model.getModelInvariantId();
+ return baseUrl + subUrl + model.getModelInvariantId();
}
}