This is an automated email from the ASF dual-hosted git repository. atkach pushed a commit to branch trunk in repository https://gitbox.apache.org/repos/asf/ambari.git
commit a030fe12d62f7a74c4602b2110c5df438dc82403 Author: Andrii Tkach <[email protected]> AuthorDate: Fri Dec 21 14:38:56 2018 +0200 AMBARI-25066 Update AngularJS version to 1.7.5 due to known vulnerabilities --- .../main/resources/ui/admin-web/app/scripts/app.js | 41 ---------------- .../admin-web/app/scripts/controllers/AppCtrl.js | 2 + .../controllers/ambariViews/ViewsEditCtrl.js | 6 +-- .../remoteClusters/RemoteClustersListCtrl.js | 2 +- .../admin-web/app/scripts/directives/linkToDir.js | 2 +- .../ui/admin-web/app/scripts/services/Cluster.js | 26 +++++------ .../ui/admin-web/app/scripts/services/Group.js | 20 ++++---- .../app/scripts/services/RemoteCluster.js | 42 ++++++++--------- .../ui/admin-web/app/scripts/services/Stack.js | 54 +++++++++++----------- .../ui/admin-web/app/scripts/services/View.js | 54 +++++++++++----------- .../ui/admin-web/app/views/ambariViews/edit.html | 10 ++-- .../admin-web/app/views/ambariViews/viewsList.html | 4 +- .../app/views/clusters/clusterInformation.html | 2 +- .../remoteClusters/editRemoteClusterPage.html | 2 +- .../admin-web/app/views/remoteClusters/list.html | 4 +- .../views/remoteClusters/remoteClusterPage.html | 2 +- .../resources/ui/admin-web/app/views/sideNav.html | 12 ++--- .../ui/admin-web/app/views/stackVersions/list.html | 6 +-- .../app/views/stackVersions/stackVersionPage.html | 2 +- .../app/views/userManagement/groupEdit.html | 6 +-- .../admin-web/app/views/userManagement/main.html | 4 +- .../app/views/userManagement/userEdit.html | 6 +-- .../app/views/userManagement/usersList.html | 2 +- .../src/main/resources/ui/admin-web/bower.json | 12 ++--- .../main/admin/stack_upgrade/versions_view.js | 2 +- .../main/admin/stack_upgrade/version_view_test.js | 4 +- 26 files changed, 145 insertions(+), 184 deletions(-) diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/app.js b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/app.js index 259536d..b3f67ab 100644 --- a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/app.js +++ b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/app.js @@ -87,47 +87,6 @@ angular.module('ambariAdminConsole', [ }]); $httpProvider.interceptors.push('TimestampHttpInterceptor'); - $provide.decorator('ngFormDirective', ['$delegate', function($delegate) { - var ngForm = $delegate[0], controller = ngForm.controller; - ngForm.controller = ['$scope', '$element', '$attrs', '$injector', function(scope, element, attrs, $injector) { - var $interpolate = $injector.get('$interpolate'); - attrs.$set('name', $interpolate(attrs.name || '')(scope)); - $injector.invoke(controller, this, { - '$scope': scope, - '$element': element, - '$attrs': attrs - }); - }]; - return $delegate; - }]); - - $provide.decorator('ngModelDirective', ['$delegate', function($delegate) { - var ngModel = $delegate[0], controller = ngModel.controller; - ngModel.controller = ['$scope', '$element', '$attrs', '$injector', function(scope, element, attrs, $injector) { - var $interpolate = $injector.get('$interpolate'); - attrs.$set('name', $interpolate(attrs.name || '')(scope)); - $injector.invoke(controller, this, { - '$scope': scope, - '$element': element, - '$attrs': attrs - }); - }]; - return $delegate; - }]); - - $provide.decorator('formDirective', ['$delegate', function($delegate) { - var form = $delegate[0], controller = form.controller; - form.controller = ['$scope', '$element', '$attrs', '$injector', function(scope, element, attrs, $injector) { - var $interpolate = $injector.get('$interpolate'); - attrs.$set('name', $interpolate(attrs.name || attrs.ngForm || '')(scope)); - $injector.invoke(controller, this, { - '$scope': scope, - '$element': element, - '$attrs': attrs - }); - }]; - return $delegate; - }]); $provide.decorator('$exceptionHandler', ['$delegate', 'Utility', '$window', function ($delegate, Utility, $window) { return function (error, cause) { diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/AppCtrl.js b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/AppCtrl.js index eb9a9b0..a659dc15 100644 --- a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/AppCtrl.js +++ b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/AppCtrl.js @@ -44,6 +44,8 @@ angular.module('ambariAdminConsole') Utility.getUserPref('user-pref-' + Auth.getCurrentUser() + '-supports').then(function (data) { $rootScope.supports = data.data ? data.data : {}; + }).catch(function() { + console.warn('user-pref-' + Auth.getCurrentUser() + '-supports is missing'); }); $http.get(Settings.baseUrl + '/users/' + Auth.getCurrentUser() + '/authorizations?fields=*') diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/ambariViews/ViewsEditCtrl.js b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/ambariViews/ViewsEditCtrl.js index b852b39..1f35662 100644 --- a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/ambariViews/ViewsEditCtrl.js +++ b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/ambariViews/ViewsEditCtrl.js @@ -262,7 +262,7 @@ angular.module('ambariAdminConsole') } }); return View.updateInstance($routeParams.viewId, $routeParams.version, $routeParams.instanceId, data) - .success(function() { + .then(function() { if( callback ){ callback(); } else { @@ -293,7 +293,7 @@ angular.module('ambariAdminConsole') } }; return View.updateInstance($routeParams.viewId, $routeParams.version, $routeParams.instanceId, data) - .success(function() { + .then(function() { $scope.$root.$emit('instancesUpdate'); if( callback ){ callback(); @@ -358,7 +358,7 @@ angular.module('ambariAdminConsole') $scope.originalClusterType = $scope.data.clusterType; return View.updateInstance($routeParams.viewId, $routeParams.version, $routeParams.instanceId, data) - .success(function() { + .then(function() { $scope.editConfigurationDisabled = true; $scope.propertiesForm.$setPristine(); }) diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/remoteClusters/RemoteClustersListCtrl.js b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/remoteClusters/RemoteClustersListCtrl.js index 5944d20..516a392 100644 --- a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/remoteClusters/RemoteClustersListCtrl.js +++ b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/remoteClusters/RemoteClustersListCtrl.js @@ -82,7 +82,7 @@ function ($scope, $routeParams, $translate, RemoteCluster, Settings, Pagination, Filters.initFilterOptions($scope.filters, $scope.remoteClusters); }) .catch(function (data) { - console.error($t('remoteClusters.alerts.fetchError'), data); + console.warn($t('remoteClusters.alerts.fetchError'), data); }); } diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/directives/linkToDir.js b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/directives/linkToDir.js index 72f8a8c..9a68ffe 100644 --- a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/directives/linkToDir.js +++ b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/directives/linkToDir.js @@ -28,7 +28,7 @@ angular.module('ambariAdminConsole') id: '@' }, - template: '<a href="#{{href}}" ng-transclude></a>', + template: '<a href="#!{{href}}" ng-transclude></a>', controller: ['$scope', 'ROUTES', function($scope, ROUTES) { var route = ROUTES; angular.forEach($scope.route.split('.'), function(routeObj) { diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/Cluster.js b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/Cluster.js index 6731317..de187c3 100644 --- a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/Cluster.js +++ b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/Cluster.js @@ -122,8 +122,8 @@ angular.module('ambariAdminConsole') 'PermissionInfo/resource_name': 'CLUSTER' } }) - .success(function(data) { - deferred.resolve(data.items); + .then(function(data) { + deferred.resolve(data.data.items); }) .catch(function(data) { deferred.reject(data); }); @@ -164,9 +164,9 @@ angular.module('ambariAdminConsole') fields: 'PermissionInfo/*,authorizations/AuthorizationInfo/*' } }) - .success(function (data) { - rolesWithAuthorizations = data.items; - deferred.resolve(data.items); + .then(function (data) { + rolesWithAuthorizations = data.data.items; + deferred.resolve(data.data.items); }) .catch(function (data) { deferred.reject(data); @@ -186,8 +186,8 @@ angular.module('ambariAdminConsole') 'fields': 'privileges/PrivilegeInfo' } }) - .success(function(data) { - deferred.resolve(data.privileges); + .then(function(data) { + deferred.resolve(data.data.privileges); }) .catch(function(data) { deferred.reject(data); @@ -205,8 +205,8 @@ angular.module('ambariAdminConsole') method : 'GET', url : Settings.baseUrl + endpoint + '?' + 'fields=privileges/PrivilegeInfo/*' + nameFilter }) - .success(function(data) { - deferred.resolve(data); + .then(function(data) { + deferred.resolve(data.data); }) .catch(function(data) { deferred.reject(data); @@ -265,8 +265,8 @@ angular.module('ambariAdminConsole') method: 'GET', url: Settings.baseUrl + '/clusters/' + clusterName + '?' + 'format=blueprint' }) - .success(function(data) { - deferred.resolve(data); + .then(function(data) { + deferred.resolve(data.data); }) .catch(function(data) { deferred.reject(data); @@ -279,8 +279,8 @@ angular.module('ambariAdminConsole') var url = Settings.baseUrl + '/clusters/' + clusterName + '/stack_versions?fields=*&ClusterStackVersions/repository_version=' + repoId; $http.get(url, {mock: 'cluster/repoVersionStatus.json'}) - .success(function (data) { - data = data.items; + .then(function (data) { + data = data.data.items; var response = {}; if (data.length > 0) { var hostStatus = data[0].ClusterStackVersions.host_states; diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/Group.js b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/Group.js index dc6d351..fd6f4fd 100644 --- a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/Group.js +++ b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/Group.js @@ -56,10 +56,10 @@ angular.module('ambariAdminConsole') Group.prototype.destroy = function() { var deferred = $q.defer(); $http.delete(Settings.baseUrl + '/groups/' +this.group_name) - .success(function() { + .then(function() { deferred.resolve(); }) - .error(function(data) { + .catch(function(data) { deferred.reject(data); }); @@ -83,10 +83,10 @@ angular.module('ambariAdminConsole') url: Settings.baseUrl + '/groups/' + this.group_name + '/members', data: members }) - .success(function(data) { - deferred.resolve(data); + .then(function(data) { + deferred.resolve(data.data); }) - .error(function(data) { + .catch(function(data) { deferred.reject(data); }); return deferred.promise; @@ -104,10 +104,10 @@ angular.module('ambariAdminConsole') var deferred = $q.defer(); $http.get(Settings.baseUrl + '/groups?fields=*') - .success(function(data) { - deferred.resolve(data.items); + .then(function(data) { + deferred.resolve(data.data.items); }) - .error(function(data) { + .catch(function(data) { deferred.reject(data); }); @@ -134,8 +134,8 @@ angular.module('ambariAdminConsole') method: 'GET', url: Settings.baseUrl + '/groups/' + group_name + '?fields=Groups,privileges/PrivilegeInfo/*,members/MemberInfo' - }).success(function (data) { - deferred.resolve(Group.makeGroup(data)); + }).then(function (data) { + deferred.resolve(Group.makeGroup(data.data)); }); return deferred.promise; diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/RemoteCluster.js b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/RemoteCluster.js index 86407fd..907aca9 100644 --- a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/RemoteCluster.js +++ b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/RemoteCluster.js @@ -27,10 +27,10 @@ angular.module('ambariAdminConsole') var deferred = $q.defer(); $http.put(Settings.baseUrl + '/remoteclusters/' + payload.ClusterInfo.name , payload, config) - .success(function (data) { - deferred.resolve(data) + .then(function (data) { + deferred.resolve(data.data) }) - .error(function (data) { + .catch(function (data) { deferred.reject(data); }); return deferred.promise; @@ -41,10 +41,10 @@ angular.module('ambariAdminConsole') var deferred = $q.defer(); $http.get( Settings.baseUrl + '/remoteclusters/' + clusterName) - .success(function(response) { - deferred.resolve(response); + .then(function(response) { + deferred.resolve(response.data); }) - .error(function(data) { + .catch(function(data) { deferred.reject(data); }); @@ -56,10 +56,10 @@ angular.module('ambariAdminConsole') var deferred = $q.defer(); $http.delete( Settings.baseUrl + '/remoteclusters/' + clusterName) - .success(function(response) { - deferred.resolve(response); + .then(function(response) { + deferred.resolve(response.data); }) - .error(function(data) { + .catch(function(data) { deferred.reject(data); }); @@ -71,10 +71,10 @@ angular.module('ambariAdminConsole') var deferred = $q.defer(); $http.post(Settings.baseUrl + '/remoteclusters/' + payload.ClusterInfo.name , payload, config) - .success(function (data) { - deferred.resolve(data) + .then(function (data) { + deferred.resolve(data.data) }) - .error(function (data) { + .catch(function (data) { deferred.reject(data); }); return deferred.promise; @@ -84,10 +84,10 @@ angular.module('ambariAdminConsole') var deferred = $q.defer(); $http.get(Settings.baseUrl + "/remoteclusters") - .success(function(response) { - deferred.resolve(response); + .then(function(response) { + deferred.resolve(response.data); }) - .error(function(data) { + .catch(function(data) { deferred.reject(data); }); return deferred.promise; @@ -100,10 +100,10 @@ angular.module('ambariAdminConsole') + 'fields=versions%2Finstances/ViewInstanceInfo/cluster_handle,versions%2Finstances/ViewInstanceInfo/cluster_type&versions%2FViewVersionInfo%2Fsystem=false&versions%2Finstances/ViewInstanceInfo/cluster_type=REMOTE_AMBARI&versions%2Finstances/ViewInstanceInfo/cluster_handle=' + clustername ) - .success(function(response) { - deferred.resolve(response); + .then(function(response) { + deferred.resolve(response.data); }) - .error(function(data) { + .catch(function(data) { deferred.reject(data); }); return deferred.promise; @@ -114,10 +114,10 @@ angular.module('ambariAdminConsole') /* TODO :: Add params like RemoteCluster.matches and &from , &page_size */ $http.get(Settings.baseUrl + "/remoteclusters?fields=ClusterInfo/services,ClusterInfo/cluster_id") - .success(function(response) { - deferred.resolve(response.items); + .then(function(response) { + deferred.resolve(response.data.items); }) - .error(function(data) { + .catch(function(data) { deferred.reject(data); }); return deferred.promise; diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/Stack.js b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/Stack.js index 238d82c..72a09e2 100644 --- a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/Stack.js +++ b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/Stack.js @@ -61,9 +61,9 @@ angular.module('ambariAdminConsole') var deferred = $q.defer(); var sortFunction = this.sortByIdAsVersion; $http.get(url, {mock: 'stack/allStackVersions.json'}) - .success(function (data) { + .then(function (data) { var allStackVersions = []; - angular.forEach(data.items, function (stack) { + angular.forEach(data.data.items, function (stack) { angular.forEach(stack.versions, function (version) { var stack_name = version.Versions.stack_name; var stack_version = version.Versions.stack_version; @@ -81,7 +81,7 @@ angular.module('ambariAdminConsole') }); deferred.resolve(allStackVersions.sort(sortFunction)); }) - .error(function (data) { + .catch(function (data) { deferred.reject(data); }); return deferred.promise; @@ -108,9 +108,9 @@ angular.module('ambariAdminConsole') 'VersionDefinition/stack_services,VersionDefinition/repository_version&VersionDefinition/show_available=true'; var deferred = $q.defer(); $http.get(Settings.baseUrl + url, {mock: 'version/versions.json'}) - .success(function (data) { + .then(function (data) { var versions = []; - angular.forEach(data.items, function(version) { + angular.forEach(data.data.items, function(version) { var versionObj = { id: version.VersionDefinition.id, stackName: version.VersionDefinition.stack_name, @@ -155,7 +155,7 @@ angular.module('ambariAdminConsole') }); deferred.resolve(versions) }) - .error(function (data) { + .catch(function (data) { deferred.reject(data); }); return deferred.promise; @@ -194,9 +194,9 @@ angular.module('ambariAdminConsole') var url = '/stacks?fields=versions/repository_versions/RepositoryVersions'; var deferred = $q.defer(); $http.get(Settings.baseUrl + url, {mock: 'version/versions.json'}) - .success(function (data) { + .then(function (data) { var repos = []; - angular.forEach(data.items, function(stack) { + angular.forEach(data.data.items, function(stack) { angular.forEach(stack.versions, function (version) { var repoVersions = version.repository_versions; if (repoVersions.length > 0) { @@ -215,7 +215,7 @@ angular.module('ambariAdminConsole') response.itemTotal = repos.length; deferred.resolve(response); }) - .error(function (data) { + .catch(function (data) { deferred.reject(data); }); return deferred.promise; @@ -269,8 +269,8 @@ angular.module('ambariAdminConsole') } var deferred = $q.defer(); $http.get(url, {mock: 'version/version.json'}) - .success(function (data) { - data = data.items[0]; + .then(function (data) { + data = data.data.items[0]; var response = { id : data.repository_versions[0].RepositoryVersions.id, stackVersion : data.Versions.stack_version, @@ -300,7 +300,7 @@ angular.module('ambariAdminConsole') response.services = services.sort(function(a, b){return a.name.localeCompare(b.name)}); deferred.resolve(response); }) - .error(function (data) { + .catch(function (data) { deferred.reject(data); }); return deferred.promise; @@ -312,12 +312,12 @@ angular.module('ambariAdminConsole') configs = isXMLdata? { headers: {'Content-Type': 'text/xml'}} : null; $http.post(url, data, configs) - .success(function (response) { - if (response.resources.length && response.resources[0].VersionDefinition) { - deferred.resolve(response); + .then(function (response) { + if (response.data.resources.length && response.data.resources[0].VersionDefinition) { + deferred.resolve(response.data); } }) - .error(function (data) { + .catch(function (data) { deferred.reject(data); }); return deferred.promise; @@ -327,10 +327,10 @@ angular.module('ambariAdminConsole') var url = Settings.baseUrl + '/stacks/' + stackName + '/versions/' + stackVersion + '/repository_versions/' + id; var deferred = $q.defer(); $http.put(url, payload) - .success(function (data) { - deferred.resolve(data) + .then(function (data) { + deferred.resolve(data.data) }) - .error(function (data) { + .catch(function (data) { deferred.reject(data); }); return deferred.promise; @@ -340,10 +340,10 @@ angular.module('ambariAdminConsole') var url = Settings.baseUrl + '/stacks/' + stackName + '/versions/' + stackVersion + '/repository_versions/' + id; var deferred = $q.defer(); $http.delete(url) - .success(function (data) { - deferred.resolve(data) + .then(function (data) { + deferred.resolve(data.data) }) - .error(function (data) { + .catch(function (data) { deferred.reject(data); }); return deferred.promise; @@ -353,10 +353,10 @@ angular.module('ambariAdminConsole') var url = Settings.baseUrl + '/stacks/' + stackName + '/versions/' + stackVersion + '?fields=operating_systems/repositories/Repositories'; var deferred = $q.defer(); $http.get(url, {mock: 'stack/operatingSystems.json'}) - .success(function (data) { - deferred.resolve(data); + .then(function (data) { + deferred.resolve(data.data); }) - .error(function (data) { + .catch(function (data) { deferred.reject(data); }); return deferred.promise; @@ -386,11 +386,11 @@ angular.module('ambariAdminConsole') repo: repo } ) - .success(function () { + .then(function () { totalCalls--; if (totalCalls === 0) deferred.resolve(invalidUrls); }) - .error(function (response, status, callback, params) { + .catch(function (response, status, callback, params) { invalidUrls.push(params.repo); totalCalls--; if (totalCalls === 0) deferred.resolve(invalidUrls); diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/View.js b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/View.js index db3dab9..3b8601f 100644 --- a/ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/View.js +++ b/ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/View.js @@ -42,10 +42,10 @@ angular.module('ambariAdminConsole') 'fields': fields.join(',') } }) - .success(function(data) { - deferred.resolve(new ViewInstance(data)); + .then(function(data) { + deferred.resolve(new ViewInstance(data.data)); }) - .error(function(data) { + .catch(function(data) { deferred.reject(data); }); @@ -70,10 +70,10 @@ angular.module('ambariAdminConsole') url: Settings.baseUrl + '/view/urls/'+payload.ViewUrlInfo.url_name, data:payload }) - .success(function(data) { - deferred.resolve(new URLStatus(data)); + .then(function(data) { + deferred.resolve(new URLStatus(data.data)); }) - .error(function(data) { + .catch(function(data) { deferred.reject(data); }); @@ -88,10 +88,10 @@ angular.module('ambariAdminConsole') dataType: "json", url: Settings.baseUrl + '/view/urls/'+ urlName, }) - .success(function(data) { - deferred.resolve(new URLStatus(data)); + .then(function(data) { + deferred.resolve(new URLStatus(data.data)); }) - .error(function(data) { + .catch(function(data) { deferred.reject(data); }); @@ -108,10 +108,10 @@ angular.module('ambariAdminConsole') url: Settings.baseUrl + '/view/urls/'+payload.ViewUrlInfo.url_name, data:payload }) - .success(function(data) { - deferred.resolve(new URLStatus(data)); + .then(function(data) { + deferred.resolve(new URLStatus(data.data)); }) - .error(function(data) { + .catch(function(data) { deferred.reject(data); }); @@ -129,10 +129,10 @@ angular.module('ambariAdminConsole') url: Settings.baseUrl + '/view/urls/'+urlName, }) - .success(function(data) { - deferred.resolve(new ViewUrl(data)); + .then(function(data) { + deferred.resolve(new ViewUrl(data.data)); }) - .error(function(data) { + .catch(function(data) { deferred.reject(data); }); @@ -222,8 +222,8 @@ angular.module('ambariAdminConsole') params: { 'fields': fields.join(',') } - }).success(function(data) { - deferred.resolve(data.permissions); + }).then(function(data) { + deferred.resolve(data.data.permissions); }) .catch(function(data) { deferred.reject(data); @@ -242,8 +242,8 @@ angular.module('ambariAdminConsole') fields: 'privileges/PrivilegeInfo' } }) - .success(function(data) { - deferred.resolve(data.privileges); + .then(function(data) { + deferred.resolve(data.data.privileges); }) .catch(function(data) { deferred.reject(data); @@ -260,9 +260,9 @@ angular.module('ambariAdminConsole') $http({ method: 'GET', url: Settings.baseUrl + '/views/'+viewName + '?versions/ViewVersionInfo/status=DEPLOYED' - }).success(function(data) { + }).then(function(data) { var versions = []; - angular.forEach(data.versions, function(version) { + angular.forEach(data.data.versions, function(version) { versions.push(version.ViewVersionInfo.version); }); @@ -311,10 +311,10 @@ angular.module('ambariAdminConsole') 'ViewInstanceInfo' : data } }) - .success(function(data) { - deferred.resolve(data); + .then(function(data) { + deferred.resolve(data.data); }) - .error(function(data) { + .catch(function(data) { deferred.reject(data); }); @@ -420,14 +420,14 @@ angular.module('ambariAdminConsole') 'fields': fields.join(','), 'versions/ViewVersionInfo/system' : false } - }).success(function(data) { + }).then(function(data) { var views = []; - angular.forEach(data.items, function(item) { + angular.forEach(data.data.items, function(item) { views.push(new View(item)); }); deferred.resolve(views); }) - .error(function(data) { + .catch(function(data) { deferred.reject(data); }); diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/views/ambariViews/edit.html b/ambari-admin/src/main/resources/ui/admin-web/app/views/ambariViews/edit.html index 738560a..6029edf 100644 --- a/ambari-admin/src/main/resources/ui/admin-web/app/views/ambariViews/edit.html +++ b/ambari-admin/src/main/resources/ui/admin-web/app/views/ambariViews/edit.html @@ -17,10 +17,10 @@ --> <div class="clearfix"> <ol class="breadcrumb pull-left"> - <li><a href="#/views">{{'common.views' | translate}}</a></li> + <li><a href="#!/views">{{'common.views' | translate}}</a></li> <li class="active">{{instance.ViewInstanceInfo.label}} <a class="gotoinstance" ng-show="instance.ViewInstanceInfo.visible" - href="{{fromSiteRoot('/#/main/views/' + viewUrl)}}" target="_blank"> + href="{{fromSiteRoot('/#!/main/views/' + viewUrl)}}" target="_blank"> {{'views.goToInstance' | translate}} </a> </li> @@ -88,16 +88,16 @@ <div class="col-sm-9"> <div ng-if="settings.shortUrl"> - <p class="form-control-static"><a target="_blank" href="{{fromSiteRoot('/#/main/view/' + instance.ViewInstanceInfo.view_name + '/' + settings.shortUrl)}}" ng-if="settings.shortUrl">/main/view/{{instance.ViewInstanceInfo.view_name}}/{{settings.shortUrl}} <i class="fa fa-external-link" aria-hidden="true"></i></a> + <p class="form-control-static"><a target="_blank" href="{{fromSiteRoot('/#!/main/view/' + instance.ViewInstanceInfo.view_name + '/' + settings.shortUrl)}}" ng-if="settings.shortUrl">/main/view/{{instance.ViewInstanceInfo.view_name}}/{{settings.shortUrl}} <i class="fa fa-external-link" aria-hidden="true"></i></a> <a ng-hide="editDetailsSettingsDisabled" href="javascript:void(0)" ng-click="deleteShortURL(settings.shortUrlName)" class="alert-link">{{'common.delete' | translate }}</a> </p> </div> <div ng-if="!settings.shortUrl"> <p ng-hide="!editDetailsSettingsDisabled" class="form-control-static"> - <a href="#/urls/link/{{instance.ViewInstanceInfo.view_name}}/{{instance.ViewInstanceInfo.version}}/{{instance.ViewInstanceInfo.instance_name}}">{{'urls.createNewUrl' | translate}}</a> + <a href="#!/urls/link/{{instance.ViewInstanceInfo.view_name}}/{{instance.ViewInstanceInfo.version}}/{{instance.ViewInstanceInfo.instance_name}}">{{'urls.createNewUrl' | translate}}</a> </p> <p class="form-control-static" ng-hide="editDetailsSettingsDisabled"> - <a href="#/urls/link/{{instance.ViewInstanceInfo.view_name}}/{{instance.ViewInstanceInfo.version}}/{{instance.ViewInstanceInfo.instance_name}}">{{'urls.createNewUrl' | translate}}</a> + <a href="#!/urls/link/{{instance.ViewInstanceInfo.view_name}}/{{instance.ViewInstanceInfo.version}}/{{instance.ViewInstanceInfo.instance_name}}">{{'urls.createNewUrl' | translate}}</a> </p> </div> </div> diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/views/ambariViews/viewsList.html b/ambari-admin/src/main/resources/ui/admin-web/app/views/ambariViews/viewsList.html index ba5803a..b04d84b 100644 --- a/ambari-admin/src/main/resources/ui/admin-web/app/views/ambariViews/viewsList.html +++ b/ambari-admin/src/main/resources/ui/admin-web/app/views/ambariViews/viewsList.html @@ -64,7 +64,7 @@ </td> <td> <a target="_blank" - href="{{fromSiteRoot('/#/main/view/' + instance.view_name + '/' + instance.short_url)}}">/main/view/{{instance.view_name}}/{{instance.short_url}} + href="{{fromSiteRoot('/#!/main/view/' + instance.view_name + '/' + instance.short_url)}}">/main/view/{{instance.view_name}}/{{instance.short_url}} <i class="fa fa-external-link" aria-hidden="true"></i></a> </td> <td> @@ -88,7 +88,7 @@ </span> <span ng-switch-when="DEPLOYED"> - <a href="#/views/{{instance.view_name}}/versions/{{instance.version}}/instances/{{instance.instance_name}}/edit"> + <a href="#!/views/{{instance.view_name}}/versions/{{instance.version}}/instances/{{instance.instance_name}}/edit"> <i class="fa fa-pencil"></i> </a> <a href ng-click="cloneInstance(instance);"> diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/views/clusters/clusterInformation.html b/ambari-admin/src/main/resources/ui/admin-web/app/views/clusters/clusterInformation.html index 99edfff..486659b 100644 --- a/ambari-admin/src/main/resources/ui/admin-web/app/views/clusters/clusterInformation.html +++ b/ambari-admin/src/main/resources/ui/admin-web/app/views/clusters/clusterInformation.html @@ -31,7 +31,7 @@ </div> <div><img id="install-box" src="{{fromSiteRoot('/img/install-box.svg')}}"></div> <div class="install-button"> - <a href="{{fromSiteRoot('/#/installer/step0')}}" class="btn btn-primary"> + <a href="{{fromSiteRoot('/#!/installer/step0')}}" class="btn btn-primary"> {{'main.createCluster.launchInstallWizard' | translate}} </a> </div> diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/views/remoteClusters/editRemoteClusterPage.html b/ambari-admin/src/main/resources/ui/admin-web/app/views/remoteClusters/editRemoteClusterPage.html index e5d3055..846cbcb 100644 --- a/ambari-admin/src/main/resources/ui/admin-web/app/views/remoteClusters/editRemoteClusterPage.html +++ b/ambari-admin/src/main/resources/ui/admin-web/app/views/remoteClusters/editRemoteClusterPage.html @@ -17,7 +17,7 @@ --> <div class="clearfix"> <ol class="breadcrumb pull-left"> - <li><a href="#/remoteClusters">{{'common.remoteClusters' | translate}}</a></li> + <li><a href="#!/remoteClusters">{{'common.remoteClusters' | translate}}</a></li> <li class="active">{{cluster.cluster_name}}</li> </ol> <div class="pull-right top-margin-4"> diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/views/remoteClusters/list.html b/ambari-admin/src/main/resources/ui/admin-web/app/views/remoteClusters/list.html index 5f8a0be..41d7dfc 100644 --- a/ambari-admin/src/main/resources/ui/admin-web/app/views/remoteClusters/list.html +++ b/ambari-admin/src/main/resources/ui/admin-web/app/views/remoteClusters/list.html @@ -19,7 +19,7 @@ <div class="users-pane"> <div class="clearfix"> <div class="pull-right"> - <a href="#/remoteClusters/create" class="btn btn-default"> + <a href="#!/remoteClusters/create" class="btn btn-default"> {{'views.registerRemoteCluster' | translate}} </a> </div> @@ -50,7 +50,7 @@ </thead> <tbody> <tr ng-repeat="remoteCluster in remoteClusters | filter : { isShowed: true }"> - <td class="col-sm-3"><a href="#/remoteClusters/{{remoteCluster.ClusterInfo.name}}/edit">{{ remoteCluster.clusterName }}</a></td> + <td class="col-sm-3"><a href="#!/remoteClusters/{{remoteCluster.ClusterInfo.name}}/edit">{{ remoteCluster.clusterName }}</a></td> <td class="col-sm-9"> <span ng-repeat="service in remoteCluster.ClusterInfo.services" ng-if="remoteCluster.ClusterInfo.services.length > 0">{{ service }}{{$last ? '' : ','}} </span> <span ng-if="remoteCluster.ClusterInfo.services.length == 0">--</span> diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/views/remoteClusters/remoteClusterPage.html b/ambari-admin/src/main/resources/ui/admin-web/app/views/remoteClusters/remoteClusterPage.html index 397149a..a780b8f 100644 --- a/ambari-admin/src/main/resources/ui/admin-web/app/views/remoteClusters/remoteClusterPage.html +++ b/ambari-admin/src/main/resources/ui/admin-web/app/views/remoteClusters/remoteClusterPage.html @@ -16,7 +16,7 @@ * limitations under the License. --> <ol class="breadcrumb"> - <li><a href="#/remoteClusters">{{'common.remoteClusters' | translate}}</a></li> + <li><a href="#!/remoteClusters">{{'common.remoteClusters' | translate}}</a></li> <li class="active">{{'common.register' | translate}}</li> </ol> <hr> diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/views/sideNav.html b/ambari-admin/src/main/resources/ui/admin-web/app/views/sideNav.html index 8db2493..417fcdf 100644 --- a/ambari-admin/src/main/resources/ui/admin-web/app/views/sideNav.html +++ b/ambari-admin/src/main/resources/ui/admin-web/app/views/sideNav.html @@ -20,11 +20,11 @@ <div class="navigation-bar-container"> <ul class="side-nav-header nav nav-pills nav-stacked"> <li class="navigation-header active"> - <a href="{{fromSiteRoot('/#/main/dashboard')}}" class="ambari-logo"> + <a href="{{fromSiteRoot('/#!/main/dashboard')}}" class="ambari-logo"> <img src="{{fromSiteRoot('/img/ambari-logo.png')}}" alt="{{'common.apacheAmbari' | translate}}" title="{{'common.apacheAmbari' | translate}}" data-qa="ambari-logo"> </a> <div class="btn-group"> - <a href="{{fromSiteRoot('/#/main/dashboard')}}" class="ambari-header-link" title="{{'common.apacheAmbari' | translate}}" data-qa="ambari-title"> + <a href="{{fromSiteRoot('/#!/main/dashboard')}}" class="ambari-header-link" title="{{'common.apacheAmbari' | translate}}" data-qa="ambari-title"> <span class="ambari-header"> {{'common.ambari' | translate}} </span> @@ -34,7 +34,7 @@ </ul> <ul class="nav side-nav-menu nav-pills nav-stacked"> <li class="mainmenu-li active" ng-show="cluster.Clusters.provisioning_state === 'INSTALLED'"> - <a title="{{'common.dashboard' | translate}}" rel="tooltip" data-placement="right" href="{{fromSiteRoot('/#/main/dashboard')}}" class="gotodashboard"> + <a title="{{'common.dashboard' | translate}}" rel="tooltip" data-placement="right" href="{{fromSiteRoot('/#!/main/dashboard')}}" class="gotodashboard"> <i class="navigation-icon fa fa-tachometer" aria-hidden="true"></i> <span class="navigation-menu-item">{{'common.dashboard' | translate}}</span> </a> @@ -47,15 +47,15 @@ </a> <ul class="sub-menu nav nav-pills nav-stacked"> <li class="submenu-li" ng-class="{active: isActive('clusters.clusterInformation')}"> - <a href="#/clusterInformation" class="clusterInformation"> + <a href="#!/clusterInformation" class="clusterInformation"> {{'common.clusterInformation' | translate}} </a> </li> <li class="submenu-li" ng-class="{active: isActive('stackVersions.list')}" ng-show="cluster && totalRepos > 0"> - <a href="#/stackVersions">{{'common.versions' | translate}}</a> + <a href="#!/stackVersions">{{'common.versions' | translate}}</a> </li> <li class="submenu-li" ng-class="{active: isActive('remoteClusters.list')}"> - <a href="#/remoteClusters">{{'common.remoteClusters' | translate}}</a> + <a href="#!/remoteClusters">{{'common.remoteClusters' | translate}}</a> </li> </ul> </li> diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/views/stackVersions/list.html b/ambari-admin/src/main/resources/ui/admin-web/app/views/stackVersions/list.html index 058eed4..4827494 100644 --- a/ambari-admin/src/main/resources/ui/admin-web/app/views/stackVersions/list.html +++ b/ambari-admin/src/main/resources/ui/admin-web/app/views/stackVersions/list.html @@ -19,7 +19,7 @@ <div id="stack-versions"> <div class="clearfix"> <div class="pull-right"> - <a href="#/stackVersions/create" class="btn btn-default"> + <a href="#!/stackVersions/create" class="btn btn-default"> {{'versions.register.title' | translate}} </a> </div> @@ -63,7 +63,7 @@ <span>{{repo.stack_name}}-{{repo.stack_version}}</span> </td> <td class="col-medium"> - <a href="#/stackVersions/{{repo.stack_name}}/{{repo.repository_version}}/edit"> + <a href="#!/stackVersions/{{repo.stack_name}}/{{repo.repository_version}}/edit"> {{repo.display_name}} </a> </td> @@ -74,7 +74,7 @@ <span>{{repo.repository_version}}</span> </td> <td class="col-small ellipsis-overflow"> - <a href="{{fromSiteRoot('/#/main/admin/stack/versions')}}" ng-show="repo.cluster"> + <a href="{{fromSiteRoot('/#!/main/admin/stack/versions')}}" ng-show="repo.cluster"> {{repo.cluster}} </a> <span ng-show="!repo.cluster"> diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/views/stackVersions/stackVersionPage.html b/ambari-admin/src/main/resources/ui/admin-web/app/views/stackVersions/stackVersionPage.html index 6819024..933c49d 100644 --- a/ambari-admin/src/main/resources/ui/admin-web/app/views/stackVersions/stackVersionPage.html +++ b/ambari-admin/src/main/resources/ui/admin-web/app/views/stackVersions/stackVersionPage.html @@ -18,7 +18,7 @@ <div class="clearfix"> <ol class="breadcrumb pull-left"> - <li><a href="#/stackVersions">{{'common.versions' | translate}}</a></li> + <li><a href="#!/stackVersions">{{'common.versions' | translate}}</a></li> <li class="active" ng-if="editController"> {{displayName}} <span class="sub-text">({{repoVersionFullName}})</span> diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/views/userManagement/groupEdit.html b/ambari-admin/src/main/resources/ui/admin-web/app/views/userManagement/groupEdit.html index 833afea..844c382 100644 --- a/ambari-admin/src/main/resources/ui/admin-web/app/views/userManagement/groupEdit.html +++ b/ambari-admin/src/main/resources/ui/admin-web/app/views/userManagement/groupEdit.html @@ -19,7 +19,7 @@ <div id="group-edit"> <div class="clearfix"> <ol class="breadcrumb pull-left"> - <li><a href="#/userManagement?tab=groups">{{'common.groups' | translate}}</a></li> + <li><a href="#!/userManagement?tab=groups">{{'common.groups' | translate}}</a></li> <li class="active">{{group.group_name}}</li> </ol> </div> @@ -66,7 +66,7 @@ <tr ng-repeat="(name, privilege) in privileges.clusters"> <td> <span class="glyphicon glyphicon-cloud"></span> - <a href="#/clusters/{{name}}/manageAccess">{{name}}</a> + <a href="#!/clusters/{{name}}/manageAccess">{{name}}</a> </td> <td> <span tooltip="{{item}}" ng-repeat="item in privilege">{{item | translate}}{{$last ? '' : ', '}}</span> @@ -86,7 +86,7 @@ <tr ng-repeat="(name, privilege) in privileges.views"> <td> <span class="glyphicon glyphicon-th"></span> - <a href="#/views/{{privilege.view_name}}/versions/{{privilege.version}}/instances/{{name}}/edit">{{name}}</a> + <a href="#!/views/{{privilege.view_name}}/versions/{{privilege.version}}/instances/{{name}}/edit">{{name}}</a> </td> <td> <span tooltip="{{item}}" ng-repeat="item in privilege.privileges">{{item | translate}}{{$last ? '' : ', '}}</span> diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/views/userManagement/main.html b/ambari-admin/src/main/resources/ui/admin-web/app/views/userManagement/main.html index 8520fc2..9ada2a4 100644 --- a/ambari-admin/src/main/resources/ui/admin-web/app/views/userManagement/main.html +++ b/ambari-admin/src/main/resources/ui/admin-web/app/views/userManagement/main.html @@ -19,10 +19,10 @@ <div id="user-management"> <ul class="nav nav-tabs"> <li ng-class="{active: activeTab === 'USERS'}"> - <a href="#/userManagement?tab=users" >{{'common.users' | translate}}</a> + <a href="#!/userManagement?tab=users" >{{'common.users' | translate}}</a> </li> <li ng-class="{active: activeTab === 'GROUPS'}"> - <a href="#/userManagement?tab=groups" >{{'common.groups' | translate}}</a> + <a href="#!/userManagement?tab=groups" >{{'common.groups' | translate}}</a> </li> </ul> <div> diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/views/userManagement/userEdit.html b/ambari-admin/src/main/resources/ui/admin-web/app/views/userManagement/userEdit.html index e82eaeb..26dfdac 100644 --- a/ambari-admin/src/main/resources/ui/admin-web/app/views/userManagement/userEdit.html +++ b/ambari-admin/src/main/resources/ui/admin-web/app/views/userManagement/userEdit.html @@ -19,7 +19,7 @@ <div ng-show="user" id="user-edit"> <div class="clearfix"> <ol class="breadcrumb pull-left"> - <li><a href="#/userManagement?tab=users">{{'common.users' | translate}}</a></li> + <li><a href="#!/userManagement?tab=users">{{'common.users' | translate}}</a></li> <li class="active">{{user.user_name}}</li> </ol> </div> @@ -96,7 +96,7 @@ <tr ng-repeat="(name, privilege) in privilegesView.clusters"> <td> <span class="glyphicon glyphicon-cloud"></span> - <a href="#/clusters/{{name}}/manageAccess">{{name}}</a> + <a href="#!/clusters/{{name}}/manageAccess">{{name}}</a> </td> <td> <span tooltip="{{privilege.permission_label}}">{{privilege.permission_label}}</span> @@ -116,7 +116,7 @@ <tr ng-repeat="(name, privilege) in privilegesView.views"> <td> <span class="glyphicon glyphicon-th"></span> - <a href="#/views/{{privilege.view_name}}/versions/{{privilege.version}}/instances/{{name}}/edit">{{name}}</a> + <a href="#!/views/{{privilege.view_name}}/versions/{{privilege.version}}/instances/{{name}}/edit">{{name}}</a> </td> <td> <span tooltip="{{item}}" ng-repeat="item in privilege.privileges track by $index">{{item | translate}}{{$last ? '' : ', '}}</span> diff --git a/ambari-admin/src/main/resources/ui/admin-web/app/views/userManagement/usersList.html b/ambari-admin/src/main/resources/ui/admin-web/app/views/userManagement/usersList.html index 8b93eb5..f6cbc81 100644 --- a/ambari-admin/src/main/resources/ui/admin-web/app/views/userManagement/usersList.html +++ b/ambari-admin/src/main/resources/ui/admin-web/app/views/userManagement/usersList.html @@ -74,7 +74,7 @@ <td><span>{{user.Users.userTypeName}}</span></td> <td><span>{{user.Users.groups.length ? user.Users.groups.join(' ') : '-'}}</span></td> <td class="entity-actions"> - <a href="#/users/{{user.Users.encodedName}}/edit"> + <a href="#!/users/{{user.Users.encodedName}}/edit"> <i class="fa fa-pencil"></i> </a> <a href ng-click="deleteUser(user.Users)" ng-disabled="!user.Users.isDeletable"> diff --git a/ambari-admin/src/main/resources/ui/admin-web/bower.json b/ambari-admin/src/main/resources/ui/admin-web/bower.json index 8e2a6f5..739eb3f 100644 --- a/ambari-admin/src/main/resources/ui/admin-web/bower.json +++ b/ambari-admin/src/main/resources/ui/admin-web/bower.json @@ -3,24 +3,24 @@ "private": true, "dependencies": { "bootstrap": "3.3.7", - "angular": "1.5.11", - "angular-route": "1.5.11", + "angular": "1.7.5", + "angular-route": "1.7.5", "angular-bootstrap": "0.11.0", "underscore": "1.7.0", "restangular": "1.4.0", "angular-bootstrap-toggle-switch": "0.5.1", - "angular-animate": "1.5.11", - "angular-translate": "2.2.0", + "angular-animate": "1.7.5", + "angular-translate": "2.18.0", "font-awesome": "4.2.0" }, "devDependencies": { - "angular-mocks": "1.5.11", + "angular-mocks": "1.7.5", "commonjs": "0.2.0", "chai": "1.8.0", "mocha": "1.14.0", "sinon": "1.10.3" }, "resolutions": { - "angular": "1.5.11" + "angular": "1.7.5" } } \ No newline at end of file diff --git a/ambari-web/app/views/main/admin/stack_upgrade/versions_view.js b/ambari-web/app/views/main/admin/stack_upgrade/versions_view.js index d76a32a..386ec4d 100644 --- a/ambari-web/app/views/main/admin/stack_upgrade/versions_view.js +++ b/ambari-web/app/views/main/admin/stack_upgrade/versions_view.js @@ -230,7 +230,7 @@ App.MainAdminStackVersionsView = Em.View.extend({ }), sortedMappedVersions = mappedVersions.sort(), latestVersion = sortedMappedVersions[sortedMappedVersions.length-1].replace(/[^\d.-]/g, ''); - window.location.replace(App.appURLRoot + 'views/ADMIN_VIEW/' + latestVersion + '/INSTANCE/#/stackVersions'); + window.location.replace(App.appURLRoot + 'views/ADMIN_VIEW/' + latestVersion + '/INSTANCE/#!/stackVersions'); } }); }, diff --git a/ambari-web/test/views/main/admin/stack_upgrade/version_view_test.js b/ambari-web/test/views/main/admin/stack_upgrade/version_view_test.js index a58f38a..b274c32 100644 --- a/ambari-web/test/views/main/admin/stack_upgrade/version_view_test.js +++ b/ambari-web/test/views/main/admin/stack_upgrade/version_view_test.js @@ -494,7 +494,7 @@ describe('App.mainAdminStackVersionsView', function () { popup.onPrimary(); var args = testHelpers.findAjaxRequest('name', 'ambari.service.load_server_version'); expect(args[0]).exists; - expect(window.location.replace.calledWith('/views/ADMIN_VIEW/2.1.0/INSTANCE/#/stackVersions')).to.be.true; + expect(window.location.replace.calledWith('/views/ADMIN_VIEW/2.1.0/INSTANCE/#!/stackVersions')).to.be.true; }); }); @@ -538,7 +538,7 @@ describe('App.mainAdminStackVersionsView', function () { popup.onPrimary(); var args = testHelpers.findAjaxRequest('name', 'ambari.service.load_server_version'); expect(args[0]).exists; - expect(window.location.replace.calledWith('/views/ADMIN_VIEW/2.1.0/INSTANCE/#/stackVersions')).to.be.true; + expect(window.location.replace.calledWith('/views/ADMIN_VIEW/2.1.0/INSTANCE/#!/stackVersions')).to.be.true; }); });
