You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by ja...@apache.org on 2014/10/14 02:13:23 UTC
git commit: AMBARI-7640 Validation required for adding a Group Name
(nandat via jaoki)
Repository: ambari
Updated Branches:
refs/heads/trunk 6cf98ff4a -> a5716364c
AMBARI-7640 Validation required for adding a Group Name (nandat via jaoki)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/a5716364
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/a5716364
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/a5716364
Branch: refs/heads/trunk
Commit: a5716364cba4cbbd58c55d915b3ac0e86433dca3
Parents: 6cf98ff
Author: Jun Aoki <ja...@apache.org>
Authored: Mon Oct 13 17:13:02 2014 -0700
Committer: Jun Aoki <ja...@apache.org>
Committed: Mon Oct 13 17:13:02 2014 -0700
----------------------------------------------------------------------
ambari-web/app/assets/test/tests.js | 1 +
.../service/manage_config_groups_controller.js | 15 ++++++++++++---
ambari-web/app/messages.js | 1 +
ambari-web/app/utils/validator.js | 10 ++++++++++
ambari-web/test/utils/validator_test.js | 18 ++++++++++++++++++
5 files changed, 42 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/a5716364/ambari-web/app/assets/test/tests.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/assets/test/tests.js b/ambari-web/app/assets/test/tests.js
index 95e9073..74f8a4c 100644
--- a/ambari-web/app/assets/test/tests.js
+++ b/ambari-web/app/assets/test/tests.js
@@ -71,6 +71,7 @@ var files = ['test/init_model_test',
'test/controllers/main/host/configs_service_test',
'test/controllers/main/host/details_test',
'test/controllers/main/service/add_controller_test',
+ 'test/controllers/main/service/manage_config_groups_controller_test',
'test/controllers/main/service/reassign_controller_test',
'test/controllers/main/service/reassign/step2_controller_test',
'test/controllers/main/service/reassign/step4_controller_test',
http://git-wip-us.apache.org/repos/asf/ambari/blob/a5716364/ambari-web/app/controllers/main/service/manage_config_groups_controller.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/controllers/main/service/manage_config_groups_controller.js b/ambari-web/app/controllers/main/service/manage_config_groups_controller.js
index 56c77f4..2110a87 100644
--- a/ambari-web/app/controllers/main/service/manage_config_groups_controller.js
+++ b/ambari-web/app/controllers/main/service/manage_config_groups_controller.js
@@ -18,6 +18,7 @@
var App = require('app');
+var validator = require('utils/validator');
var hostsManagement = require('utils/hosts');
var numberUtils = require('utils/number_utils');
@@ -427,19 +428,23 @@ App.ManageConfigGroupsController = Em.Controller.extend({
validate: function () {
var warningMessage = '';
var originalGroup = self.get('selectedConfigGroup');
+ var groupName = this.get('configGroupName').trim();
if (originalGroup.get('description') !== this.get('configGroupDesc') && !this.get('isDescriptionDirty')) {
this.set('isDescriptionDirty', true);
}
- if (originalGroup.get('name').trim() === this.get('configGroupName').trim()) {
+ if (originalGroup.get('name').trim() === groupName) {
if (this.get('isDescriptionDirty')) {
warningMessage = '';
} else {
warningMessage = Em.I18n.t("config.group.selection.dialog.err.name.exists");
}
} else {
- if (self.get('configGroups').mapProperty('name').contains(this.get('configGroupName').trim())) {
+ if (self.get('configGroups').mapProperty('name').contains(groupName)) {
warningMessage = Em.I18n.t("config.group.selection.dialog.err.name.exists");
}
+ else if (groupName && !validator.isValidConfigGroupName(groupName)) {
+ warningMessage = Em.I18n.t("form.validator.configGroupName");
+ }
}
this.set('warningMessage', warningMessage);
}.observes('configGroupName', 'configGroupDesc'),
@@ -479,9 +484,13 @@ App.ManageConfigGroupsController = Em.Controller.extend({
},
validate: function () {
var warningMessage = '';
- if (self.get('configGroups').mapProperty('name').contains(this.get('configGroupName').trim())) {
+ var groupName = this.get('configGroupName').trim();
+ if (self.get('configGroups').mapProperty('name').contains(groupName)) {
warningMessage = Em.I18n.t("config.group.selection.dialog.err.name.exists");
}
+ else if (groupName && !validator.isValidConfigGroupName(groupName)) {
+ warningMessage = Em.I18n.t("form.validator.configGroupName");
+ }
this.set('warningMessage', warningMessage);
}.observes('configGroupName'),
disablePrimary: function () {
http://git-wip-us.apache.org/repos/asf/ambari/blob/a5716364/ambari-web/app/messages.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/messages.js b/ambari-web/app/messages.js
index c8baad5..67eed85 100644
--- a/ambari-web/app/messages.js
+++ b/ambari-web/app/messages.js
@@ -816,6 +816,7 @@ Em.I18n.translations = {
'form.validator.invalidIp':'Please enter valid ip address',
'form.validator.configKey':'Invalid Key. Only alphanumerics, hyphens, underscores, asterisks and periods are allowed.',
+ 'form.validator.configGroupName':'Invalid Group Name. Only alphanumerics, hyphens, spaces and underscores are allowed.',
'form.validator.configKey.specific':'"{0}" is invalid Key. Only alphanumerics, hyphens, underscores, asterisks and periods are allowed.',
'admin.advanced.caution':'This section is for advanced user only.<br/>Proceed with caution.',
http://git-wip-us.apache.org/repos/asf/ambari/blob/a5716364/ambari-web/app/utils/validator.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/utils/validator.js b/ambari-web/app/utils/validator.js
index 0b8afb2..0ba44ad 100644
--- a/ambari-web/app/utils/validator.js
+++ b/ambari-web/app/utils/validator.js
@@ -130,6 +130,16 @@ module.exports = {
return configKeyRegex.test(value);
},
+ /**
+ * validate configuration group name
+ * @param value
+ * @return {Boolean}
+ */
+ isValidConfigGroupName: function(value) {
+ var configKeyRegex = /^[\s0-9a-z_\-]+$/i;
+ return configKeyRegex.test(value);
+ },
+
empty:function (e) {
switch (e) {
case "":
http://git-wip-us.apache.org/repos/asf/ambari/blob/a5716364/ambari-web/test/utils/validator_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/utils/validator_test.js b/ambari-web/test/utils/validator_test.js
index 79f11ac..a449b6a 100644
--- a/ambari-web/test/utils/validator_test.js
+++ b/ambari-web/test/utils/validator_test.js
@@ -332,6 +332,24 @@ describe('validator', function () {
})
});
});
+ describe('#isValidConfigGroupName(value)', function() {
+ var tests = [
+ {m:'"123" - valid',i:'123',e:true},
+ {m:'"abc" - valid',i:'abc',e:true},
+ {m:'"abc123" - valid',i:'abc123',e:true},
+ {m:'".abc." - invalid',i:'.abc.',e:false},
+ {m:'"_abc_" - valid',i:'_abc_',e:true},
+ {m:'"-abc-" - valid',i:'-abc-',e:true},
+ {m:'" abc 123 " - valid',i:' abc 123 ',e:true},
+ {m:'"a"b" - invalid',i:'a"b',e:false},
+ {m:'"a\'b" - invalid',i:'a\'b',e:false}
+ ];
+ tests.forEach(function(test) {
+ it(test.m + ' ', function () {
+ expect(validator.isValidConfigGroupName(test.i)).to.equal(test.e);
+ })
+ });
+ });
describe('#isValidMatchesRegexp()', function() {
var message = '`{0}` should be {1}',