소스 검색

AMBARI-743. Add unit testing framework for Ambari Web. (yusaku)

git-svn-id: https://svn.apache.org/repos/asf/incubator/ambari/branches/AMBARI-666@1385362 13f79535-47bb-0310-9956-ffa450edef68
Yusaku Sako 12 년 전
부모
커밋
1db9c53265

+ 2 - 0
AMBARI-666-CHANGES.txt

@@ -12,6 +12,8 @@ AMBARI-666 branch (unreleased changes)
 
   NEW FEATURES
 
+  AMBARI-743. Add unit testing framework for Ambari Web. (yusaku)
+
   AMBARI-742. Implement running a bootstrap api, keep a fifo queue and logic
   for getting a request. (mahadev)
 

+ 2 - 2
ambari-web/app/controllers.js

@@ -20,12 +20,12 @@
 // load all controllers here
 
 require('controllers/application');
-require('controllers/login');
+require('controllers/login_controller');
 require('controllers/installer');
 require('controllers/installer/step1');
 require('controllers/installer/step2');
 require('controllers/installer/step3');
-require('controllers/installer/step7');
+require('controllers/installer/step7_controller');
 require('controllers/main');
 require('controllers/main/service');
 require('controllers/main/service/item');

+ 64 - 0
ambari-web/app/controllers/installer/step7.js → ambari-web/app/controllers/installer/step7_controller.js

@@ -205,7 +205,71 @@ App.InstallerStep7Controller = Em.ArrayController.extend({
             category: 'Advanced'
           }
         ]
+      },
+      {
+        serviceName: 'HBase',
+        configCategories: [
+          App.ServiceConfigCategory.create({ name: 'General'}),
+          App.ServiceConfigCategory.create({ name: 'HBaseMaster'}),
+          App.ServiceConfigCategory.create({ name: 'RegionServer'}),
+          App.ServiceConfigCategory.create({ name: 'Advanced'})
+        ],
+        configs: []
+      },
+      {
+        serviceName: 'Hive/HCat',
+        configCategories: [
+          App.ServiceConfigCategory.create({ name: 'Hive Metastore'})
+        ],
+        configs: []
+      },
+      {
+        serviceName: 'ZooKeeper',
+        configCategories: [
+          App.ServiceConfigCategory.create({ name: 'General'})
+        ],
+        configs: []
+      },
+      {
+        serviceName: 'Nagios',
+        configCategories: [
+          App.ServiceConfigCategory.create({ name: 'General'})
+        ],
+        configs: [
+          {
+            name: 'nagios_web_login',
+            displayName: 'Nagios Admin username',
+            value: 'nagiosadmin',
+            description: 'Nagios Web UI Admin username'
+          },
+          {
+            name: 'nagios_web_password',
+            displayName: 'Nagios Admin password',
+            value: '',
+            description: 'Nagios Web UI Admin password'
+          },
+          {
+            name: 'nagios_contact',
+            displayName: 'Alert email address',
+            description: 'Email address to which alert notifications will be sent'
+          }
+        ]
+      },
+      {
+        serviceName: 'Oozie',
+        configCategories: [
+          App.ServiceConfigCategory.create({ name: 'General'})
+        ],
+        configs: []
+      },
+      {
+        serviceName: 'Misc',
+        configCategories: [
+          App.ServiceConfigCategory.create({ name: 'General'})
+        ],
+        configs: []
       }
+
     ];
 
     var self = this;

+ 3 - 1
ambari-web/app/controllers/login.js → ambari-web/app/controllers/login_controller.js

@@ -16,6 +16,8 @@
  * limitations under the License.
  */
 
+var App = require('app');
+
 App.LoginController = Em.Object.extend({
 
   name: 'loginController',
@@ -43,4 +45,4 @@ App.LoginController = Em.Object.extend({
     return (this.get('loginName').trim() !== '' && this.get('loginName') === this.get('password'));
   }
 
-})
+});

+ 1 - 1
ambari-web/app/models.js

@@ -20,6 +20,6 @@
 // load all models here
 
 require('models/cluster');
-require('models/serviceConfig');
 require('models/service');
+require('models/service_config');
 require('models/alert');

+ 7 - 0
ambari-web/app/models/serviceConfig.js → ambari-web/app/models/service_config.js

@@ -18,6 +18,12 @@
 
 var App = require('app');
 
+App.ConfigProperties = Ember.ArrayProxy.extend({
+  content: null
+  // content: require('data/config_properties').configProperties
+});
+
+
 App.ServiceConfig = Ember.Object.extend({
   serviceName: '',
   configCategories: [],
@@ -114,3 +120,4 @@ App.ServiceConfigProperty = Ember.Object.extend({
   }.observes('value')
 
 });
+

+ 2 - 2
ambari-web/app/views.js

@@ -21,7 +21,7 @@
 // load all views here
 
 require('views/application');
-require('views/common/modalPopup');
+require('views/common/modal_popup');
 require('views/login');
 require('views/main');
 require('views/main/menu');
@@ -39,7 +39,7 @@ require('views/installer/step3');
 require('views/installer/step4');
 require('views/installer/step5');
 require('views/installer/step6');
-require('views/installer/step7');
+require('views/installer/step7_view');
 require('views/installer/step8');
 require('views/installer/step9');
 require('views/installer/step10');

+ 0 - 0
ambari-web/app/views/common/modalPopup.js → ambari-web/app/views/common/modal_popup.js


+ 0 - 0
ambari-web/app/views/installer/step7.js → ambari-web/app/views/installer/step7_view.js


+ 3 - 1
ambari-web/package.json

@@ -24,7 +24,9 @@
   },
   "devDependencies": {
     "mocha": "0.14.0",
-    "expect.js": "0.1.2",
+    "chai": "1.2.0",
+    "sinon": "1.4.2",
+    "sinon-chai": "2.1.2",
     "express": "2.5.8"
   }
 }

+ 1 - 0
ambari-web/test/installer/step1_test.js

@@ -0,0 +1 @@
+// TODO

+ 1 - 0
ambari-web/test/installer/step2_test.js

@@ -0,0 +1 @@
+// TODO

+ 1 - 0
ambari-web/test/installer/step3_test.js

@@ -0,0 +1 @@
+// TODO

+ 1 - 0
ambari-web/test/installer/step7_test.js

@@ -0,0 +1 @@
+// TODO

+ 24 - 0
ambari-web/test/login_test.js

@@ -0,0 +1,24 @@
+var App = require('app');
+require('controllers/login_controller');
+
+describe('App.LoginController', function () {
+
+  describe('#validateCredentials()', function () {
+    it('should return false if no username is present', function () {
+      var loginController = App.LoginController.create();
+      loginController.set('loginName', '');
+      expect(loginController.validateCredentials()).to.equal(false);
+    })
+    it('should return false if no password is present', function () {
+      var loginController = App.LoginController.create();
+      loginController.set('password', '');
+      expect(loginController.validateCredentials()).to.equal(false);
+    })
+    it('should return true if username and password are the same (dummy until actual integration)', function () {
+      var loginController = App.LoginController.create();
+      loginController.set('loginName', 'abc');
+      loginController.set('password', 'abc');
+      expect(loginController.validateCredentials()).to.equal(true);
+    })
+  })
+})

+ 0 - 1
ambari-web/test/spec.coffee

@@ -1 +0,0 @@
-# Write your [mocha](http://visionmedia.github.com/mocha/) specs here.

+ 8 - 0
ambari-web/test/test-helpers.coffee

@@ -0,0 +1,8 @@
+# This file will be automatically required when using `brunch test` command.
+chai = require 'chai'
+sinonChai = require 'sinon-chai'
+chai.use sinonChai
+
+module.exports =
+  expect: chai.expect
+  sinon: require 'sinon'