OperationalEnvironment improvements 88/98688/3
authorMichal Kabaj <michal.kabaj@nokia.com>
Wed, 20 Nov 2019 20:38:54 +0000 (21:38 +0100)
committerIttay Stern <ittay.stern@att.com>
Wed, 27 Nov 2019 18:16:20 +0000 (18:16 +0000)
-added new unit test to AaiControllerTest
-OperationalEnvironment and List are now immutable
-builder improvements
-removed redundant test

Issue-ID: VID-706
Signed-off-by: Michal Kabaj <michal.kabaj@nokia.com>
Change-Id: I2cf0d0b124458b9306637614b3d26c85c780ca4d
Signed-off-by: Michal Kabaj <michal.kabaj@nokia.com>
vid-app-common/src/main/java/org/onap/vid/aai/OperationalEnvironment.java
vid-app-common/src/main/java/org/onap/vid/aai/model/AaiGetOperationalEnvironments/OperationalEnvironmentList.java
vid-app-common/src/test/java/org/onap/vid/aai/OperationalEnvironmentTest.java
vid-app-common/src/test/java/org/onap/vid/aai/model/AaiGetOperationalEnvironments/OperationalEnvironmentListTest.java [deleted file]
vid-app-common/src/test/java/org/onap/vid/controller/AaiControllerTest.java

index be6c6e5..71ed171 100644 (file)
@@ -3,13 +3,14 @@
  * VID
  * ================================================================================
  * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * Modifications Copyright (C) 2019 Nokia.
  * ================================================================================
  * 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
- * 
+ *
  * 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.
 
 package org.onap.vid.aai;
 
-import org.onap.vid.aai.model.RelationshipList;
+import static com.fasterxml.jackson.annotation.JsonProperty.Access.WRITE_ONLY;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
 import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
 import com.fasterxml.jackson.annotation.JsonProperty;
+import org.onap.vid.aai.model.RelationshipList;
 
 @JsonIgnoreProperties(ignoreUnknown = true)
-public class OperationalEnvironment {
-
-    private String operationalEnvironmentId;
-    private String operationalEnvironmentName;
-    private String operationalEnvironmentType;
-    private String operationalEnvironmentStatus;
-    private String tenantContext;
-    private String workloadContext;
-    private String resourceVersion;
-    private RelationshipList relationshipList;
-
-    public OperationalEnvironment() {
+public final class OperationalEnvironment {
+
+    private final String operationalEnvironmentId;
+    private final String operationalEnvironmentName;
+    private final String operationalEnvironmentType;
+    private final String operationalEnvironmentStatus;
+    private final String tenantContext;
+    private final String workloadContext;
+    private final String resourceVersion;
+    private final RelationshipList relationshipList;
+
+    public static OperationalEnvironmentBuilder builder() {
+        return new OperationalEnvironmentBuilder();
+    }
+
+    @JsonCreator
+    OperationalEnvironment(
+        @JsonProperty(value = "operational-environment-id", access = WRITE_ONLY) String operationalEnvironmentId,
+        @JsonProperty(value = "operational-environment-name", access = WRITE_ONLY) String operationalEnvironmentName,
+        @JsonProperty(value = "operational-environment-type", access = WRITE_ONLY) String operationalEnvironmentType,
+        @JsonProperty(value = "operational-environment-status", access = WRITE_ONLY) String operationalEnvironmentStatus,
+        @JsonProperty(value = "tenant-context", access = WRITE_ONLY) String tenantContext,
+        @JsonProperty(value = "workload-context", access = WRITE_ONLY) String workloadContext,
+        @JsonProperty(value = "resource-version", access = WRITE_ONLY) String resourceVersion,
+        @JsonProperty(value = "relationship-list", access = WRITE_ONLY) RelationshipList relationshipList) {
+        this.operationalEnvironmentId = operationalEnvironmentId;
+        this.operationalEnvironmentName = operationalEnvironmentName;
+        this.operationalEnvironmentType = operationalEnvironmentType;
+        this.operationalEnvironmentStatus = operationalEnvironmentStatus;
+        this.tenantContext = tenantContext;
+        this.workloadContext = workloadContext;
+        this.resourceVersion = resourceVersion;
+        this.relationshipList = relationshipList;
     }
 
-    public OperationalEnvironment(OperationalEnvironmentBuilder builder) {
-        this.operationalEnvironmentId = builder.operationalEnvironmentId;
-        this.operationalEnvironmentName = builder.operationalEnvironmentName;
-        this.operationalEnvironmentType = builder.operationalEnvironmentType;
-        this.operationalEnvironmentStatus = builder.operationalEnvironmentStatus;
-        this.tenantContext = builder.tenantContext;
-        this.workloadContext = builder.workloadContext;
-        this.resourceVersion = builder.resourceVersion;
-        this.relationshipList = builder.relationshipList;
+    public String getOperationalEnvironmentId() {
+        return operationalEnvironmentId;
+    }
+
+    public String getOperationalEnvironmentName() {
+        return operationalEnvironmentName;
+    }
+
+    public String getOperationalEnvironmentType() {
+        return operationalEnvironmentType;
+    }
+
+    public String getOperationalEnvironmentStatus() {
+        return operationalEnvironmentStatus;
+    }
+
+    public String getTenantContext() {
+        return tenantContext;
+    }
+
+    public String getWorkloadContext() {
+        return workloadContext;
+    }
+
+    public String getResourceVersion() {
+        return resourceVersion;
+    }
+
+    public RelationshipList getRelationshipList() {
+        return relationshipList;
     }
 
     public static class OperationalEnvironmentBuilder {
+
         private String operationalEnvironmentId;
         private String operationalEnvironmentName;
         private String operationalEnvironmentType;
@@ -58,127 +105,65 @@ public class OperationalEnvironment {
         private String tenantContext;
         private String workloadContext;
         private String resourceVersion;
+
         private RelationshipList relationshipList;
 
-        public OperationalEnvironmentBuilder setOperationalEnvironmentId(
-                String operationalEnvironmentId) {
+        public OperationalEnvironmentBuilder withOperationalEnvironmentId(
+            String operationalEnvironmentId) {
             this.operationalEnvironmentId = operationalEnvironmentId;
             return this;
         }
 
-        public OperationalEnvironmentBuilder setOperationalEnvironmentName(
-                String operationalEnvironmentName) {
+        public OperationalEnvironmentBuilder withOperationalEnvironmentName(
+            String operationalEnvironmentName) {
             this.operationalEnvironmentName = operationalEnvironmentName;
             return this;
         }
 
-        public OperationalEnvironmentBuilder setOperationalEnvironmentType(
-                String operationalEnvironmentType) {
+        public OperationalEnvironmentBuilder withOperationalEnvironmentType(
+            String operationalEnvironmentType) {
             this.operationalEnvironmentType = operationalEnvironmentType;
             return this;
         }
 
-        public OperationalEnvironmentBuilder setOperationalEnvironmentStatus(
-                String operationalEnvironmentStatus) {
+        public OperationalEnvironmentBuilder withOperationalEnvironmentStatus(
+            String operationalEnvironmentStatus) {
             this.operationalEnvironmentStatus = operationalEnvironmentStatus;
             return this;
         }
 
-        public OperationalEnvironmentBuilder setTenantContext(String tenantContext) {
+        public OperationalEnvironmentBuilder withTenantContext(String tenantContext) {
             this.tenantContext = tenantContext;
             return this;
         }
 
-        public OperationalEnvironmentBuilder setWorkloadContext(String workloadContext) {
+        public OperationalEnvironmentBuilder withWorkloadContext(String workloadContext) {
             this.workloadContext = workloadContext;
             return this;
         }
 
-        public OperationalEnvironmentBuilder setResourceVersion(String resourceVersion) {
+        public OperationalEnvironmentBuilder withResourceVersion(String resourceVersion) {
             this.resourceVersion = resourceVersion;
             return this;
         }
 
-        public OperationalEnvironmentBuilder setRelationshipList(
-                RelationshipList relationshipList) {
+        public OperationalEnvironmentBuilder withRelationshipList(
+            RelationshipList relationshipList) {
             this.relationshipList = relationshipList;
             return this;
         }
 
-        public OperationalEnvironment createOperationalEnvironment() {
-            return new OperationalEnvironment(this);
+        public OperationalEnvironment build() {
+            return new OperationalEnvironment(operationalEnvironmentId,
+                operationalEnvironmentName,
+                operationalEnvironmentType,
+                operationalEnvironmentStatus,
+                tenantContext,
+                workloadContext,
+                resourceVersion,
+                relationshipList);
         }
-    }
-
-    public String getOperationalEnvironmentId() {
-        return operationalEnvironmentId;
-    }
 
-    @JsonProperty("operational-environment-id")
-    public void setJsonOperationalEnvironmentId(String operationalEnvironmentId) {
-        this.operationalEnvironmentId = operationalEnvironmentId;
     }
 
-    public String getOperationalEnvironmentName() {
-        return operationalEnvironmentName;
-    }
-
-    @JsonProperty("operational-environment-name")
-    public void setJsonOperationalEnvironmentName(String operationalEnvironmentName) {
-        this.operationalEnvironmentName = operationalEnvironmentName;
-    }
-
-    public String getOperationalEnvironmentType() {
-        return operationalEnvironmentType;
-    }
-
-    @JsonProperty("operational-environment-type")
-    public void setJsonOperationalEnvironmentType(String operationalEnvironmentType) {
-        this.operationalEnvironmentType = operationalEnvironmentType;
-    }
-
-    public String getOperationalEnvironmentStatus() {
-        return operationalEnvironmentStatus;
-    }
-
-    @JsonProperty("operational-environment-status")
-    public void setJsonOperationalEnvironmentStatus(String operationalEnvironmentStatus) {
-        this.operationalEnvironmentStatus = operationalEnvironmentStatus;
-    }
-
-    public String getTenantContext() {
-        return tenantContext;
-    }
-
-    @JsonProperty("tenant-context")
-    public void setJsonTenantContext(String tenantContext) {
-        this.tenantContext = tenantContext;
-    }
-
-    public String getWorkloadContext() {
-        return workloadContext;
-    }
-
-    @JsonProperty("workload-context")
-    public void setJsonWorkloadContext(String workloadContext) {
-        this.workloadContext = workloadContext;
-    }
-
-    public String getResourceVersion() {
-        return resourceVersion;
-    }
-
-    @JsonProperty("resource-version")
-    public void setJsonResourceVersion(String resourceVersion) {
-        this.resourceVersion = resourceVersion;
-    }
-
-    public RelationshipList getRelationshipList() {
-        return relationshipList;
-    }
-
-    @JsonProperty("relationship-list")
-    public void setJsonRelationshipList(RelationshipList relationshipList) {
-        this.relationshipList = relationshipList;
-    }
 }
index 13c6ada..6b3fbbd 100644 (file)
@@ -3,13 +3,14 @@
  * VID
  * ================================================================================
  * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * Modifications Copyright (C) 2019 Nokia.
  * ================================================================================
  * 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
- * 
+ *
  * 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.
 
 package org.onap.vid.aai.model.AaiGetOperationalEnvironments;
 
-import com.fasterxml.jackson.annotation.JsonAlias;
-import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
-import org.onap.vid.aai.OperationalEnvironment;
+import static com.fasterxml.jackson.annotation.JsonProperty.Access.WRITE_ONLY;
 
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.Collections;
 import java.util.List;
+import org.onap.vid.aai.OperationalEnvironment;
 
 @JsonIgnoreProperties(ignoreUnknown = true)
-public class OperationalEnvironmentList {
-
-    public List<OperationalEnvironment> getOperationalEnvironment() {
-        return operationalEnvironment;
-    }
+public final class OperationalEnvironmentList {
 
-    @JsonAlias("operational-environment")
-    public void setOperationalEnvironment(List<OperationalEnvironment> operationalEnvironment) {
-        this.operationalEnvironment = operationalEnvironment;
-    }
+    private final List<OperationalEnvironment> operationalEnvironment;
 
-    public OperationalEnvironmentList() {
+    @JsonCreator
+    public OperationalEnvironmentList(
+        @JsonProperty(value = "operational-environment", access = WRITE_ONLY) List<OperationalEnvironment> operationalEnvironment) {
+        this.operationalEnvironment = Collections.unmodifiableList(operationalEnvironment);
     }
 
-    public OperationalEnvironmentList(List<OperationalEnvironment> operationalEnvironment) {
-        this.operationalEnvironment = operationalEnvironment;
+    public List<OperationalEnvironment> getOperationalEnvironment() {
+        return operationalEnvironment;
     }
-
-    private List<OperationalEnvironment> operationalEnvironment;
 }
index 076c462..063b222 100644 (file)
 package org.onap.vid.aai;
 
 
-import com.fasterxml.jackson.databind.ObjectMapper;
-import org.junit.Assert;
-import org.onap.vid.aai.model.RelationshipList;
-import org.testng.annotations.Test;
+import static org.assertj.core.api.Assertions.assertThat;
 
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
 import java.io.IOException;
 import java.util.ArrayList;
-
-import static com.google.code.beanmatchers.BeanMatchers.hasValidGettersAndSetters;
-import static org.assertj.core.api.Assertions.assertThat;
+import org.onap.vid.aai.model.RelationshipList;
+import org.testng.annotations.Test;
 
 
 public class OperationalEnvironmentTest {
 
     private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
 
-    private static final String OPERATIONAL_ENVIRONMENT_TEST = "{\n" +
-            "\"operational-environment-id\": \"environmentId\",\n" +
-            "\"operational-environment-name\": \"environmentName\",\n" +
-            "\"operational-environment-type\": \"environmentType\",\n" +
-            "\"operational-environment-status\": \"environmentStatus\",\n" +
-            "\"tenant-context\": \"tenantContext\",\n" +
-            "\"workload-context\": \"workloadContext\",\n" +
-            "\"resource-version\": \"resourceVersion\",\n" +
-            "\"relationship-list\": {\n" +
-            "\"relationship\": []\n" +
-            "}\n" +
-            "}";
+    private static final String OPERATIONAL_ENVIRONMENT_JSON_DASHES = "{\n" +
+        "\"operational-environment-id\": \"testEnvironmentId\",\n" +
+        "\"operational-environment-name\": \"testEnvironmentName\",\n" +
+        "\"operational-environment-type\": \"testEnvironmentType\",\n" +
+        "\"operational-environment-status\": \"testEnvironmentStatus\",\n" +
+        "\"tenant-context\": \"testTenantContext\",\n" +
+        "\"workload-context\": \"testWorkloadContext\",\n" +
+        "\"resource-version\": \"testResourceVersion\",\n" +
+        "\"relationship-list\": {\n" +
+        "\"relationship\": []\n" +
+        "}\n" +
+        "}";
+
+    private static final String OPERATIONAL_ENVIRONMENT_JSON_CAMELCASE = "{\n" +
+        "\"operationalEnvironmentId\": \"testEnvironmentId\",\n" +
+        "\"operationalEnvironmentName\": \"testEnvironmentName\",\n" +
+        "\"operationalEnvironmentType\": \"testEnvironmentType\",\n" +
+        "\"operationalEnvironmentStatus\": \"testEnvironmentStatus\",\n" +
+        "\"tenantContext\": \"testTenantContext\",\n" +
+        "\"workloadContext\": \"testWorkloadContext\",\n" +
+        "\"resourceVersion\": \"testResourceVersion\",\n" +
+        "\"relationshipList\": {\n" +
+        "\"relationship\": []\n" +
+        "}\n" +
+        "}";
 
     @Test
-    public void shouldCreateProperOperationalEnvironmentWithConstructor(){
-        RelationshipList relationshipList = new RelationshipList();
-        relationshipList.relationship = new ArrayList<>();
+    public void shouldProperlyConvertJsonToOperationalEnvironment_whenJsonPropertyNamesContainDashSeparators()
+        throws IOException {
+        assertOperationalEnvironmentDeserialization(OPERATIONAL_ENVIRONMENT_JSON_DASHES);
+    }
+
+    @Test
+    public void shouldProperlyConvertJsonToOperationalEnvironment_whenJsonPropertyNamesAreCamelCase()
+        throws IOException {
+        assertOperationalEnvironmentDeserialization(OPERATIONAL_ENVIRONMENT_JSON_CAMELCASE);
+    }
 
+    private void assertOperationalEnvironmentDeserialization(String operationalEnvironmentTestDashes)
+        throws IOException {
         OperationalEnvironment operationalEnvironment =
-                new OperationalEnvironment.OperationalEnvironmentBuilder()
-                        .setOperationalEnvironmentId("testId")
-                        .setOperationalEnvironmentName("testEnvName")
-                        .setOperationalEnvironmentType("testEnvType")
-                        .setOperationalEnvironmentStatus("testEnvStatus")
-                        .setTenantContext("testTenant").setWorkloadContext("testWorkload")
-                        .setResourceVersion("testResource").setRelationshipList(relationshipList)
-                        .createOperationalEnvironment();
-
-        assertThat(operationalEnvironment.getOperationalEnvironmentId()).isEqualTo("testId");
-        assertThat(operationalEnvironment.getWorkloadContext()).isEqualTo("testWorkload");
+            OBJECT_MAPPER.readValue(operationalEnvironmentTestDashes, OperationalEnvironment.class);
+
+        assertThat(operationalEnvironment.getOperationalEnvironmentId()).isEqualTo("testEnvironmentId");
+        assertThat(operationalEnvironment.getOperationalEnvironmentName()).isEqualTo("testEnvironmentName");
+        assertThat(operationalEnvironment.getOperationalEnvironmentType()).isEqualTo("testEnvironmentType");
+        assertThat(operationalEnvironment.getOperationalEnvironmentStatus()).isEqualTo("testEnvironmentStatus");
+        assertThat(operationalEnvironment.getTenantContext()).isEqualTo("testTenantContext");
+        assertThat(operationalEnvironment.getWorkloadContext()).isEqualTo("testWorkloadContext");
+        assertThat(operationalEnvironment.getResourceVersion()).isEqualTo("testResourceVersion");
         assertThat(operationalEnvironment.getRelationshipList().getRelationship()).hasSize(0);
-        assertThat(operationalEnvironment.getResourceVersion()).isEqualTo("testResource");
-        assertThat(operationalEnvironment.getTenantContext()).isEqualTo("testTenant");
-        assertThat(operationalEnvironment.getOperationalEnvironmentType()).isEqualTo("testEnvType");
-        assertThat(operationalEnvironment.getOperationalEnvironmentStatus()).isEqualTo("testEnvStatus");
-        assertThat(operationalEnvironment.getOperationalEnvironmentName()).isEqualTo("testEnvName");
     }
 
     @Test
-    public void shouldProperlyConvertJsonToOperationalEnvironment() throws IOException {
-        OperationalEnvironment operationalEnvironment =
-                OBJECT_MAPPER.readValue(OPERATIONAL_ENVIRONMENT_TEST, OperationalEnvironment.class);
+    public void shouldSerializeToJson_usingActualPropertyNameAsJsonLogicalProperty() throws JsonProcessingException {
+        RelationshipList relationshipList = new RelationshipList();
+        relationshipList.relationship = new ArrayList<>();
 
-        assertThat(operationalEnvironment.getOperationalEnvironmentId()).isEqualTo("environmentId");
-        assertThat(operationalEnvironment.getWorkloadContext()).isEqualTo("workloadContext");
-        assertThat(operationalEnvironment.getRelationshipList().getRelationship()).hasSize(0);
-        assertThat(operationalEnvironment.getResourceVersion()).isEqualTo("resourceVersion");
-        assertThat(operationalEnvironment.getTenantContext()).isEqualTo("tenantContext");
-        assertThat(operationalEnvironment.getOperationalEnvironmentType()).isEqualTo("environmentType");
-        assertThat(operationalEnvironment.getOperationalEnvironmentStatus()).isEqualTo("environmentStatus");
-        assertThat(operationalEnvironment.getOperationalEnvironmentName()).isEqualTo("environmentName");
+        OperationalEnvironment operationalEnvironment = createOperationalEnvironment(relationshipList);
+
+        assertThat(OPERATIONAL_ENVIRONMENT_JSON_CAMELCASE)
+            .isEqualToIgnoringWhitespace(OBJECT_MAPPER.writeValueAsString(operationalEnvironment));
     }
 
+    private OperationalEnvironment createOperationalEnvironment(RelationshipList relationshipList) {
+        return new OperationalEnvironment.OperationalEnvironmentBuilder()
+            .withOperationalEnvironmentId("testEnvironmentId")
+            .withOperationalEnvironmentName("testEnvironmentName")
+            .withOperationalEnvironmentType("testEnvironmentType")
+            .withOperationalEnvironmentStatus("testEnvironmentStatus")
+            .withTenantContext("testTenantContext")
+            .withWorkloadContext("testWorkloadContext")
+            .withResourceVersion("testResourceVersion")
+            .withRelationshipList(relationshipList)
+            .build();
+    }
 }
diff --git a/vid-app-common/src/test/java/org/onap/vid/aai/model/AaiGetOperationalEnvironments/OperationalEnvironmentListTest.java b/vid-app-common/src/test/java/org/onap/vid/aai/model/AaiGetOperationalEnvironments/OperationalEnvironmentListTest.java
deleted file mode 100644 (file)
index fb79634..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * VID
- * ================================================================================
- * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * 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
- * 
- * 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=========================================================
- */
-
-package org.onap.vid.aai.model.AaiGetOperationalEnvironments;
-
-import static com.google.code.beanmatchers.BeanMatchers.hasValidGettersAndSetters;
-import static org.hamcrest.MatcherAssert.assertThat;
-import org.junit.Test;
-
-public class OperationalEnvironmentListTest {
-
-    @Test
-    public void shouldHaveValidGettersAndSetters(){
-        assertThat(OperationalEnvironmentList.class, hasValidGettersAndSetters());
-    }
-
-}
index 51bdec8..5211023 100644 (file)
@@ -57,8 +57,10 @@ import org.onap.vid.aai.AaiResponseTranslator;
 import org.onap.vid.aai.AaiResponseTranslator.PortMirroringConfigData;
 import org.onap.vid.aai.AaiResponseTranslator.PortMirroringConfigDataError;
 import org.onap.vid.aai.AaiResponseTranslator.PortMirroringConfigDataOk;
+import org.onap.vid.aai.OperationalEnvironment;
 import org.onap.vid.aai.model.AaiGetAicZone.AicZones;
 import org.onap.vid.aai.model.AaiGetAicZone.Zone;
+import org.onap.vid.aai.model.AaiGetOperationalEnvironments.OperationalEnvironmentList;
 import org.onap.vid.aai.model.AaiGetPnfs.Pnf;
 import org.onap.vid.aai.model.PortDetailsTranslator.PortDetails;
 import org.onap.vid.aai.model.PortDetailsTranslator.PortDetailsError;
@@ -561,5 +563,27 @@ public class AaiControllerTest {
             .andExpect(content().string(expectedResponse));
     }
 
+    @Test
+    public void getOperationalEnvironments_shouldReturnOkResponse() throws Exception {
+        String operationalEnvironmentType = "testEnvType";
+        String operationalEnvironmentStatus = "testEnvStatus";
+        OperationalEnvironmentList operationalEnvironmentList = new OperationalEnvironmentList(
+            ImmutableList.of(OperationalEnvironment.builder()
+                .withOperationalEnvironmentType(operationalEnvironmentType)
+                .withOperationalEnvironmentStatus(operationalEnvironmentStatus)
+                .build()));
+        AaiResponse<OperationalEnvironmentList> aaiResponse = new AaiResponse<>(operationalEnvironmentList, null,
+            HttpStatus.OK.value());
+        given(aaiService.getOperationalEnvironments(operationalEnvironmentType, operationalEnvironmentStatus))
+            .willReturn(aaiResponse);
+
+        mockMvc.perform(get("/get_operational_environments")
+            .contentType(MediaType.APPLICATION_JSON)
+            .accept(MediaType.APPLICATION_JSON)
+            .param("operationalEnvironmentType", operationalEnvironmentType)
+            .param("operationalEnvironmentStatus", operationalEnvironmentStatus))
+            .andExpect(status().isOk())
+            .andExpect(content().json(objectMapper.writeValueAsString(aaiResponse)));
+    }
 }