Przeglądaj źródła

AMBARI-7620. Views are not loading right after login. (jaimin)

Jaimin Jetly 10 lat temu
rodzic
commit
7cd4d454aa

+ 1 - 0
ambari-web/app/assets/test/tests.js

@@ -81,6 +81,7 @@ var files = ['test/init_model_test',
   'test/controllers/main/service_test',
   'test/controllers/main/admin_test',
   'test/controllers/main/alerts_controller_test',
+  'test/controllers/main/views_controller_test',
   'test/controllers/installer_test',
   'test/controllers/wizard_test',
   'test/controllers/wizard/step0_test',

+ 3 - 0
ambari-web/app/controllers/main/views_controller.js

@@ -43,6 +43,9 @@ App.MainViewsController = Em.Controller.extend({
 
 
   loadAmbariViews: function () {
+    if (!App.router.get('loggedIn')) {
+      return;
+    }
     App.ajax.send({
       name: 'views.info',
       sender: this,

+ 1 - 0
ambari-web/app/router.js

@@ -282,6 +282,7 @@ App.Router = Em.Router.extend({
       loginData.privileges = privileges;
       App.usersMapper.map({"items": [loginData]});
       router.setUserLoggedIn(params.loginName);
+      App.router.get('mainViewsController').loadAmbariViews();
       var permissionList = privileges.items.mapProperty('PrivilegeInfo.permission_name');
       var isAdmin = permissionList.contains('AMBARI.ADMIN');
       var transitionToApp = false;

+ 48 - 0
ambari-web/test/controllers/main/views_controller_test.js

@@ -0,0 +1,48 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.
+ */
+
+var App = require('app');
+require('controllers/main/views_controller');
+
+describe('MainViewsController', function () {
+
+  var mainViewsController = App.MainViewsController.create();
+
+  describe('#loadAmbariViews()', function () {
+    beforeEach(function () {
+      sinon.stub(App.ajax, 'send', Em.K);
+    });
+    afterEach(function () {
+      App.router.get.restore();
+      App.ajax.send.restore();
+    });
+
+    it('should load views if the user is logged in', function () {
+      sinon.stub(App.router, 'get').withArgs('loggedIn').returns(true);
+      mainViewsController.loadAmbariViews();
+      expect(App.ajax.send.calledOnce).to.be.true;
+    });
+
+    it('should not load views if the user is not logged in', function () {
+      sinon.stub(App.router, 'get').withArgs('loggedIn').returns(false);
+      mainViewsController.loadAmbariViews();
+      expect(App.ajax.send.notCalled).to.be.true;
+    })
+  });
+
+});