diff options
author | Ofir Sonsino <os0695@att.com> | 2017-09-20 13:20:42 +0300 |
---|---|---|
committer | Ofir Sonsino <os0695@att.com> | 2017-09-20 13:37:03 +0300 |
commit | 9dfd7e28c1eb348fcb4a2de8c6faae2a01b34942 (patch) | |
tree | c273862f59b0b64c19ccfea5f59ab574071cb323 /vid-app-common/src/test/resources/WEB-INF/jsp | |
parent | c3722d135481cfab5978c84853d8229d1e7d9cb3 (diff) |
Global Read only role, Support VID specific Roles
Issue-ID: VID-46 , VID-47
Change-Id: Ib100d20ac40a65d39e27a6e2741b19a173a2b8ea
Signed-off-by: Ofir Sonsino <os0695@att.com>
Diffstat (limited to 'vid-app-common/src/test/resources/WEB-INF/jsp')
10 files changed, 1172 insertions, 0 deletions
diff --git a/vid-app-common/src/test/resources/WEB-INF/jsp/createnewserviceinstance.jsp b/vid-app-common/src/test/resources/WEB-INF/jsp/createnewserviceinstance.jsp new file mode 100644 index 000000000..fd2030e6c --- /dev/null +++ b/vid-app-common/src/test/resources/WEB-INF/jsp/createnewserviceinstance.jsp @@ -0,0 +1,146 @@ +<script> +app.controller('createNewSIController',['$scope','$http',function ($scope,$http) { + + $scope.searchCategory = ""; + $scope.searchString = ""; + $scope.tableData=[]; + $scope.displayData=[]; + $scope.selectedSubscriber = $scope.tableData[0]; + $scope.selectedServiceType = "Select Service Type"; + function escapeRegExp(str) { + return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|\&]/g, " "); + } + $scope.serviceTypes=["Select Service Type", "uCPE-VMS", "SDN-L3-BONDING", "SDN-ETHERNET-INTERNET"]; + + $scope.getSubscribers = function(refresh){ + + var refreshTxt = 'refresh_subscribers'; + var getTxt = 'get_subscribers'; + var selectedTxt = getTxt; + if (refresh) + selectedTxt = refreshTxt; + $http.get(selectedTxt). + then(function(response){ + var data = JSON.parse(response.data.result); + $scope.tableData = data['customer']; + $scope.initSubscriberList(); + }) + .catch(function(data,status){ + console.log("Error: " + status + " : " + data); + }) + .finally(function() { + + }); + + } + + + $scope.initSubscriberList = function () { + //$scope.selectedSubscriber = $scope.selectedSubscriber['subscriber-name'] || $scope.tableData[0]['subscriber-name']; + $scope.selectedSubscriber = 'Select Subscriber Name'; + } + + $scope.initSrvcTypeList = function () { + $scope.selectedServiceType = $scope.serviceTypes[0]; + } + + $scope.getSubscriberDetails = function(selectedSubscriber){ + if (selectedSubscriber == 'Select Subscriber Name') + return; + $http.get('createsubscriber/' + encodeURIComponent(selectedSubscriber)). + then(function(response){ + // window.location.href = 'createsubscriberdetails.htm'; + }) + .catch(function(data,status){ + console.log("Error: " + status + " : " + data); + }) + .finally(function() { + + }); + } + + $scope.disableSubmitBtn = function (subName, svcType) { + return (typeof subName === "undefined") && (svcType == 'Select Service Type'); + //return (subName == 'Select Subscriber Name') && (svcType == 'Select Service Type'); + } + + $scope.cancelCreateSI = function(selectedSubscriber){ + + window.location.href = 'welcome.htm'; + + } + + $scope.getSubscribers(false); + //$scope.initSubscriberList(); + +}]); + + +</script> + +<div ng-controller="createNewSIController"> + + <h1 class="heading1"><center>Create New Service Instance</center></h1> + + +<BR> + <table> <tr> + + <td width="5%" align="left"> + <!-- <a ng-click="getSubscriberDetails(selectedSubscriber['global-customer-id']);" ng-disabled="disableSubmitBtn(selectedSubscriber['subscriber-name'], selectedServiceType);" ><img src="static/fusion/images/plus.png"></a>--> + <input type="image" ng-click="getSubscriberDetails(selectedSubscriber['global-customer-id']);" ng-disabled="disableSubmitBtn(selectedSubscriber['subscriber-name'], selectedServiceType);" src="static/fusion/images/plus.png"/> + </td> + + <td style="width:10%" align="left"><div class="fn-ebz-container"> + <label class="fn-ebz-text-label">Subscriber:</label> + </div> </td> + <td style="width:30%"><div class="fn-ebz-container"> + <select ng-model="selectedSubscriber" ng-options="resultdata['subscriber-name'] for resultdata in tableData" required> + <option value="">Select Subscriber Name</option> + </select> + </div></td> + <td width="5%" align="left"> + <input type="image" ng-click="getSubscribers(true);" src="static/fusion/images/refresh.jpg"/> + </td> + + <td width="5%"> </td> +<td style="width:10%" align="left"> + + + <div class="fn-ebz-container"> + <label class="fn-ebz-text-label">Service Type:</label> + </div> </td> + <td style="width:32%"><div class="fn-ebz-container"> + <select ng-model="selectedServiceType" ng-options="sType for sType in serviceTypes" ng-init="initSrvcTypeList();" ></select> + </div> </td> + + <td width="5%"> </td> + + </tr> + </table> + + <center> + <button type="cancel" ng-click="cancelCreateSI();" att-button size="small">Cancel</button> + </center> + + + +</div> +<!-- Temporary solution for footer overlapping the men after talking to EComp SDK developer on 06/16/2016 --> +<br> +<br> +<br> +<br> +<br> +<br> +<br> +<br> +<br> +<br> +<br> +<br> +<br> +<br> +<br> + + diff --git a/vid-app-common/src/test/resources/WEB-INF/jsp/login.jsp b/vid-app-common/src/test/resources/WEB-INF/jsp/login.jsp new file mode 100644 index 000000000..804c0bfea --- /dev/null +++ b/vid-app-common/src/test/resources/WEB-INF/jsp/login.jsp @@ -0,0 +1,125 @@ +<%@ page import="java.net.URLEncoder"%> +<%@ page import="org.openecomp.portalsdk.core.util.SystemProperties"%> +<% + // Requests are handled by class ProcessCspController in the EP-SDK-Core library. + // On login error, that controller returns a model that is a String->String map. + + // CSP property is defined in fusion.properties file + final String cspLoginUrl = SystemProperties.getProperty(SystemProperties.CSP_LOGIN_URL); + // Name is defined by app; do not throw if missing + final String appDisplayName = SystemProperties.containsProperty(SystemProperties.APP_DISPLAY_NAME) + ? SystemProperties.getProperty(SystemProperties.APP_DISPLAY_NAME) + : SystemProperties.APP_DISPLAY_NAME; + // Build login-link URL using parameters and/or system properties + String returnUrl = request.getParameter("returnUrl"); + if (returnUrl == null) { + final String cspPage = "doLogin"; + if (SystemProperties.containsProperty(SystemProperties.APP_BASE_URL)) { + // Use property with the application URL; e.g., WebJunction + String appUrl = SystemProperties.getProperty(SystemProperties.APP_BASE_URL); + returnUrl = appUrl + (appUrl.endsWith("/") ? "" : "/") + cspPage; + } else { + // Use server info; incorrect for sites behind WebJunction. + returnUrl = (request.isSecure() ? "https://" : "http://") + request.getServerName() + ":" + + request.getServerPort() + request.getContextPath() + "/" + cspPage; + } + } else { + // Request has a parameter with the return URL + returnUrl = URLEncoder.encode(returnUrl, "UTF-8"); + } +%> +<!DOCTYPE html> +<html> +<head> +<meta charset="utf-8"> +<meta http-equiv="X-UA-Compatible" content="IE=edge"> +<meta name="viewport" content="width=device-width, initial-scale=1"> +<!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags --> +<style> +html { + font-family: Verdana, Arial, Helvetica, sans-serif; +} + +body { + padding-top: 15px; +} + +.logo { + position: fixed; + left: 15px; + top: 15px; + z-index: -1; +} + +.loginError { + font-size: 18px; + color: red; + text-align: center; +} + +.login { + font-size: 16px; + display: block; + margin-left: auto; + margin-right: auto; + text-align: center; + width: 100%; +} + +.login a { + font-size: 16px; +} + +.terms { + font-size: 10px; + text-align: center; + margin-left: auto; + margin-right: auto; +} + +.terms a { + font-size: 10px; + text-align: center; + margin-left: auto; + margin-right: auto; +} +</style> +</head> +<body> + <!-- AT&T Logo --> + <div class="logo"> + <img src="static/fusion/images/logo_att_header.jpg" alt="AT&T" /> + </div> + <div class="login"> + <img src="static/fusion/images/ecomp-login-550x360.jpg" /> + <h2> + <%=appDisplayName%> + </h2> + <a href="<%=cspLoginUrl%><%=returnUrl%>">Click here to login</a> + </div> + <br /> + <br /> + <br /> + <div class="loginError">${model.error}</div> + <br /> + <br /> + <br /> + <br /> + <br /> + <br /> + <div id="footer"> + <div class="terms"> + Warning: This system is restricted to AT&T authorized users for + business purposes. Unauthorized access is a violation of the law. <br /> + This service may be monitored for administrative and security + reasons. By proceeding, you consent to this monitoring. + </div> + <p> + <div class="terms"> + <a target="_top" href="http://www.att.com/terms/">Terms and + Conditions</a> | <a target="_top" href="http://www.att.com/privacy/">Privacy + Policy</a> <br> © 2017 AT&T. All rights reserved. + </div> + </div> +</body> +</html> diff --git a/vid-app-common/src/test/resources/WEB-INF/jsp/login_external.jsp b/vid-app-common/src/test/resources/WEB-INF/jsp/login_external.jsp new file mode 100644 index 000000000..dfa3305fd --- /dev/null +++ b/vid-app-common/src/test/resources/WEB-INF/jsp/login_external.jsp @@ -0,0 +1,126 @@ +<%-- + ================================================================================ + ECOMP Portal SDK + ================================================================================ + Copyright (C) 2017 AT&T Intellectual Property + ================================================================================ + 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. + ================================================================================ +--%> +<%@ page import="org.openecomp.portalsdk.core.util.SystemProperties"%> +<!DOCTYPE html> +<% + // Name is defined by app; do not throw if missing + final String appDisplayName = SystemProperties.containsProperty(SystemProperties.APP_DISPLAY_NAME) + ? SystemProperties.getProperty(SystemProperties.APP_DISPLAY_NAME) + : SystemProperties.APP_DISPLAY_NAME; +%> + +<html> + <head> + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <style> + html { + font-family: Verdana, Arial, Helvetica, sans-serif; + } + body { + padding-top: 15px; + } + .logo { + position: fixed; + left: 15px; + top: 15px; + z-index: -1; + } + .loginError { + font-size: 18px; + color: red; + text-align: center; + } + .login { + font-size: 16px; + display: block; + margin-left: auto; + margin-right: auto; + text-align: center; + width: 100%; + } + .login input[type=submit] { + font-size: 16px; + } + .terms { + font-size: 10px; + text-align: center; + margin-left: auto; + margin-right: auto; + } + .terms a { + font-size: 10px; + text-align: center; + margin-left: auto; + margin-right: auto; + } + </style> + </head> + <body> + <!-- AT&T Logo --> + <div class="logo"> + <img src="static/fusion/images/logo_att_header.jpg" alt="AT&T" /> + </div> + <div class="login"> + <img src="static/fusion/images/ecomp_trans.png" /> + <h2> + <%=appDisplayName%> + </h2> + <br /> + <form action="login_external" method="POST"> + <label for="loginId">Login ID:</label> + <input id="loginId" name="loginId" type="text" style="width: 140px;height:25px;border-radius:7px;font-size:18px;padding-left:5px;" maxlength="30"> + <br/> + <br/> + <label for="password">Password:</label> + <input id="password" name="password" type="password" style="width: 140px;height:25px;border-radius:7px;font-size:18px;padding-left:5px;" + maxlength="30" > + <br /> + <br /> + <input id="loginBtn" type="submit" alt="Login" value="Login"> + </form> + </div> + <br /> + <br /> + <div class="loginError">${model.error}</div> + <br /> + <br /> + <br /> + <br /> + <br /> + <br /> + <div id="footer"> + <div class="terms"> + Warning: This system is restricted to AT&T authorized users for + business purposes. Unauthorized access is a violation of the law. + <br /> + This service may be monitored for administrative and security + reasons. By proceeding, you consent to this monitoring. + </div> + <p> + <div class="terms"> + <a target="_top" href="http://www.att.com/terms/">Terms and + Conditions</a> | <a target="_top" href="http://www.att.com/privacy/">Privacy + Policy</a> <br> © 2017 AT&T. All rights reserved. + </div> + </div> + </body> +</html> diff --git a/vid-app-common/src/test/resources/WEB-INF/jsp/searchexistingsi.jsp b/vid-app-common/src/test/resources/WEB-INF/jsp/searchexistingsi.jsp new file mode 100644 index 000000000..2c7dd9f5f --- /dev/null +++ b/vid-app-common/src/test/resources/WEB-INF/jsp/searchexistingsi.jsp @@ -0,0 +1,81 @@ +<link rel="stylesheet" type="text/css" href="app/vid/styles/subscriberSearch.css" /> + +<script src="app/vid/scripts/controller/VidApp.js"></script> +<script src="app/vid/scripts/controller/subscriberSearch.js"></script> + +<script src="app/vid/scripts/controller/aaiSubscriberController.js"></script> +<script src="app/vid/scripts/services/utilityService.js"></script> +<script src="app/vid/scripts/angular-ui-tree.js"></script> + +<link rel="stylesheet" type="text/css" href="app/vid/styles/dialogs.css" /> + +<script src="app/vid/test/testAaiData.js"></script> + +<script src="app/vid/scripts/controller/creationDialogController.js"></script> +<script src="app/vid/scripts/controller/deletionDialogController.js"></script> +<script src="app/vid/scripts/controller/detailsDialogController.js"></script> +<script src="app/vid/scripts/controller/statusDialogController.js"></script> +<script src="app/vid/scripts/controller/msoCommitController.js"></script> + +<script src="app/vid/scripts/services/aaiService.js"></script> +<script src="app/vid/scripts/services/asdcService.js"></script> +<script src="app/vid/scripts/services/creationService.js"></script> +<script src="app/vid/scripts/services/dataService.js"></script> +<script src="app/vid/scripts/services/deletionService.js"></script> +<script src="app/vid/scripts/services/detailsService.js"></script> +<script src="app/vid/scripts/services/statusService.js"></script> +<script src="app/vid/scripts/services/componentService.js"></script> +<script src="app/vid/scripts/services/msoService.js"></script> +<script src="app/vid/scripts/services/propertyService.js"></script> +<script src="app/vid/scripts/services/utilityService.js"></script> + +<script src="app/vid/scripts/directives/extensionsDirective.js"></script> +<script src="app/vid/scripts/directives/parameterBlockDirective.js"></script> +<script src="app/vid/scripts/directives/popupWindowDirective.js"></script> +<script src="app/vid/scripts/directives/progressBarDirective.js"></script> + +<script src="app/vid/scripts/constants/componentConstants.js"></script> +<script src="app/vid/scripts/constants/fieldConstants.js"></script> +<script src="app/vid/scripts/constants/parameterConstants.js"></script> + +<link rel="stylesheet" type="text/css" href="app/vid/styles/aaiGetSubs.css" /> +<link rel="stylesheet" type="text/css" href="app/vid/styles/aaiSubDetails.css" /> +<link rel="stylesheet" type="text/css" href="app/vid/styles/angular-ui-tree.css" /> +<link rel="stylesheet" type="text/css" href="app/vid/styles/vidTree.css" /> + +<%@ page import="org.openecomp.vid.mso.*"%> +<%@ page import="org.openecomp.portalsdk.core.util.SystemProperties"%> +<% + String properties = "{msoMaxPolls:" + SystemProperties.getProperty(MsoProperties.MSO_MAX_POLLS) + + ",msoMaxPollingIntervalMsec:" + + SystemProperties.getProperty(MsoProperties.MSO_POLLING_INTERVAL_MSECS) + "}"; +%> + +<div ng-controller="aaiSubscriberSearchController" + ng-init="init(<%=properties%>);" ng-cloak> + + + + <div ng-view></div> + +</div> + +<!-- Temporary solution for footer overlapping the men after talking to EComp SDK developer on 06/16/2016 --> + +<br> +<br> +<br> +<br> +<br> +<br> +<br> +<br> +<br> +<br> +<br> +<br> +<br> +<br> +<br> + +
\ No newline at end of file diff --git a/vid-app-common/src/test/resources/WEB-INF/jsp/serviceModels.jsp b/vid-app-common/src/test/resources/WEB-INF/jsp/serviceModels.jsp new file mode 100644 index 000000000..3280bc65a --- /dev/null +++ b/vid-app-common/src/test/resources/WEB-INF/jsp/serviceModels.jsp @@ -0,0 +1,82 @@ +<link rel="stylesheet" type="text/css" href="app/vid/styles/aaiGetSubs.css" /> +<link rel="stylesheet" type="text/css" href="app/vid/styles/aaiSubDetails.css" /> +<link rel="stylesheet" type="text/css" href="app/vid/styles/aaiSubViewEdit.css" /> +<link rel="stylesheet" type="text/css" href="app/vid/styles/angular-ui-tree.css" /> +<link rel="stylesheet" type="text/css" href="app/vid/styles/dialogs.css" /> +<link rel="stylesheet" type="text/css" href="app/vid/styles/instantiate.css" /> +<link rel="stylesheet" type="text/css" href="app/vid/styles/vidTree.css" /> +<link rel="stylesheet" type="text/css" href="app/vid/styles/dialogs.css" /> + + + <script> + + var appDS2 = app; +</script> + <script src="app/vid/scripts/controller/VidApp.js"></script> + +<!-- Latest compiled and minified JavaScript --> + +<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script> + + +<script src="app/vid/scripts/angular-ui-tree.js"></script> + +<script src="app/vid/scripts/constants/componentConstants.js"></script> +<script src="app/vid/scripts/constants/fieldConstants.js"></script> +<script src="app/vid/scripts/constants/vidConfiguration.js"></script> +<script src="app/vid/scripts/constants/parameterConstants.js"></script> +<script src="app/vid/scripts/controller/aaiSubscriberController.js"></script> +<script src="app/vid/scripts/controller/creationDialogController.js"></script> +<script src="app/vid/scripts/controller/deletionDialogController.js"></script> +<script src="app/vid/scripts/controller/detailsDialogController.js"></script> +<script src="app/vid/scripts/controller/statusDialogController.js"></script> +<script src="app/vid/scripts/controller/InstantiationController.js"></script> +<script src="app/vid/scripts/controller/msoCommitController.js"></script> +<script src="app/vid/scripts/controller/ServiceModelController.js"></script> +<script src="app/vid/scripts/controller/previousVersionDialogController.js"></script> +<script src="app/vid/scripts/controller/previousVersionContoller.js"></script> +<script src="app/vid/scripts/directives/extensionsDirective.js"></script> +<script src="app/vid/scripts/directives/parameterBlockDirective.js"></script> +<script src="app/vid/scripts/directives/popupWindowDirective.js"></script> +<script src="app/vid/scripts/directives/progressBarDirective.js"></script> +<script src="app/vid/scripts/services/aaiService.js"></script> +<script src="app/vid/scripts/services/asdcService.js"></script> +<script src="app/vid/scripts/services/componentService.js"></script> +<script src="app/vid/scripts/services/creationService.js"></script> +<script src="app/vid/scripts/services/dataService.js"></script> +<script src="app/vid/scripts/services/deletionService.js"></script> +<script src="app/vid/scripts/services/detailsService.js"></script> +<script src="app/vid/scripts/services/statusService.js"></script> +<script src="app/vid/scripts/services/msoService.js"></script> +<script src="app/vid/scripts/services/propertyService.js"></script> +<script src="app/vid/scripts/services/utilityService.js"></script> +<script src="app/vid/scripts/services/vnfService.js"></script> + +<%@ page import="org.openecomp.vid.mso.*"%> +<%@ page import="org.openecomp.portalsdk.core.util.SystemProperties"%> +<% + String properties = "{msoMaxPolls:" + SystemProperties.getProperty(MsoProperties.MSO_MAX_POLLS) + + ",msoMaxPollingIntervalMsec:" + + SystemProperties.getProperty(MsoProperties.MSO_POLLING_INTERVAL_MSECS) + "}"; +%> + +<div ng-controller="ServiceModelController" + ng-init="init(<%=properties%>);" ng-cloak> + <div ng-view></div> +</div> +<!-- Temporary solution for footer overlapping the men after talking to EComp SDK developer on 06/16/2016 --> +<br> +<br> +<br> +<br> +<br> +<br> +<br> +<br> +<br> +<br> +<br> +<br> +<br> +<br> +<br> diff --git a/vid-app-common/src/test/resources/WEB-INF/jsp/subscriberdetails.jsp b/vid-app-common/src/test/resources/WEB-INF/jsp/subscriberdetails.jsp new file mode 100644 index 000000000..ca92b1529 --- /dev/null +++ b/vid-app-common/src/test/resources/WEB-INF/jsp/subscriberdetails.jsp @@ -0,0 +1,184 @@ +<%@ include file="/WEB-INF/fusion/jsp/popup_modal.html" %> +<div ng-controller="subscriberDetailsController"> + <div> + <h1 class="heading1" style="margin-top:20px;">Selected Subscriber's Service Instance Details:</h1> + <div style="margin-top:30px"> + <table att-table table-data="tableData"> + + <thead att-table-row type="header"> + <tr> + <th att-table-header key="viewSubDetails">View/Edit</th> + <th att-table-header key="global-customer-id">Global Customer ID</th> + <th att-table-header key="subscriber-name">Subscriber Name</th> + <th att-table-header key="service-type">Service Type</th> + <th att-table-header key="service-instance-id">Service Instance ID</th> + </tr> + </thead> + <tbody att-table-row type="body" row-repeat="disData in displayData"> + <tr> + <td att-table-body> + <div ng-controller="viewEditSubController"> + <a href="#" ng-click="postsubscriberID(disData.subscriberName)" alt="View/Edit"> + View/Edit + </a> + </div> + </td> + <td att-table-body >{{disData.globalCustomerId}}</td> + <td att-table-body >{{disData.subscriberName}}</td> + <td att-table-body >{{disData.serviceType}}</td> + <td att-table-body >{{disData.serviceInstanceId}}</td> + </tr> + </tbody> + </table> + </div> + </div> + <table><tr> + <td> + <div ng-controller="searchExistingSIController" align="left" > + <button type="submit" ng-click="cancelSubDetails();" att-button + btn-type="primary" size="small">Cancel</button> + </div> + </td></tr> + + </table> + +</div> +<!-- Temporary solution for footer overlapping the men after talking to EComp SDK developer on 06/25/2016 --> + +<br> +<br> +<br> +<br> +<br> +<br> +<br> +<br> +<br> +<br> +<br> +<br> +<br> +<br> +<br> + +<script> +app.controller("subscriberDetailsController", function ($scope,$http,modalService, $modal) { + $scope.tableData=${model.customerInfo}; + $scope.displayData= []; + $scope.subscriberData=[]; + $scope.serviceInstanceData= new Array(); + $scope.globalcustomerid = $scope.tableData['global-customer-id']; + $scope.subscriberName = $scope.tableData['subscriber-name']; + $scope.subscriberData = $scope.tableData['service-subscriptions']; + + $scope.setDisplaynoSTSI = function(){ + $scope.displayData.push({ + globalCustomerId : $scope.globalcustomerid, + subscriberName : $scope.subscriberName, + serviceType : "No Service Subscription Found", + serviceInstanceId : "No Service Instance Found" + }); + } + + $scope.setDisplaynoSI = function(servcType){ + $scope.displayData.push({ + globalCustomerId : $scope.globalcustomerid, + subscriberName : $scope.subscriberName, + serviceType : servcType, + serviceInstanceId : "No Service Instance Found" + }); + } + + if ($scope.subscriberData != null) + { + if ($scope.numberofSubscribers = $scope.subscriberData['service-subscription'] != null) + { + $scope.numberofSubscribers = $scope.subscriberData['service-subscription'].length; + if ($scope.numberofSubscribers > 0) + { + var index = 0; + for(i=0; i < $scope.numberofSubscribers; i++) { + $scope.serviceInstanceData[i] = new Array(); + var servicesubscription = $scope.subscriberData['service-subscription'][i]; + $scope.serviceInstanceData[i] = servicesubscription['service-instances']; + if ($scope.serviceInstanceData[i] != null) + { + if ($scope.serviceInstanceData[i]['service-instance'] != null) + { + var numberofserviceInstance = $scope.serviceInstanceData[i]['service-instance'].length; + if (numberofserviceInstance > 0) + { + for(j=0; j < numberofserviceInstance; j++) + { + $scope.displayData.push({ + globalCustomerId : $scope.globalcustomerid, + subscriberName : $scope.subscriberName, + serviceType : servicesubscription['service-type'], + serviceInstanceId : $scope.serviceInstanceData[i]['service-instance'][j]['service-instance-id'] + }); + } + } + else + { + $scope.setDisplaynoSI(servicesubscription['service-type']); + } + } + else + { + $scope.setDisplaynoSI(servicesubscription['service-type']); + } + } + else + { + $scope.setDisplaynoSI(servicesubscription['service-type']); + } + } + } + else + { + $scope.setDisplaynoSTSI(); + } + } + else + { + $scope.setDisplaynoSTSI(); + } + } + else + { + $scope.setDisplaynoSTSI(); + } + + +}); + +app.controller('viewEditSubController',['$scope','$http',function ($scope,$http) { + + $scope.postsubscriberID = function(subID){ + $.ajax({ + url: "vieweditsub/subedit?"+"subscriberID="+encodeURIComponent(subID), + type : "POST", + success:function (response){ + window.location.href = 'instantiate.htm'; + }, + error:function( jqXHR, status,error ){ + $("#errorInfo").show(); + } + + }); + } + +}]); + +app.controller('searchExistingSIController',['$scope','$http',function ($scope,$http) { + + $scope.cancelSubDetails = function(selectedSubscriber){ + + window.location.href = 'searchexistingsi.htm'; + + } + +}]); +</script> + + diff --git a/vid-app-common/src/test/resources/WEB-INF/jsp/testMso.jsp b/vid-app-common/src/test/resources/WEB-INF/jsp/testMso.jsp new file mode 100644 index 000000000..abcc8e26d --- /dev/null +++ b/vid-app-common/src/test/resources/WEB-INF/jsp/testMso.jsp @@ -0,0 +1,174 @@ +<link rel="stylesheet" type="text/css" href="app/vid/test/testMso.css" /> +<script src="app/vid/test/testMso.js"></script> + +<link rel="stylesheet" type="text/css" href="app/vid/styles/dialogs.css" /> + +<script src="app/vid/scripts/controller/msoCommitController.js"></script> +<script src="app/vid/scripts/controller/detailsDialogController.js"></script> +<script src="app/vid/scripts/controller/statusDialogController.js"></script> + +<script src="app/vid/scripts/services/dataService.js"></script> +<script src="app/vid/scripts/services/detailsService.js"></script> +<script src="app/vid/scripts/services/statusService.js"></script> +<script src="app/vid/scripts/services/componentService.js"></script> +<script src="app/vid/scripts/services/propertyService.js"></script> +<script src="app/vid/scripts/services/msoService.js"></script> +<script src="app/vid/scripts/services/utilityService.js"></script> + +<script src="app/vid/scripts/directives/extensionsDirective.js"></script> +<script src="app/vid/scripts/directives/parameterBlockDirective.js"></script> +<script src="app/vid/scripts/directives/popupWindowDirective.js"></script> +<script src="app/vid/scripts/directives/progressBarDirective.js"></script> + +<script src="app/vid/scripts/constants/componentConstants.js"></script> +<script src="app/vid/scripts/constants/fieldConstants.js"></script> +<script src="app/vid/scripts/constants/parameterConstants.js"></script> + +<!-- + Read configuration properties from server-side properties settings and + pass to the test controller via the ng-include onload event. + + Consider / investigate replacing this approach with an alternative + REST / Angular mechanism. +--> +<%@ page import="org.openecomp.vid.mso.*"%> +<%@ page import="org.openecomp.portalsdk.core.util.SystemProperties"%> +<% + String properties = "{msoMaxPolls:" + SystemProperties.getProperty(MsoProperties.MSO_MAX_POLLS) + + ",msoMaxPollingIntervalMsec:" + + SystemProperties.getProperty(MsoProperties.MSO_POLLING_INTERVAL_MSECS) + "}"; +%> + +<div ng-controller="testController" ng-init="init(<%=properties%>);" + ng-cloak> + <div popup-window class="popupContents" ngx-show="{{popup.isVisible}}" + ng-cloak> + <div ng-include="'app/vid/scripts/view-models/msoCommit.htm'" + onload="autoStartCommitTest();"></div> + <div ng-include="'app/vid/scripts/view-models/detailsDialog.htm'" + onload="autoStartQueryTest();"></div> + </div> + + <h1 class="heading2"> + <center>Various MSO Tests</center> + </h1> + <div> + <input type="checkbox" ng-change="testMsoModeChanged();" + ng-model="isTestMsoMode"></input> <span>Use test MSO + controller</span> + </div> + <div> + <h3>These actions are expected to return successfully.</h3> + <button type="button" ng-click="queryServiceInstance();" att-button + btn-type="primary" size="small">Query Service Instance</button> + <button type="button" ng-click="createServiceInstance();" att-button + btn-type="primary" size="small">Create Service Instance</button> + <button type="button" ng-click="deleteServiceInstance();" att-button + btn-type="primary" size="small">Delete Service Instance</button> + <button type="button" ng-click="createNetworkInstance();" att-button + btn-type="primary" size="small">Create Network Instance</button> + <button type="button" ng-click="deleteNetworkInstance();" att-button + btn-type="primary" size="small">Delete Network Instance</button> + <button type="button" ng-click="createVNFInstance();" att-button + btn-type="primary" size="small">Create VNF Instance</button> + <button type="button" ng-click="deleteVNFInstance();" att-button + btn-type="primary" size="small">Delete VNF Instance</button> + <button type="button" ng-click="createVolumeGroupInstance();" + att-button btn-type="primary" size="small">Create Volume + Group</button> + <button type="button" ng-click="deleteVolumeGroupInstance();" + att-button btn-type="primary" size="small">Delete Volume + Group</button> + <button type="button" ng-click="createVFModuleInstance();" att-button + btn-type="primary" size="small">Create VF Module</button> + <button type="button" ng-click="deleteVFModuleInstance();" att-button + btn-type="primary" size="small">Delete VF Module</button> + </div> + <hr /> + <h3>These actions are expected to generate errors. These tests assume the above + "Use test MSO controller" checkbox is checked. All tests are base on the Create Service + Instance transaction.</h3> + <ol> + <li> + <button type="button" + ng-click="generateError('ERROR_POLICY_EXCEPTION');" att-button + btn-type="primary" size="small">Policy Exception</button> <span>Initial + response contains policy exception</span> + </li> + <li> + <button type="button" + ng-click="generateError('ERROR_SERVICE_EXCEPTION');" att-button + btn-type="primary" size="small">Service Exception</button> <span>Initial + response contains service exception</span> + </li> + <li> + <button type="button" ng-click="generateError('ERROR_POLL_FAILURE');" + att-button btn-type="primary" size="small">Poll Failure</button> <span>Subsequent + getOrchestrationRequest poll response contains MSO failure condition</span> + </li> + <li> + <button type="button" + ng-click="generateError('ERROR_INVALID_FIELD_INITIAL');" att-button + btn-type="primary" size="small">Initial Invalid</button> <span>Initial + response contains invalid data field</span> + </li> + <li> + <button type="button" + ng-click="generateError('ERROR_INVALID_FIELD_POLL');" att-button + btn-type="primary" size="small">Poll Invalid</button> <span>Subsequent + getOrchestrationRequest poll response contains invalid data field</span> + </li> + <li> + <button type="button" + ng-click="generateError('ERROR_GENERAL_SERVER_EXCEPTION');" + att-button btn-type="primary" size="small">Server Exception</button> + <span>VID controller code generates general exception</span> + </li> + <li> + <button type="button" ng-click="generateError('ERROR_MAX_POLLS');" + att-button btn-type="primary" size="small">Maximum Polls</button> <span>Maximum + poll attempts exceeded</span> + </li> + <li> + <button type="button" + ng-click="generateError('ERROR_SERVER_TIMEOUT_INITIAL');" att-button + btn-type="primary" size="small">Initial Timeout</button> <span>Timeout + on initial response</span> + </li> + <li> + <button type="button" + ng-click="generateError('ERROR_SERVER_TIMEOUT_POLL');" att-button + btn-type="primary" size="small">Poll Timeout</button> <span>Timeout + on subsequent getOrchestrationRequest poll response</span> + </li> + <li> + <button type="button" ng-click="generateInvalidUrl404();" att-button + btn-type="primary" size="small">Invalid URL (404)</button> <span>GUI + front-end specifies invalid URL - HTTP 404 response expected</span> + </li> + <li> + <button type="button" ng-click="generateInvalidUrl405();" att-button + btn-type="primary" size="small">Invalid URL (405)</button> <span>GUI + front-end specifies invalid URL - HTTP 405 response expected</span> + </li> + </ol> + +</div> +<!-- Temporary solution for footer overlapping the men after talking to EComp SDK developer on 06/16/2016 --> + +<br> +<br> +<br> +<br> +<br> +<br> +<br> +<br> +<br> +<br> +<br> +<br> +<br> +<br> +<br> + diff --git a/vid-app-common/src/test/resources/WEB-INF/jsp/testViewEdit.jsp b/vid-app-common/src/test/resources/WEB-INF/jsp/testViewEdit.jsp new file mode 100644 index 000000000..031fedf8c --- /dev/null +++ b/vid-app-common/src/test/resources/WEB-INF/jsp/testViewEdit.jsp @@ -0,0 +1,172 @@ +<link rel="stylesheet" type="text/css" + href="app/vid/test/testViewEdit.css" /> + +<script src="app/vid/test/testAaiData.js"></script> +<script src="app/vid/test/testViewEdit.js"></script> + +<link rel="stylesheet" type="text/css" href="app/vid/styles/dialogs.css" /> + +<script src="app/vid/scripts/controller/creationDialogController.js"></script> +<script src="app/vid/scripts/controller/deletionDialogController.js"></script> +<script src="app/vid/scripts/controller/detailsDialogController.js"></script> +<script src="app/vid/scripts/controller/statusDialogController.js"></script> +<script src="app/vid/scripts/controller/msoCommitController.js"></script> + +<script src="app/vid/scripts/services/aaiService.js"></script> +<script src="app/vid/scripts/services/asdcService.js"></script> +<script src="app/vid/scripts/services/creationService.js"></script> +<script src="app/vid/scripts/services/dataService.js"></script> +<script src="app/vid/scripts/services/deletionService.js"></script> +<script src="app/vid/scripts/services/detailsService.js"></script> +<script src="app/vid/scripts/services/statusService.js"></script> +<script src="app/vid/scripts/services/componentService.js"></script> +<script src="app/vid/scripts/services/msoService.js"></script> +<script src="app/vid/scripts/services/propertyService.js"></script> +<script src="app/vid/scripts/services/utilityService.js"></script> + +<script src="app/vid/scripts/directives/extensionsDirective.js"></script> +<script src="app/vid/scripts/directives/parameterBlockDirective.js"></script> +<script src="app/vid/scripts/directives/popupWindowDirective.js"></script> +<script src="app/vid/scripts/directives/progressBarDirective.js"></script> + +<script src="app/vid/scripts/constants/componentConstants.js"></script> +<script src="app/vid/scripts/constants/fieldConstants.js"></script> +<script src="app/vid/scripts/constants/parameterConstants.js"></script> + +<!-- + Read configuration properties from server-side properties settings and + pass to the test controller via the ng-include onload event. + + Consider / investigate replacing this approach with an alternative + REST / Angular mechanism. +--> +<%@ page import="org.openecomp.vid.mso.*"%> +<%@ page import="org.openecomp.portalsdk.core.util.SystemProperties"%> +<% + String properties = "{msoMaxPolls:" + SystemProperties.getProperty(MsoProperties.MSO_MAX_POLLS) + + ",msoMaxPollingIntervalMsec:" + + SystemProperties.getProperty(MsoProperties.MSO_POLLING_INTERVAL_MSECS) + "}"; +%> + +<div ng-controller="testViewEditController" + ng-init="init(<%=properties%>);" ng-cloak> + + <div popup-window class="popupContents" ngx-show="{{popup.isVisible}}" + ng-cloak> + <div ng-include="'app/vid/scripts/view-models/creationDialog.htm'"></div> + <div ng-include="'app/vid/scripts/view-models/deletionDialog.htm'"></div> + <div ng-include="'app/vid/scripts/view-models/detailsDialog.htm'" + onload="autoStartTest();"></div> + </div> + + <h1 class="heading2"> + <center>Test View Edit Page</center> + </h1> + <hr /> + These buttons simulate the add, delete and "show details" (called + "script" in User Stories) icons (or buttons) that are expected on the + view / edit page. + <hr /> + <div> + <input type="checkbox" ng-change="testMsoModeChanged();" + ng-model="isTestMsoMode"></input> <span>Use test MSO + controller</span> + </div> + <h3 ng-style="callbackStyle">CALLBACK: {{callbackResults}}</h3> + <table> + <tr> + <td>Service</td> + <td> + <button type="button" ng-click="createService();" att-button + btn-type="primary" size="small">Add</button> + </td> + <td> + <button type="button" ng-click="deleteService();" att-button + btn-type="primary" size="small">Delete</button> + </td> + <td> + <button type="button" ng-click="showServiceDetails();" att-button + btn-type="primary" size="small">Show Details</button> + </td> + </tr> + <tr> + <td>VNF</td> + <td> + <button type="button" ng-click="createVnf();" att-button + btn-type="primary" size="small">Add</button> + </td> + <td> + <button type="button" ng-click="deleteVnf();" att-button + btn-type="primary" size="small">Delete</button> + </td> + <td> + <button type="button" ng-click="showVnfDetails();" att-button + btn-type="primary" size="small">Show Details</button> + </td> + </tr> + <tr> + <td>VF Module</td> + <td> + <button type="button" ng-click="createVfModule();" att-button + btn-type="primary" size="small">Add</button> + </td> + <td> + <button type="button" ng-click="deleteVfModule();" att-button + btn-type="primary" size="small">Delete</button> + </td> + <td> + <button type="button" ng-click="showVfModuleDetails();" att-button + btn-type="primary" size="small">Show Details</button> + </td> + </tr> + <tr> + <td>Volume Group</td> + <td> + <button type="button" ng-click="createVolumeGroup();" att-button + btn-type="primary" size="small">Add</button> + </td> + <td> + <button type="button" ng-click="deleteVolumeGroup();" att-button + btn-type="primary" size="small">Delete</button> + </td> + <td> + <button type="button" ng-click="showVolumeGroupDetails();" + att-button btn-type="primary" size="small">Show Details</button> + </td> + </tr> + <tr> + <td>Network</td> + <td> + <button type="button" ng-click="createNetwork();" att-button + btn-type="primary" size="small">Add</button> + </td> + <td> + <button type="button" ng-click="deleteNetwork();" att-button + btn-type="primary" size="small">Delete</button> + </td> + <td> + <button type="button" ng-click="showNetworkDetails();" att-button + btn-type="primary" size="small">Show Details</button> + </td> + </tr> + </table> +</div> + +<!-- Temporary solution for footer overlapping the men after talking to EComp SDK developer on 06/16/2016 --> + +<br> +<br> +<br> +<br> +<br> +<br> +<br> +<br> +<br> +<br> +<br> +<br> +<br> +<br> +<br> + diff --git a/vid-app-common/src/test/resources/WEB-INF/jsp/viewlog.jsp b/vid-app-common/src/test/resources/WEB-INF/jsp/viewlog.jsp new file mode 100644 index 000000000..920298e18 --- /dev/null +++ b/vid-app-common/src/test/resources/WEB-INF/jsp/viewlog.jsp @@ -0,0 +1,33 @@ + + +<div ng-controller="viewLogController"> + + <h1 class="heading1"><center>View Log - Page under Construction...</center></h1> + <br> + + +</div> +<!-- Temporary solution for footer overlapping the men after talking to EComp SDK developer on 06/16/2016 --> +<br> +<br> +<br> +<br> +<br> +<br> +<br> +<br> +<br> +<br> +<br> +<br> +<br> +<br> +<br> +<br> +<br> +<br> +<br> +<br> +<br> + + diff --git a/vid-app-common/src/test/resources/WEB-INF/jsp/welcome.jsp b/vid-app-common/src/test/resources/WEB-INF/jsp/welcome.jsp new file mode 100644 index 000000000..dcd996892 --- /dev/null +++ b/vid-app-common/src/test/resources/WEB-INF/jsp/welcome.jsp @@ -0,0 +1,49 @@ + +<div> + <h1 class="heading1">AT&T Domain 2.0 Network</h1> + <br> + <h1 class="heading1"><u>Welcome to VID</u></h1> + <br> + The Virtual Infrastructure Deployment (VID) application allows infrastructure service deployment operators + to instantiate service instances and their constituent parts for Distributed service models required by the + internal AT&T service operations organizations that manage them, such as Mobility Network Services, + Netbond Services, or FlexReach Services. The models are defined by ECOMP component ASDC. The service + deployment operator selects the service operations owner and model that they wish to instantiate. After + entry of appropriate data, the operator instructs VID to direct another ECOMP component, MSO, to instantiate + the selected service model. Once the service instance has been instantiated, the service operator can instruct + VID to direct MSO to instantiate the service instance's component VNFs, VF Modules, Networks and Volume Groups. + The VID user can also search for, and display, existing service instances and direct the instantiation of + subsequent instance components. + <br><br> + <h1 class="heading1"><u>About VID</u></h1> + VID was originally developed for the October 2016 release by an integrated IT and Labs team, under the + direction of Steve Smokowski and Vivian Pressley. + <br><br> + <h1 class="heading1"><a href="mailto:DL-VIDDeliveryTeam@att.com" target="_top">Contact Us</a></h1> + <a href="mailto:DL-VIDDeliveryTeam@att.com" target="_top">Please click here to contact us.</a> + + + +<BR> + + + +</div> +<!-- Temporary solution for footer overlapping the men after talking to EComp SDK developer on 06/16/2016 --> +<br> +<br> +<br> +<br> +<br> +<br> +<br> +<br> +<br> +<br> +<br> +<br> +<br> +<br> +<br> + + |