Просмотр исходного кода

AMBARI-14470 User can change properties that should not be reconfigurable and overridable. (ababiichuk)

ababiichuk 9 лет назад
Родитель
Сommit
9c94ac95b9
2 измененных файлов с 34 добавлено и 12 удалено
  1. 5 3
      ambari-web/app/utils/config.js
  2. 29 9
      ambari-web/test/utils/config_test.js

+ 5 - 3
ambari-web/app/utils/config.js

@@ -269,9 +269,11 @@ App.config = Em.Object.create({
    * @param {object} config
    */
   restrictSecureProperties: function (config) {
-    var isReadOnly = config.isSecureConfig && App.get('isKerberosEnabled');
-    config.isReconfigurable = !isReadOnly;
-    config.isOverridable = !isReadOnly;
+    if (config.isSecureConfig) {
+      var isReadOnly = App.get('isKerberosEnabled');
+      config.isReconfigurable = config.isReconfigurable && !isReadOnly;
+      config.isOverridable = config.isOverridable && !isReadOnly;
+    }
   },
 
   /**

+ 29 - 9
ambari-web/test/utils/config_test.js

@@ -1017,7 +1017,9 @@ describe('App.config', function () {
       {
         input: {
           isSecureConfig: true,
-          isKerberosEnabled: true
+          isKerberosEnabled: true,
+          isReconfigurable: false,
+          isOverridable: false
         },
         expected: {
           isReconfigurable: false,
@@ -1026,18 +1028,22 @@ describe('App.config', function () {
       },
       {
         input: {
-          isSecureConfig: false,
-          isKerberosEnabled: true
-        },
-        expected: {
+          isSecureConfig: true,
+          isKerberosEnabled: true,
           isReconfigurable: true,
           isOverridable: true
+        },
+        expected: {
+          isReconfigurable: false,
+          isOverridable: false
         }
       },
       {
         input: {
           isSecureConfig: true,
-          isKerberosEnabled: false
+          isKerberosEnabled: false,
+          isReconfigurable: true,
+          isOverridable: true
         },
         expected: {
           isReconfigurable: true,
@@ -1047,7 +1053,19 @@ describe('App.config', function () {
       {
         input: {
           isSecureConfig: false,
-          isKerberosEnabled: false
+          isReconfigurable: false,
+          isOverridable: false
+        },
+        expected: {
+          isReconfigurable: false,
+          isOverridable: false
+        }
+      },
+      {
+        input: {
+          isSecureConfig: false,
+          isReconfigurable: true,
+          isOverridable: true
         },
         expected: {
           isReconfigurable: true,
@@ -1059,9 +1077,11 @@ describe('App.config', function () {
     testCases.forEach(function(test) {
       it("isSecureConfig = " + test.input.isSecureConfig + "; isKerberosEnabled = " + test.input.isKerberosEnabled, function() {
         var config = {
-          isSecureConfig: test.input.isSecureConfig
+          isSecureConfig: test.input.isSecureConfig,
+          isReconfigurable: test.input.isReconfigurable,
+          isOverridable: test.input.isOverridable
         };
-        App.set('isKerberosEnabled', test.input.isKerberosEnabled);
+        App.set('isKerberosEnabled', !!test.input.isKerberosEnabled);
         App.config.restrictSecureProperties(config);
         expect(config.isReconfigurable).to.equal(test.expected.isReconfigurable);
         expect(config.isOverridable).to.equal(test.expected.isOverridable);