aboutsummaryrefslogtreecommitdiffstats
path: root/vid-app-common/src/test/resources/WEB-INF/jsp
diff options
context:
space:
mode:
authorOfir Sonsino <os0695@att.com>2017-09-20 13:20:42 +0300
committerOfir Sonsino <os0695@att.com>2017-09-20 13:37:03 +0300
commit9dfd7e28c1eb348fcb4a2de8c6faae2a01b34942 (patch)
treec273862f59b0b64c19ccfea5f59ab574071cb323 /vid-app-common/src/test/resources/WEB-INF/jsp
parentc3722d135481cfab5978c84853d8229d1e7d9cb3 (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')
-rw-r--r--vid-app-common/src/test/resources/WEB-INF/jsp/createnewserviceinstance.jsp146
-rw-r--r--vid-app-common/src/test/resources/WEB-INF/jsp/login.jsp125
-rw-r--r--vid-app-common/src/test/resources/WEB-INF/jsp/login_external.jsp126
-rw-r--r--vid-app-common/src/test/resources/WEB-INF/jsp/searchexistingsi.jsp81
-rw-r--r--vid-app-common/src/test/resources/WEB-INF/jsp/serviceModels.jsp82
-rw-r--r--vid-app-common/src/test/resources/WEB-INF/jsp/subscriberdetails.jsp184
-rw-r--r--vid-app-common/src/test/resources/WEB-INF/jsp/testMso.jsp174
-rw-r--r--vid-app-common/src/test/resources/WEB-INF/jsp/testViewEdit.jsp172
-rw-r--r--vid-app-common/src/test/resources/WEB-INF/jsp/viewlog.jsp33
-rw-r--r--vid-app-common/src/test/resources/WEB-INF/jsp/welcome.jsp49
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 00000000..fd2030e6
--- /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 00000000..804c0bfe
--- /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&amp;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> &copy; 2017 AT&amp;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 00000000..dfa3305f
--- /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&amp;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> &copy; 2017 AT&amp;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 00000000..2c7dd9f5
--- /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 00000000..3280bc65
--- /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 00000000..ca92b152
--- /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 00000000..abcc8e26
--- /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 00000000..031fedf8
--- /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 00000000..920298e1
--- /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 00000000..dcd99689
--- /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>
+
+