You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by nc...@apache.org on 2015/10/23 16:47:36 UTC
[22/50] [abbrv] ambari git commit: AMBARI-13508. Kerberos: editing or
saving KDC admin creds POST fails
AMBARI-13508. Kerberos: editing or saving KDC admin creds POST fails
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/381c49f4
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/381c49f4
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/381c49f4
Branch: refs/heads/branch-dev-patch-upgrade
Commit: 381c49f459815117e22d5d45ccf6b408d5760aa2
Parents: 306e44a
Author: Alex Antonenko <hi...@gmail.com>
Authored: Thu Oct 22 16:24:01 2015 +0300
Committer: Alex Antonenko <hi...@gmail.com>
Committed: Thu Oct 22 16:24:01 2015 +0300
----------------------------------------------------------------------
ambari-web/app/utils/credentials.js | 22 ++++--
.../kdc_credentials_controller_mixin_test.js | 72 ++++++++++++++------
2 files changed, 70 insertions(+), 24 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/381c49f4/ambari-web/app/utils/credentials.js
----------------------------------------------------------------------
diff --git a/ambari-web/app/utils/credentials.js b/ambari-web/app/utils/credentials.js
index cc45288..cf06908 100644
--- a/ambari-web/app/utils/credentials.js
+++ b/ambari-web/app/utils/credentials.js
@@ -87,14 +87,20 @@ module.exports = {
createOrUpdateCredentials: function(clusterName, alias, resource) {
var self = this;
var dfd = $.Deferred();
- this.createCredentials(clusterName, alias, resource).then(function() {
- dfd.resolve();
- }, function() {
+ this.getCredential(clusterName, alias).then(function() {
+ // update previously stored credentials
self.updateCredentials(clusterName, alias, resource).always(function() {
var status = arguments[1];
var result = arguments[2];
dfd.resolve(status === "success", result);
});
+ }, function() {
+ // create credentials if they not exist
+ self.createCredentials(clusterName, alias, resource).always(function() {
+ var status = arguments[1];
+ var result = arguments[2];
+ dfd.resolve(status === "success", result);
+ });
});
return dfd.promise();
},
@@ -105,6 +111,7 @@ module.exports = {
* @member utils.credentials
* @param {string} clusterName cluster name
* @param {string} alias credential alias name e.g. "kdc.admin.credentials"
+ * @param {function} [callback] success callback to invoke, credential will be passed to first argument
* @returns {$.Deferred} promise object
*/
getCredential: function(clusterName, alias, callback) {
@@ -116,14 +123,19 @@ module.exports = {
alias: alias,
callback: callback
},
- success: 'getCredentialSuccessCallback'
+ success: 'getCredentialSuccessCallback',
+ error: 'getCredentialErrorCallback'
});
},
getCredentialSuccessCallback: function(data, opt, params) {
- params.callback(Em.getWithDefault(data, 'Credential', null));
+ if (params.callback) {
+ params.callback(Em.getWithDefault(data, 'Credential', null));
+ }
},
+ getCredentialErrorCallback: function() {},
+
/**
* Update credential by alias and cluster name
*
http://git-wip-us.apache.org/repos/asf/ambari/blob/381c49f4/ambari-web/test/mixins/common/kdc_credentials_controller_mixin_test.js
----------------------------------------------------------------------
diff --git a/ambari-web/test/mixins/common/kdc_credentials_controller_mixin_test.js b/ambari-web/test/mixins/common/kdc_credentials_controller_mixin_test.js
index 2553397..9f05cef 100644
--- a/ambari-web/test/mixins/common/kdc_credentials_controller_mixin_test.js
+++ b/ambari-web/test/mixins/common/kdc_credentials_controller_mixin_test.js
@@ -76,6 +76,12 @@ describe('App.KDCCredentialsControllerMixin', function() {
value: value
});
};
+ var resolveWith = function(data) {
+ return $.Deferred().resolve(data).promise();
+ };
+ var rejectWith = function(data) {
+ return $.Deferred().reject(data).promise();
+ };
[
{
configs: [
@@ -83,6 +89,9 @@ describe('App.KDCCredentialsControllerMixin', function() {
createConfig('admin_principal', 'admin/admin'),
createConfig('persist_credentials', 'true')
],
+ credentialsExists: false,
+ createCredentialFnCalled: true,
+ updateCredentialFnCalled: false,
e: [
'testName',
'kdc.admin.credential',
@@ -92,7 +101,27 @@ describe('App.KDCCredentialsControllerMixin', function() {
principal: 'admin/admin'
}
],
- message: 'Save Admin credentials checkbox checked, credentials should be saved as `persisted`'
+ message: 'Save Admin credentials checkbox checked, credentials already stored and should be updated as `persisted`'
+ },
+ {
+ configs: [
+ createConfig('admin_password', 'admin'),
+ createConfig('admin_principal', 'admin/admin'),
+ createConfig('persist_credentials', 'true')
+ ],
+ credentialsExists: true,
+ createCredentialFnCalled: false,
+ updateCredentialFnCalled: true,
+ e: [
+ 'testName',
+ 'kdc.admin.credential',
+ {
+ type: 'persisted',
+ key: 'admin',
+ principal: 'admin/admin'
+ }
+ ],
+ message: 'Save Admin credentials checkbox checked, no stored credentials, should be created as `persisted`'
},
{
configs: [
@@ -100,6 +129,9 @@ describe('App.KDCCredentialsControllerMixin', function() {
createConfig('admin_principal', 'admin/admin'),
createConfig('persist_credentials', 'false')
],
+ credentialsExists: true,
+ createCredentialFnCalled: false,
+ updateCredentialFnCalled: true,
e: [
'testName',
'kdc.admin.credential',
@@ -109,7 +141,7 @@ describe('App.KDCCredentialsControllerMixin', function() {
principal: 'admin/admin'
}
],
- message: 'Save Admin credentials checkbox un-checked, credentials should be saved as `temporary`'
+ message: 'Save Admin credentials checkbox unchecked, credentials already stored and should be updated as `temporary`'
},
{
configs: [
@@ -117,6 +149,9 @@ describe('App.KDCCredentialsControllerMixin', function() {
createConfig('admin_principal', 'admin/admin'),
createConfig('persist_credentials', 'false')
],
+ credentialsExists: false,
+ createCredentialFnCalled: true,
+ updateCredentialFnCalled: false,
e: [
'testName',
'kdc.admin.credential',
@@ -126,24 +161,20 @@ describe('App.KDCCredentialsControllerMixin', function() {
principal: 'admin/admin'
}
],
- credentialWasSaved: true,
- message: 'Save Admin credentials checkbox checked, credential was saved, credentials should be saved as `temporary`, #updateKDCCredentials should be called'
+ message: 'Save Admin credentials checkbox unchecked, credentials already stored and should be updated as `temporary`'
}
].forEach(function(test) {
it(test.message, function() {
sinon.stub(App, 'get').withArgs('clusterName').returns('testName');
+ sinon.stub(credentialsUtils, 'getCredential', function(clusterName, alias) {
+ return test.credentialsExists ? resolveWith() : rejectWith();
+ });
sinon.stub(credentialsUtils, 'createCredentials', function() {
- if (test.credentialWasSaved) {
- return $.Deferred().reject().promise();
- } else {
- return $.Deferred().resolve().promise();
- }
+ return resolveWith();
+ });
+ sinon.stub(credentialsUtils, 'updateCredentials', function() {
+ return resolveWith();
});
- if (test.credentialWasSaved) {
- sinon.stub(credentialsUtils, 'updateCredentials', function() {
- return $.Deferred().resolve().promise();
- });
- }
mixedObject.reopen({
isStorePersisted: function() {
@@ -151,14 +182,17 @@ describe('App.KDCCredentialsControllerMixin', function() {
}.property()
});
mixedObject.createKDCCredentials(test.configs);
- assert.isTrue(credentialsUtils.createCredentials.calledOnce, 'credentialsUtils#createCredentials called');
- assert.deepEqual(credentialsUtils.createCredentials.args[0], test.e, 'credentialsUtils#createCredentials called with correct arguments');
+ assert.equal(credentialsUtils.createCredentials.calledOnce, test.createCredentialFnCalled, 'credentialsUtils#createCredentials called');
+ if (test.createCredentialFnCalled) {
+ assert.deepEqual(credentialsUtils.createCredentials.args[0], test.e, 'credentialsUtils#createCredentials called with correct arguments');
+ }
credentialsUtils.createCredentials.restore();
- if (test.credentialWasSaved) {
- assert.isTrue(credentialsUtils.updateCredentials.calledOnce, 'credentialUtils#updateCredentials called');
+ assert.equal(credentialsUtils.updateCredentials.calledOnce, test.updateCredentialFnCalled, 'credentialUtils#updateCredentials called');
+ if (test.updateCredentialFnCalled) {
assert.deepEqual(credentialsUtils.updateCredentials.args[0], test.e, 'credentialUtils#updateCredentials called with correct arguments');
- credentialsUtils.updateCredentials.restore();
}
+ credentialsUtils.updateCredentials.restore();
+ credentialsUtils.getCredential.restore();
App.get.restore();
});
});