Merge pull request #7046 from LeeDr/newShieldLogin

Minimal changes to support Shield Login.
This commit is contained in:
Lee Drengenberg 2016-04-27 16:15:23 -05:00
commit 26a6e56ff6
2 changed files with 53 additions and 0 deletions

View file

@ -10,6 +10,9 @@ define(function (require) {
var parse = require('intern/dojo/node!url').parse;
var format = require('intern/dojo/node!url').format;
var path = require('intern/dojo/node!path');
var ShieldPage = require('../../support/pages/shield_page');
var shieldPage;
function injectTimestampQuery(func, url) {
var formatted = modifyQueryString(url, function (parsed) {
@ -43,6 +46,7 @@ define(function (require) {
remote.get.wrapper = injectTimestampQuery;
this.remote.getCurrentUrl = _.wrap(this.remote.getCurrentUrl, removeTimestampQuery);
}
shieldPage = new ShieldPage(this.remote);
}
@ -90,6 +94,20 @@ define(function (require) {
.then(function () {
return self.remote.getCurrentUrl();
})
.then(function (currentUrl) {
var loginPage = new RegExp('login').test(currentUrl);
if (loginPage) {
self.debug('Found loginPage = ' + loginPage + ', username = '
+ config.servers.kibana.shield.username);
return shieldPage.login(config.servers.kibana.shield.username,
config.servers.kibana.shield.password)
.then(function () {
return self.remote.getCurrentUrl();
});
} else {
return currentUrl;
}
})
.then(function (currentUrl) {
currentUrl = currentUrl.replace(/\/\/\w+:\w+@/, '//');
var navSuccessful = new RegExp(appUrl).test(currentUrl);

View file

@ -0,0 +1,35 @@
// in test/support/pages/shield_page.js
define(function (require) {
var config = require('intern').config;
var defaultTimeout = config.timeouts.default;
// the page object is created as a constructor
// so we can provide the remote Command object
// at runtime
function ShieldPage(remote) {
this.remote = remote;
}
ShieldPage.prototype = {
constructor: ShieldPage,
login: function login(user, pwd) {
var remote = this.remote;
return remote.setFindTimeout(5000)
.findById('username')
.type(user)
.then(function () {
return remote.findById('password')
.type(pwd);
})
.then(function () {
return remote.findByCssSelector('.btn')
.click();
});
}
};
return ShieldPage;
});