@testim/testim-cli
Version:
Command line interface for running Testing on you CI
90 lines (75 loc) • 6.66 kB
JavaScript
/**
*
* Protocol bindings for all session operations. In case you are looking for
* `[POST] session` to initialise a session on the server, take a look at `/lib/protocol/init`.
*
* <example>
:session.js
// retrieve the capabilities of the specified session
client.session(function(err,res) { ... });
// delete the session (equivalent to `end` action command)
client.session('delete');
* </example>
*
* @param {String=} doWhat session operation (`GET`*|`delete`) *default
*
* @see https://code.google.com/p/selenium/wiki/JsonWireProtocol#/session/:sessionId
* @type protocol
*
*/
;
Object.defineProperty(exports, '__esModule', {
value: true
});
var _utilsErrorHandler = require('../utils/ErrorHandler');
var session = function session(doWhat, sessionId) {
var _this = this;
if (doWhat === undefined) doWhat = 'GET';
/*!
* parameter check
*/
if (typeof sessionId !== 'string') {
/*!
* if session was already closed return `undefined`
* ToDo or maybe throw an error
*/
if (!this.requestHandler.sessionID) {
return null;
}
sessionId = this.requestHandler.sessionID;
}
doWhat = doWhat.toUpperCase();
/*!
* get session
*/
if (doWhat === 'GET') {
return this.requestHandler.create({
path: '/session/' + sessionId,
method: 'GET',
requiresSession: false
});
}
/*!
* delete session
*/
if (doWhat === 'DELETE') {
this.emit('end', {
sessionId: this.requestHandler.sessionID
});
return this.requestHandler.create({
path: '/session/' + sessionId,
method: 'DELETE',
requiresSession: false
}).then(function (res) {
/*!
* delete sessionID in RequestHandler
*/
_this.requestHandler.sessionID = null;
return res;
});
}
throw new _utilsErrorHandler.ProtocolError('The session command need either a \'delete\' or \'get\'attribute to know what to do. example: client.session(\'get\').then(callback) to get the capabilities of the session.');
};
exports['default'] = session;
module.exports = exports['default'];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9wcm90b2NvbC9zZXNzaW9uLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztpQ0FxQjhCLHVCQUF1Qjs7QUFFckQsSUFBSSxPQUFPLEdBQUcsU0FBVixPQUFPLENBQWEsTUFBTSxFQUFVLFNBQVMsRUFBRTs7O1FBQTNCLE1BQU0sZ0JBQU4sTUFBTSxHQUFHLEtBQUs7Ozs7O0FBSWxDLFFBQUksT0FBTyxTQUFTLEtBQUssUUFBUSxFQUFFOzs7OztBQUsvQixZQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLEVBQUU7QUFDaEMsbUJBQU8sSUFBSSxDQUFBO1NBQ2Q7O0FBRUQsaUJBQVMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQTtLQUM1Qzs7QUFFRCxVQUFNLEdBQUcsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFBOzs7OztBQUs3QixRQUFJLE1BQU0sS0FBSyxLQUFLLEVBQUU7QUFDbEIsZUFBTyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQztBQUM5QixnQkFBSSxnQkFBYyxTQUFTLEFBQUU7QUFDN0Isa0JBQU0sRUFBRSxLQUFLO0FBQ2IsMkJBQWUsRUFBRSxLQUFLO1NBQ3pCLENBQUMsQ0FBQTtLQUNMOzs7OztBQUtELFFBQUksTUFBTSxLQUFLLFFBQVEsRUFBRTtBQUNyQixZQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRTtBQUNiLHFCQUFTLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTO1NBQzNDLENBQUMsQ0FBQTs7QUFFRixlQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDO0FBQzlCLGdCQUFJLEVBQUUsV0FBVyxHQUFHLFNBQVM7QUFDN0Isa0JBQU0sRUFBRSxRQUFRO0FBQ2hCLDJCQUFlLEVBQUUsS0FBSztTQUN6QixDQUFDLENBQUMsSUFBSSxDQUFDLFVBQUMsR0FBRyxFQUFLOzs7O0FBSWIsa0JBQUssY0FBYyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUE7QUFDcEMsbUJBQU8sR0FBRyxDQUFBO1NBQ2IsQ0FBQyxDQUFBO0tBQ0w7O0FBRUQsVUFBTSxxQ0FBa0IsOEtBQThLLENBQUMsQ0FBQTtDQUMxTSxDQUFBOztxQkFFYyxPQUFPIiwiZmlsZSI6InNlc3Npb24uanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqXG4gKiBQcm90b2NvbCBiaW5kaW5ncyBmb3IgYWxsIHNlc3Npb24gb3BlcmF0aW9ucy4gSW4gY2FzZSB5b3UgYXJlIGxvb2tpbmcgZm9yXG4gKiBgW1BPU1RdIHNlc3Npb25gIHRvIGluaXRpYWxpc2UgYSBzZXNzaW9uIG9uIHRoZSBzZXJ2ZXIsIHRha2UgYSBsb29rIGF0IGAvbGliL3Byb3RvY29sL2luaXRgLlxuICpcbiAqIDxleGFtcGxlPlxuICAgIDpzZXNzaW9uLmpzXG4gICAgLy8gcmV0cmlldmUgdGhlIGNhcGFiaWxpdGllcyBvZiB0aGUgc3BlY2lmaWVkIHNlc3Npb25cbiAgICBjbGllbnQuc2Vzc2lvbihmdW5jdGlvbihlcnIscmVzKSB7IC4uLiB9KTtcblxuICAgIC8vIGRlbGV0ZSB0aGUgc2Vzc2lvbiAoZXF1aXZhbGVudCB0byBgZW5kYCBhY3Rpb24gY29tbWFuZClcbiAgICBjbGllbnQuc2Vzc2lvbignZGVsZXRlJyk7XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogQHBhcmFtIHtTdHJpbmc9fSBkb1doYXQgIHNlc3Npb24gb3BlcmF0aW9uIChgR0VUYCp8YGRlbGV0ZWApICpkZWZhdWx0XG4gKlxuICogQHNlZSAgaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9zZWxlbml1bS93aWtpL0pzb25XaXJlUHJvdG9jb2wjL3Nlc3Npb24vOnNlc3Npb25JZFxuICogQHR5cGUgcHJvdG9jb2xcbiAqXG4gKi9cblxuaW1wb3J0IHsgUHJvdG9jb2xFcnJvciB9IGZyb20gJy4uL3V0aWxzL0Vycm9ySGFuZGxlcidcblxubGV0IHNlc3Npb24gPSBmdW5jdGlvbiAoZG9XaGF0ID0gJ0dFVCcsIHNlc3Npb25JZCkge1xuICAgIC8qIVxuICAgICAqIHBhcmFtZXRlciBjaGVja1xuICAgICAqL1xuICAgIGlmICh0eXBlb2Ygc2Vzc2lvbklkICE9PSAnc3RyaW5nJykge1xuICAgICAgICAvKiFcbiAgICAgICAgICogaWYgc2Vzc2lvbiB3YXMgYWxyZWFkeSBjbG9zZWQgcmV0dXJuIGB1bmRlZmluZWRgXG4gICAgICAgICAqIFRvRG8gb3IgbWF5YmUgdGhyb3cgYW4gZXJyb3JcbiAgICAgICAgICovXG4gICAgICAgIGlmICghdGhpcy5yZXF1ZXN0SGFuZGxlci5zZXNzaW9uSUQpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgIH1cblxuICAgICAgICBzZXNzaW9uSWQgPSB0aGlzLnJlcXVlc3RIYW5kbGVyLnNlc3Npb25JRFxuICAgIH1cblxuICAgIGRvV2hhdCA9IGRvV2hhdC50b1VwcGVyQ2FzZSgpXG5cbiAgICAvKiFcbiAgICAgKiBnZXQgc2Vzc2lvblxuICAgICAqL1xuICAgIGlmIChkb1doYXQgPT09ICdHRVQnKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlcXVlc3RIYW5kbGVyLmNyZWF0ZSh7XG4gICAgICAgICAgICBwYXRoOiBgL3Nlc3Npb24vJHtzZXNzaW9uSWR9YCxcbiAgICAgICAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICAgICAgICByZXF1aXJlc1Nlc3Npb246IGZhbHNlXG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgLyohXG4gICAgICogZGVsZXRlIHNlc3Npb25cbiAgICAgKi9cbiAgICBpZiAoZG9XaGF0ID09PSAnREVMRVRFJykge1xuICAgICAgICB0aGlzLmVtaXQoJ2VuZCcsIHtcbiAgICAgICAgICAgIHNlc3Npb25JZDogdGhpcy5yZXF1ZXN0SGFuZGxlci5zZXNzaW9uSURcbiAgICAgICAgfSlcblxuICAgICAgICByZXR1cm4gdGhpcy5yZXF1ZXN0SGFuZGxlci5jcmVhdGUoe1xuICAgICAgICAgICAgcGF0aDogJy9zZXNzaW9uLycgKyBzZXNzaW9uSWQsXG4gICAgICAgICAgICBtZXRob2Q6ICdERUxFVEUnLFxuICAgICAgICAgICAgcmVxdWlyZXNTZXNzaW9uOiBmYWxzZVxuICAgICAgICB9KS50aGVuKChyZXMpID0+IHtcbiAgICAgICAgICAgIC8qIVxuICAgICAgICAgICAgICogZGVsZXRlIHNlc3Npb25JRCBpbiBSZXF1ZXN0SGFuZGxlclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB0aGlzLnJlcXVlc3RIYW5kbGVyLnNlc3Npb25JRCA9IG51bGxcbiAgICAgICAgICAgIHJldHVybiByZXNcbiAgICAgICAgfSlcbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgUHJvdG9jb2xFcnJvcignVGhlIHNlc3Npb24gY29tbWFuZCBuZWVkIGVpdGhlciBhIFxcJ2RlbGV0ZVxcJyBvciBcXCdnZXRcXCdhdHRyaWJ1dGUgdG8ga25vdyB3aGF0IHRvIGRvLiBleGFtcGxlOiBjbGllbnQuc2Vzc2lvbihcXCdnZXRcXCcpLnRoZW4oY2FsbGJhY2spIHRvIGdldCB0aGUgY2FwYWJpbGl0aWVzIG9mIHRoZSBzZXNzaW9uLicpXG59XG5cbmV4cG9ydCBkZWZhdWx0IHNlc3Npb25cbiJdfQ==