diff options
17 files changed, 98 insertions, 602 deletions
diff --git a/epsdk-app-onap/src/main/webapp/app/fusion/external/ebz/js/attHeaderSnippet.js b/epsdk-app-onap/src/main/webapp/app/fusion/external/ebz/js/attHeaderSnippet.js index fd803efe7..a3cbe820f 100755 --- a/epsdk-app-onap/src/main/webapp/app/fusion/external/ebz/js/attHeaderSnippet.js +++ b/epsdk-app-onap/src/main/webapp/app/fusion/external/ebz/js/attHeaderSnippet.js @@ -87,7 +87,7 @@ methods.close();
});
});
- }
+ };
}).call(this);
diff --git a/vid-app-common/src/main/java/org/onap/vid/controller/open/RoleGeneratorController.java b/vid-app-common/src/main/java/org/onap/vid/controller/open/RoleGeneratorController.java deleted file mode 100644 index 7b57df2c7..000000000 --- a/vid-app-common/src/main/java/org/onap/vid/controller/open/RoleGeneratorController.java +++ /dev/null @@ -1,48 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * VID - * ================================================================================ - * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved. - * Modifications Copyright 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. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.onap.vid.controller.open; - -import static org.springframework.http.HttpStatus.OK; - -import org.onap.portalsdk.core.controller.UnRestrictedBaseController; -import org.onap.vid.services.RoleGeneratorService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.RestController; - -@RestController -public class RoleGeneratorController extends UnRestrictedBaseController { - public static final String GENERATE_ROLE_SCRIPT = "generateRoleScript"; - private RoleGeneratorService roleGeneratorService; - - @Autowired - public RoleGeneratorController(RoleGeneratorService roleGeneratorService) { - this.roleGeneratorService = roleGeneratorService; - } - @RequestMapping(value = GENERATE_ROLE_SCRIPT +"/{firstRun}", method = RequestMethod.GET ) - public ResponseEntity<String> generateRoleScript (@PathVariable("firstRun") boolean firstRun) { - return ResponseEntity.status(OK).body(roleGeneratorService.generateRoleScript(firstRun)); - } -} diff --git a/vid-app-common/src/main/java/org/onap/vid/model/JobAuditStatus.java b/vid-app-common/src/main/java/org/onap/vid/model/JobAuditStatus.java index 645934530..012db5a31 100644 --- a/vid-app-common/src/main/java/org/onap/vid/model/JobAuditStatus.java +++ b/vid-app-common/src/main/java/org/onap/vid/model/JobAuditStatus.java @@ -24,6 +24,7 @@ import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; +import java.util.Locale; import java.util.TimeZone; import java.util.UUID; import javax.persistence.Column; @@ -100,7 +101,7 @@ public class JobAuditStatus extends VidBaseEntity { return null; } - DateFormat format = new SimpleDateFormat(defaultFormat); + DateFormat format = new SimpleDateFormat(defaultFormat, Locale.US); format.setTimeZone(TimeZone.getTimeZone("GMT")); Date date = null ; try { diff --git a/vid-app-common/src/main/java/org/onap/vid/services/RoleGenaratorServiceImpl.java b/vid-app-common/src/main/java/org/onap/vid/services/RoleGenaratorServiceImpl.java deleted file mode 100644 index 815c85d6f..000000000 --- a/vid-app-common/src/main/java/org/onap/vid/services/RoleGenaratorServiceImpl.java +++ /dev/null @@ -1,191 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * VID - * ================================================================================ - * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved. - * Modifications Copyright (C) 2018 - 2019 Nokia. 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.services; - -import io.joshworks.restclient.http.HttpResponse; -import jline.internal.Log; -import org.onap.vid.aai.*; -import org.onap.vid.model.ModelConstants; -import org.onap.vid.model.Subscriber; -import org.onap.vid.model.SubscriberList; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.util.HashMap; - -@Service -public class RoleGenaratorServiceImpl implements RoleGeneratorService { - - public static final String ROLE_ID_COLUMN = "ROLE_ID"; - - @Autowired - AaiClientInterface client; - - @Autowired - AaiOverTLSClientInterface aaiOverTLSClient; - - public static final String DB_NAME = "vid_portal"; - public static final String TBL_NAME = "fn_role"; - public static final String TEMP_DELIMITER ="***"; - public static final String OLD_DELIMITER = "_"; - public static final String CrLf = ";\r\n"; - - @Override - public String generateRoleScript(Boolean firstRun) { - String query = "USE " + DB_NAME + CrLf + - "SET SQL_SAFE_UPDATES = 0;\r\n"; - try { - HttpResponse<SubscriberList> allSubscribers = aaiOverTLSClient.getAllSubscribers(); - if (firstRun) { - query += replaceRolesToTempDelimiter("subscriber",buildSubscribersValuesForMappingsTable(allSubscribers.getBody())); - } - query += addAvailableRolesCombination(firstRun, allSubscribers.getBody()); - - } - catch (Exception e) { - Log.error("There was an error in updating roles ", e); - } - return query; - } - - private String addAvailableRolesCombination(Boolean firstRun, SubscriberList subscribers) { - String query; - String availableRoles=""; - HashMap<String,String> servicesNames = new HashMap<>(); - for (Subscriber subscriber: subscribers.customer) { - AaiResponse<Services> subscriberResponse = client.getSubscriberData(subscriber.globalCustomerId, true); - for(ServiceSubscription service: subscriberResponse.getT().serviceSubscriptions.serviceSubscription) { - servicesNames.put(service.serviceType,""); - String roleName = "'" + subscriber.subscriberName + ModelConstants.ROLE_DELIMITER + service.serviceType + "'"; - availableRoles += "("+roleName+"),"; - - - } - } - availableRoles = availableRoles.substring(0,availableRoles.length()-1); - query = createTemporaryTableAvailableRoles(availableRoles); - if (firstRun){ - query += replaceRolesToTempDelimiter("service",buildServicesValuesForMappingsTable(servicesNames)); - query += replaceToNewDelimiter(); - query += deleteWrongRecords(); - - } - query += insertAvailableRolesToFnRole(); - query += dropTemporaryTable("available_roles"); - return query; - } - - private String buildSubscribersValuesForMappingsTable(SubscriberList subscribers){ - String query=""; - for (Subscriber subscriber : subscribers.customer) { - String subscriberName = subscriber.subscriberName.contains(OLD_DELIMITER) ? subscriber.subscriberName.replace(OLD_DELIMITER, TEMP_DELIMITER) : subscriber.subscriberName; - query = query + "('" + subscriber.globalCustomerId + "','" + subscriberName + "') ,"; - } - if(query.length() > 0) - query = query.substring(0, query.length()-1) + CrLf; - return query; - } - - private String buildServicesValuesForMappingsTable(HashMap<String,String> servicesNames){ - final String[] query = {""}; - servicesNames.forEach((k,v)->{ - if (k.contains(OLD_DELIMITER)) { - query[0] += "('" + k + "' ,'" + k.replace(OLD_DELIMITER, TEMP_DELIMITER) +"'),"; - } - }); - if(query[0].length() > 0) - query[0] = query[0].substring(0, query[0].length()-1) + CrLf; - return query[0]; - } - - private String replaceRolesToTempDelimiter(String entityName, String valuesForMappingsTable ) { - - AaiResponse<Services> services = client.getServices(); - String query = ""; - if (valuesForMappingsTable.length() > 0) { - query = "CREATE TEMPORARY TABLE IF NOT EXISTS " + entityName + "Mappings(mapKey VARCHAR(255),mapValue VARCHAR(255));\r\n" + - "INSERT INTO " + entityName + "Mappings VALUES "; - query += valuesForMappingsTable; - query += "UPDATE " + TBL_NAME + "\r\n" + - "INNER JOIN " + entityName + "Mappings ON role_name LIKE concat('%',mapKey, '%')\r\n" + - "SET ROLE_NAME = REPLACE(ROLE_NAME, mapKey, mapValue) ; \r\n" + - dropTemporaryTable(entityName + "Mappings"); - } - return query; - } - - private String replaceToNewDelimiter(){ - String query = "UPDATE " + TBL_NAME + "\r\n" + - "SET ROLE_NAME = REPLACE(ROLE_NAME, '" + OLD_DELIMITER + "', '" + ModelConstants.ROLE_DELIMITER + "');\r\n" ; - query += "UPDATE fn_role\r\n" + - "SET ROLE_NAME = REPLACE(ROLE_NAME, '" + TEMP_DELIMITER + "', '" + OLD_DELIMITER + "');\r\n" ; - return query; - } - - private String insertAvailableRolesToFnRole(){ - return "INSERT INTO fn_role (ROLE_NAME, ACTIVE_YN, PRIORITY)\r\n" + - "SELECT RNAME, 'Y', 5\r\n" + - "FROM available_roles\r\n" + - "WHERE NOT EXISTS (SELECT ROLE_NAME\r\n" + - "FROM fn_role \r\n" + - "where RNAME = ROLE_NAME);\r\n"; - } - - - - private String createTemporaryTableAvailableRoles(String availableRoles) { - String query = "CREATE TEMPORARY TABLE IF NOT EXISTS available_roles(rname VARCHAR(255));\r\n"; - query += "INSERT INTO available_roles VALUES "+availableRoles+CrLf; - return query; - } - - private String deleteWrongRecords(){ - String query ="CREATE TEMPORARY TABLE IF NOT EXISTS wrong_roles(roleID INT);\r\n" + - "INSERT INTO wrong_roles (roleID)\r\n" + - "SELECT ROLE_ID FROM fn_role LEFT JOIN available_roles ON role_name LIKE concat(rname, '%')\r\n" + - "WHERE available_roles.rname IS NULL AND ROLE_ID NOT IN (1,16);\r\n"; - query += deleteCascade(); - query += dropTemporaryTable("wrong_roles"); - return query; - } - - private String deleteCascade() { - String query = deleteFromTableByRoles("fn_role_composite", "PARENT_ROLE_ID"); - query = query.substring(0, query.length()-1); - query += " OR wrong_roles.ROLEID = fn_role_composite.CHILD_ROLE_ID;\r\n"; - query += deleteFromTableByRoles("fn_role_function", ROLE_ID_COLUMN)+ "\r\n"; - query += deleteFromTableByRoles("fn_user_role", ROLE_ID_COLUMN)+ "\r\n"; - query += deleteFromTableByRoles(TBL_NAME, ROLE_ID_COLUMN)+ "\r\n"; - return query; - } - - private String deleteFromTableByRoles(String table, String column) { - String query = "DELETE FROM " + table + "\r\n"; - query += "using " + table + " inner join wrong_roles\r\n" + - "where wrong_roles.ROLEID = " + table + "." + column + ";"; - return query; - } - - private String dropTemporaryTable(String table) { - return "DROP TEMPORARY TABLE IF EXISTS " + table + CrLf; - } -} diff --git a/vid-app-common/src/main/java/org/onap/vid/services/RoleGeneratorService.java b/vid-app-common/src/main/java/org/onap/vid/services/RoleGeneratorService.java deleted file mode 100644 index ef6fa3ba2..000000000 --- a/vid-app-common/src/main/java/org/onap/vid/services/RoleGeneratorService.java +++ /dev/null @@ -1,25 +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.services; - -public interface RoleGeneratorService { - String generateRoleScript(Boolean firstRun); -} diff --git a/vid-app-common/src/main/resources/generateRoleScript.sh b/vid-app-common/src/main/resources/generateRoleScript.sh deleted file mode 100644 index cf73b7412..000000000 --- a/vid-app-common/src/main/resources/generateRoleScript.sh +++ /dev/null @@ -1,3 +0,0 @@ -firstRun=${1-false} -url=http://127.0.0.1:8080/vid/generateRoleScript/$firstRun -wget -O roles.sql $url
\ No newline at end of file diff --git a/vid-app-common/src/main/webapp/app/vid/scripts/controller/deleteResumeDialogController.js b/vid-app-common/src/main/webapp/app/vid/scripts/controller/deleteResumeDialogController.js index d7b7bab33..4c58f2b79 100644 --- a/vid-app-common/src/main/webapp/app/vid/scripts/controller/deleteResumeDialogController.js +++ b/vid-app-common/src/main/webapp/app/vid/scripts/controller/deleteResumeDialogController.js @@ -69,7 +69,7 @@ var deleteResumeDialogController = function( COMPONENT, FIELD, $scope, $http, $t $scope.userParameterChanged = function(id) { DeleteResumeService.updateUserParameterList(id, $scope.userProvidedControl); - } + }; $scope.confirm = function() { DataService.setE2EService($scope.isE2EService); //VoLTE support @@ -139,13 +139,13 @@ var deleteResumeDialogController = function( COMPONENT, FIELD, $scope, $http, $t } - } + }; $scope.cancel = function() { $scope.isDialogVisible = false; $scope.popup.isVisible = false; runCallback(false); - } + }; var runCallback = function(isSuccessful) { if (angular.isFunction(callbackFunction)) { @@ -153,8 +153,8 @@ var deleteResumeDialogController = function( COMPONENT, FIELD, $scope, $http, $t isSuccessful : isSuccessful }); } - } -} + }; +}; appDS2.controller("deleteResumeDialogController", [ "COMPONENT", "FIELD", "$scope", "$http", "$timeout", "$log", "DataService", "DeleteResumeService","CreationService", "UtilityService", diff --git a/vid-app-common/src/main/webapp/app/vid/scripts/controller/iframeController.js b/vid-app-common/src/main/webapp/app/vid/scripts/controller/iframeController.js index 105c48bae..5f05d210d 100644 --- a/vid-app-common/src/main/webapp/app/vid/scripts/controller/iframeController.js +++ b/vid-app-common/src/main/webapp/app/vid/scripts/controller/iframeController.js @@ -22,6 +22,6 @@ var iframeController = function($scope, $location) { $scope.url = "app/ui/#" + $location.$$url; -} +}; app.controller("iframeController", [ "$scope", "$location", iframeController ]); diff --git a/vid-app-common/src/main/webapp/app/vid/scripts/controller/iframeDialogController.js b/vid-app-common/src/main/webapp/app/vid/scripts/controller/iframeDialogController.js index e38847060..b4371c4a2 100644 --- a/vid-app-common/src/main/webapp/app/vid/scripts/controller/iframeDialogController.js +++ b/vid-app-common/src/main/webapp/app/vid/scripts/controller/iframeDialogController.js @@ -48,7 +48,7 @@ var iframeDialogController = function (COMPONENT, FIELD, PARAMETER, $scope, $htt $scope.popup.isVisible = false; // } } - }) + }); } $scope.$apply(); } diff --git a/vid-app-common/src/main/webapp/app/vid/scripts/modals/new-change-management/new-change-management.html b/vid-app-common/src/main/webapp/app/vid/scripts/modals/new-change-management/new-change-management.html index 3f4a94ee0..de0ec4026 100644 --- a/vid-app-common/src/main/webapp/app/vid/scripts/modals/new-change-management/new-change-management.html +++ b/vid-app-common/src/main/webapp/app/vid/scripts/modals/new-change-management/new-change-management.html @@ -24,7 +24,7 @@ <span ng-click="vm.close()" class="pull-right modal-close" aria-hidden="true">×</span> <div ng-if="vm.errorMsg!==''"><font color='red'>{{vm.errorMsg.message}}</font></div> </div> -<form class="form-create" name="newChangeManagement" ng-submit="vm.openModal();vm.close();" novalidate> +<form class="form-create" data-tests-id="newChangeManagementForm" name="newChangeManagement" ng-submit="vm.openModal();vm.close();" novalidate> <div class="modal-body step1" ng-show="vm.wizardStep === 1" > <div class="form-group"> <label class="control-label">Subscriber</label> diff --git a/vid-app-common/src/main/webapp/app/vid/scripts/view-models/change-management.html b/vid-app-common/src/main/webapp/app/vid/scripts/view-models/change-management.html index 1d8b39c80..194df6e4d 100644 --- a/vid-app-common/src/main/webapp/app/vid/scripts/view-models/change-management.html +++ b/vid-app-common/src/main/webapp/app/vid/scripts/view-models/change-management.html @@ -25,7 +25,7 @@ <div class="header"> <span id="change-management-headline">VNF Changes</span> <span class="separator"></span> - <div class="button-container" ng-click="vm.createNewChange()"> + <div data-tests-id="create-new-change-management" class="button-container" ng-click="vm.createNewChange()"> <div class="icon-svg" id="change-management-new-button"> <svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 55.47337 55.63023"><path class="icon-filling" d="M27.7367.07843A27.73669,27.73669,0,1,0,55.4734,27.81512,27.73757,27.73757,0,0,0,27.7367.07843ZM40.18824,29.6178H29.53938V40.26666a1.80267,1.80267,0,0,1-3.60535,0V29.6178H15.28516a1.80267,1.80267,0,0,1,0-3.60535H25.934V15.36359a1.80267,1.80267,0,0,1,3.60535,0V26.01245H40.18824a1.80267,1.80267,0,1,1,0,3.60535Z"/></svg> </div> diff --git a/vid-app-common/src/test/java/org/onap/vid/controller/MsoControllerTest.java b/vid-app-common/src/test/java/org/onap/vid/controller/MsoControllerTest.java index a2f86f437..a32450510 100644 --- a/vid-app-common/src/test/java/org/onap/vid/controller/MsoControllerTest.java +++ b/vid-app-common/src/test/java/org/onap/vid/controller/MsoControllerTest.java @@ -27,6 +27,7 @@ import static org.mockito.BDDMockito.given; import static org.mockito.BDDMockito.then; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.only; +import static org.mockito.Mockito.when; import static org.springframework.http.MediaType.APPLICATION_JSON; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; @@ -48,6 +49,7 @@ import org.junit.Test; import org.onap.vid.model.RequestReferencesContainer; import org.onap.vid.mso.MsoBusinessLogic; import org.onap.vid.mso.MsoResponseWrapper; +import org.onap.vid.mso.MsoResponseWrapper2; import org.onap.vid.mso.RestObject; import org.onap.vid.mso.rest.MsoRestClientNew; import org.onap.vid.mso.rest.Request; @@ -447,4 +449,38 @@ public class MsoControllerTest { private <T> T objectEqualTo(T expected) { return argThat(given -> asJson(given).equals(asJson(expected))); } -}
\ No newline at end of file + + @Test + public void testActivateFabricConfiguration() throws Exception { + + String serviceInstanceId = "tempId"; + + //define mock response object + String responseString = "{" + + " \"requestReferences\": {" + + " \"instanceId\": \"tempId\"," + + " \"requestId\": \"dbe54591-c8ed-46d3-abc7-d3a24873dfbd\"" + + " }" + + " }"; + final RestObject<RequestReferencesContainer> restObject = new RestObject<>(); + restObject.set(objectMapper.readValue(responseString, RequestReferencesContainer.class)); + restObject.setStatusCode(200); + + //register mock + String msoPath = "justAFakePath"; + + when(msoBusinessLogic.getActivateFabricConfigurationPath(serviceInstanceId)).thenReturn(msoPath); + when(msoRestClient.PostForObject(new RequestDetails(), msoPath, RequestReferencesContainer.class)).thenReturn(restObject); + + //expected response + MsoResponseWrapper2<RequestReferencesContainer> expectedResponse = new MsoResponseWrapper2<>(restObject); + + //get response from controller + // when & then + mockMvc.perform(post(format("/mso/mso_activate_fabric_configuration/%s", serviceInstanceId)) + .content(asJson(new RequestDetails())) + .contentType(APPLICATION_JSON)) + .andExpect(status().isOk()) + .andExpect(content().json(asJson(expectedResponse))); + } +} diff --git a/vid-app-common/src/test/java/org/onap/vid/controller/open/RoleGeneratorControllerTest.java b/vid-app-common/src/test/java/org/onap/vid/controller/open/RoleGeneratorControllerTest.java deleted file mode 100644 index c1509d956..000000000 --- a/vid-app-common/src/test/java/org/onap/vid/controller/open/RoleGeneratorControllerTest.java +++ /dev/null @@ -1,80 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * VID - * ================================================================================ - * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved. - * Modifications Copyright 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. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.onap.vid.controller.open; - -import static org.mockito.BDDMockito.given; -import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; -import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content; -import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; - -import org.apache.log4j.BasicConfigurator; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.Mock; -import org.mockito.runners.MockitoJUnitRunner; -import org.onap.vid.controller.open.RoleGeneratorController; -import org.onap.vid.services.RoleGeneratorService; -import org.springframework.http.MediaType; -import org.springframework.test.web.servlet.MockMvc; -import org.springframework.test.web.servlet.setup.MockMvcBuilders; - -@RunWith(MockitoJUnitRunner.class) -public class RoleGeneratorControllerTest { - - private static final String PATH = "/generateRoleScript/{firstRun}"; - - private static final String FIRST_JSON = "{key1: val1}"; - private static final String SECOND_JSON = "{key2: val2}"; - - private RoleGeneratorController roleGeneratorController; - private MockMvc mockMvc; - - @Mock - private RoleGeneratorService service; - - @Before - public void setUp() { - roleGeneratorController = new RoleGeneratorController(service); - BasicConfigurator.configure(); - mockMvc = MockMvcBuilders.standaloneSetup(roleGeneratorController).build(); - - given(service.generateRoleScript(true)).willReturn(FIRST_JSON); - given(service.generateRoleScript(false)).willReturn(SECOND_JSON); - } - - @Test - public void generateRoleScript_shouldReturnJson_whenFirstRun() throws Exception { - mockMvc.perform(get(PATH, "true") - .contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isOk()) - .andExpect(content().json(FIRST_JSON)); - } - - @Test - public void generateRoleScript_shouldReturnJson_whenNoFirstRun() throws Exception { - mockMvc.perform(get(PATH, "false") - .contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isOk()) - .andExpect(content().json(SECOND_JSON)); - } -} diff --git a/vid-app-common/src/test/java/org/onap/vid/mso/MsoBusinessLogicImplTest.java b/vid-app-common/src/test/java/org/onap/vid/mso/MsoBusinessLogicImplTest.java index c9f576db1..2ea37f4bc 100644 --- a/vid-app-common/src/test/java/org/onap/vid/mso/MsoBusinessLogicImplTest.java +++ b/vid-app-common/src/test/java/org/onap/vid/mso/MsoBusinessLogicImplTest.java @@ -21,6 +21,7 @@ package org.onap.vid.mso; +import static net.javacrumbs.jsonunit.JsonMatchers.jsonEquals; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatExceptionOfType; import static org.assertj.core.api.Assertions.tuple; @@ -42,7 +43,6 @@ import static org.mockito.ArgumentMatchers.isA; import static org.mockito.BDDMockito.given; import static org.mockito.Mockito.doThrow; import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import static org.onap.vid.controller.MsoController.CONFIGURATION_ID; import static org.onap.vid.controller.MsoController.REQUEST_TYPE; @@ -72,7 +72,6 @@ import org.hamcrest.MatcherAssert; import org.jetbrains.annotations.NotNull; import org.mockito.ArgumentMatcher; import org.mockito.Mock; -import org.mockito.Mockito; import org.mockito.MockitoAnnotations; import org.mockito.hamcrest.MockitoHamcrest; import org.onap.portalsdk.core.util.SystemProperties; @@ -91,7 +90,6 @@ import org.onap.vid.mso.model.CloudConfiguration; import org.onap.vid.mso.model.ModelInfo; import org.onap.vid.mso.model.OperationalEnvironmentActivateInfo; import org.onap.vid.mso.model.OperationalEnvironmentDeactivateInfo; -import org.onap.vid.mso.model.RequestInfo; import org.onap.vid.mso.model.RequestParameters; import org.onap.vid.mso.rest.OperationalEnvironment.OperationEnvironmentRequestDetails; import org.onap.vid.mso.rest.Request; @@ -864,39 +862,11 @@ public class MsoBusinessLogicImplTest extends AbstractTestNGSpringContextTests { } @Test - public void shouldProperlyBuildRequestDetailsForSoftDeleteWithProperParameters() { - // given - SoftDeleteRequest softDeleteRequest = new SoftDeleteRequest(); - RequestDetails requestDetails = new RequestDetails(); - - String userId = "testUserID"; - String tenantId = "testTenantId "; - String cloudRegionId = "testCloudId"; - - - RequestInfo requestInfo = new RequestInfo(); - requestInfo.setSource("VID"); - requestInfo.setRequestorId(userId); - requestDetails.setRequestInfo(requestInfo); - - CloudConfiguration cloudConfiguration = new CloudConfiguration(); - cloudConfiguration.setTenantId(tenantId); - cloudConfiguration.setLcpCloudRegionId(cloudRegionId); - requestDetails.setCloudConfiguration(cloudConfiguration); - - setModelInfoForRequestDetails(requestDetails); - - setRequestParametersForRequestDetails(requestDetails); - - softDeleteRequest.setLcpCloudRegionId(cloudRegionId); - softDeleteRequest.setTenantId(tenantId); - softDeleteRequest.setUserId(userId); - - // when - RequestDetails response = msoBusinessLogic.buildRequestDetailsForSoftDelete(softDeleteRequest); - - // then - assertThat(response).isEqualTo(requestDetails); + public void shouldProperlyBuildRequestDetailsForSoftDeleteWithProperParameters() throws IOException { + SoftDeleteRequest request = new SoftDeleteRequest("testTenantId", "testCloudId", "testUserID"); + String expected = IOUtils.toString(this.getClass().getResource("/payload_jsons/vfModuleDeactivateAndCloudDelete.json"), "UTF-8"); + final RequestDetails result = msoBusinessLogic.buildRequestDetailsForSoftDelete(request); + MatcherAssert.assertThat(result, jsonEquals(expected)); } private void setRequestParametersForRequestDetails(RequestDetails requestDetails) { @@ -1612,68 +1582,5 @@ public class MsoBusinessLogicImplTest extends AbstractTestNGSpringContextTests { org.junit.Assert.assertThat(metadata.getRawData(), rawData); org.junit.Assert.assertThat(metadata.getDescription(), descriptionMatcher); } - - @Test(dataProvider = "unAssignOrDeleteParams") - public void deleteSvcInstance_verifyEndPointPathConstructing(String status) { - Mockito.reset(msoInterface); - String endpoint = validateEndpointPath(MsoProperties.MSO_DELETE_OR_UNASSIGN_REST_API_SVC_INSTANCE); - RequestDetails requestDetails = new RequestDetails(); - - - msoBusinessLogic.deleteSvcInstance(requestDetails, "tempId", status); - - verify(msoInterface).deleteSvcInstance(requestDetails, endpoint + "/tempId"); - } - - @DataProvider - public Object[][] unAssignOrDeleteParams() { - return new Object[][]{ - {"Active"}, - {"unexpected-status"}, - }; - } - - @Test(dataProvider = "unAssignStatus") - public void deleteSvcInstance_verifyEndPointPathConstructing_unAssignFeatureOn(String status) { - Mockito.reset(msoInterface); - String endpoint = validateEndpointPath(MsoProperties.MSO_DELETE_OR_UNASSIGN_REST_API_SVC_INSTANCE); - RequestDetails requestDetails = new RequestDetails(); - - msoBusinessLogic.deleteSvcInstance(requestDetails, "tempId", status); - - verify(msoInterface).unassignSvcInstance(requestDetails, endpoint + "/tempId/unassign"); - } - - @DataProvider - public Object[][] unAssignStatus() { - return new Object[][]{ - {"Created"}, - {"Pendingdelete"}, - {"pending-Delete"}, - {"Assigned"} - }; - } - - @Test - public void deleteVnf_verifyEndPointPathConstructing() { - String endpoint = validateEndpointPath(MsoProperties.MSO_REST_API_VNF_INSTANCE); - RequestDetails requestDetails = new RequestDetails(); - - String vnf_endpoint = endpoint.replaceFirst(SVC_INSTANCE_ID, "serviceInstanceTempId"); - - msoBusinessLogic.deleteVnf(requestDetails, "serviceInstanceTempId", "vnfInstanceTempId"); - verify(msoInterface).deleteVnf(requestDetails, vnf_endpoint + "/vnfInstanceTempId"); - } - - @Test - public void deleteVfModule_verifyEndPointPathConstructing() { - String endpoint = validateEndpointPath(MsoProperties.MSO_REST_API_VF_MODULE_INSTANCE); - RequestDetails requestDetails = new RequestDetails(); - - String vf__modules_endpoint = endpoint.replaceFirst(SVC_INSTANCE_ID, "serviceInstanceTempId").replaceFirst(VNF_INSTANCE_ID, "vnfInstanceTempId"); - - msoBusinessLogic.deleteVfModule(requestDetails, "serviceInstanceTempId", "vnfInstanceTempId", "vfModuleTempId"); - verify(msoInterface).deleteVfModule(requestDetails, vf__modules_endpoint + "/vfModuleTempId"); - } } diff --git a/vid-app-common/src/test/java/org/onap/vid/services/RoleGenaratorServiceImplTest.java b/vid-app-common/src/test/java/org/onap/vid/services/RoleGenaratorServiceImplTest.java deleted file mode 100644 index 2bf73eece..000000000 --- a/vid-app-common/src/test/java/org/onap/vid/services/RoleGenaratorServiceImplTest.java +++ /dev/null @@ -1,140 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * VID - * ================================================================================ - * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved. - * Modifications Copyright (C) 2018 - 2019 Nokia. 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.services; - -import static org.mockito.Mockito.doReturn; -import static org.mockito.Mockito.doThrow; -import static org.mockito.MockitoAnnotations.initMocks; - -import java.util.ArrayList; -import org.apache.commons.lang.StringUtils; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.Mockito; -import org.onap.vid.aai.AaiClientInterface; -import org.onap.vid.aai.AaiResponse; -import org.onap.vid.aai.ServiceSubscription; -import org.onap.vid.aai.ServiceSubscriptions; -import org.onap.vid.aai.Services; -import org.onap.vid.model.Subscriber; -import org.onap.vid.model.SubscriberList; -import org.testng.Assert; -import org.testng.annotations.BeforeClass; -import org.testng.annotations.BeforeMethod; -import org.testng.annotations.Test; - -public class RoleGenaratorServiceImplTest { - - private static final String GLOBAL_CUSTOMER_ID = "997"; - private static final String SUBSCRIBER_NAME = "name"; - private static final String SUBSCRIBER_TYPE = "subscriber_type"; - private static final String RESOURCE_VERSION = "1"; - private static final String SERVICE_TYPE = "service_type"; - - @Mock - private AaiClientInterface aaiClientInterface; - - @InjectMocks - private RoleGenaratorServiceImpl testSubject; - - @BeforeClass - public void beforeClass() { - initMocks(this); - } - - @BeforeMethod - public void resetMocks() { - Mockito.reset(aaiClientInterface); - } - - @Test - public void tenerateRoleScript_firstRun() { - boolean firstRun = true; - - Subscriber subscriber = createSubscriber(); - AaiResponse<SubscriberList> subscribers = createSubscriberListAaiResponse(subscriber); - doReturn(subscribers).when(aaiClientInterface).getAllSubscribers(); - - ServiceSubscription serviceSubscription = createServiceSubscription(); - AaiResponse<Services> subscriberResponse = createServicesAaiResponse(serviceSubscription); - doReturn(subscriberResponse).when(aaiClientInterface).getSubscriberData(subscriber.globalCustomerId,false); - - String result = testSubject.generateRoleScript(firstRun); - Assert.assertTrue(StringUtils.isNotBlank(result)); - } - - @Test - public void tenerateRoleScript_notAFirstRun() { - boolean firstRun = false; - - Subscriber subscriber = createSubscriber(); - AaiResponse<SubscriberList> subscribers = createSubscriberListAaiResponse(subscriber); - doReturn(subscribers).when(aaiClientInterface).getAllSubscribers(); - - ServiceSubscription serviceSubscription = createServiceSubscription(); - AaiResponse<Services> subscriberResponse = createServicesAaiResponse(serviceSubscription); - doReturn(subscriberResponse).when(aaiClientInterface).getSubscriberData(subscriber.globalCustomerId, false); - - String result = testSubject.generateRoleScript(firstRun); - Assert.assertTrue(StringUtils.isNotBlank(result)); - } - - @Test(expectedExceptions = { Exception.class }) - public void tenerateRoleScript_errorGettingDataFromAAIClient() { - boolean firstRun = false; - - doThrow(new Exception("This is expected.")).when(aaiClientInterface).getAllSubscribers(); - - String result = testSubject.generateRoleScript(firstRun); - Assert.fail(); - } - - private ServiceSubscription createServiceSubscription() { - ServiceSubscription serviceSubscription = new ServiceSubscription(); - serviceSubscription.serviceType = SERVICE_TYPE; - return serviceSubscription; - } - - private AaiResponse<SubscriberList> createSubscriberListAaiResponse(Subscriber subscriber) { - AaiResponse<SubscriberList> subscribers = new AaiResponse<>(new SubscriberList(new ArrayList<>()), "", 200); - subscribers.getT().customer.add(subscriber); - return subscribers; - } - - private AaiResponse<Services> createServicesAaiResponse(ServiceSubscription serviceSubscription) { - AaiResponse<Services> subscriberResponse = new AaiResponse<>(new Services(), "", 200); - subscriberResponse.getT().serviceSubscriptions = new ServiceSubscriptions(); - subscriberResponse.getT().serviceSubscriptions.serviceSubscription = new ArrayList<>(); - subscriberResponse.getT().serviceSubscriptions.serviceSubscription.add(serviceSubscription); - return subscriberResponse; - } - - private Subscriber createSubscriber() { - Subscriber subscriber = new Subscriber(); - subscriber.globalCustomerId = GLOBAL_CUSTOMER_ID; - subscriber.subscriberName = SUBSCRIBER_NAME; - subscriber.subscriberType = SUBSCRIBER_TYPE; - subscriber.resourceVersion = RESOURCE_VERSION; - return subscriber; - } - - -} diff --git a/vid-app-common/src/test/resources/payload_jsons/vfModuleDeactivateAndCloudDelete.json b/vid-app-common/src/test/resources/payload_jsons/vfModuleDeactivateAndCloudDelete.json index d86ad1966..dbac1383d 100644 --- a/vid-app-common/src/test/resources/payload_jsons/vfModuleDeactivateAndCloudDelete.json +++ b/vid-app-common/src/test/resources/payload_jsons/vfModuleDeactivateAndCloudDelete.json @@ -3,15 +3,15 @@ "modelType": "vfModule" }, "cloudConfiguration": { - "lcpCloudRegionId": "mdt1", - "tenantId": "88a6ca3ee0394ade9403f075db23167e" + "lcpCloudRegionId": "testCloudId", + "tenantId": "testTenantId" }, "requestInfo": { "source": "VID", - "requestorId": "az2016" + "requestorId": "testUserID" }, "requestParameters" : { "testApi" : "GR_API", "userParams": [] } -}
\ No newline at end of file +} diff --git a/vid-webpack-master/cypress/integration/iFrames/changeManagement.e2e.ts b/vid-webpack-master/cypress/integration/iFrames/changeManagement.e2e.ts new file mode 100644 index 000000000..b5a01be09 --- /dev/null +++ b/vid-webpack-master/cypress/integration/iFrames/changeManagement.e2e.ts @@ -0,0 +1,39 @@ +///<reference path="../../../node_modules/cypress/types/index.d.ts"/> / <reference types="Cypress" /> + +import {JsonBuilder} from "../../support/jsonBuilders/jsonBuilder"; +import {AAISubDetailsModel} from "../../support/jsonBuilders/models/aaiSubDetails.model"; + +describe('Change management AKA VNF changes', function () { + var jsonBuilderAAISubDetailsModel: JsonBuilder<AAISubDetailsModel> = new JsonBuilder<AAISubDetailsModel>(); + + //describe('Contact us', () => { + + beforeEach(() => { + cy.login(); + cy.initAAIMock(); + + cy.readFile('/cypress/support/jsonBuilders/mocks/jsons/defect710619/aaiSubDetailsE2E.json').then((res) => { + jsonBuilderAAISubDetailsModel.basicJson( + res, + Cypress.config('baseUrl') + "/aai_sub_details/e433710f-9217-458d-a79d-1c7aff376d89**", + 200, + 0, + "aai-sub-details") + }); + + }); + + afterEach(() => { + cy.screenshot(); + }); + + it(`verifying + VNF changes`, function () { + cy.visit('/serviceModels.htm#/change-management'); + cy.getElementByDataTestsId('create-new-change-management').click(); + cy.getElementByDataTestsId('newChangeManagementForm'); + cy.selectDropdownOptionByText('subscriberName', 'SILVIA ROBBINS'); + cy.selectDropdownOptionByText('serviceType', 'TYLER SILVIA'); + }); +}); + + |