/**
*
* 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` (default)|`delete`)
* @param {String} sessionId session id to operate on
*
* @see https://code.google.com/p/selenium/wiki/JsonWireProtocol#/session/:sessionId
* @type protocol
*
*/
'use strict';
Object.defineProperty(exports, '__esModule', {I
value: true
});
var _utilsErrorHandler = require('../utils/ErrorHandler');
var session = function session(doWhat, sessionId) {
// istanbul ignore next
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') {
/**
* make sure we don't run this command within wdio test run
*/
if (this.options.isWDIO) {
throw new _utilsErrorHandler.CommandError('Don\'t end the session manually. This will be done automatically.');
}
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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9jaHJpc3RpYW5icm9tYW5uL1NpdGVzL1dlYnByb2pla3RlL3dlYmRyaXZlcmpzL0RFVi9saWIvcHJvdG9jb2wvc2Vzc2lvbi5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2lDQXNCNEMsdUJBQXVCOztBQUVuRSxJQUFJLE9BQU8sR0FBRyxTQUFWLE9BQU8sQ0FBYSxNQUFNLEVBQVUsU0FBUyxFQUFFOzs7OztRQUEzQixNQUFNLGdCQUFOLE1BQU0sR0FBRyxLQUFLOzs7OztBQUlsQyxRQUFJLE9BQU8sU0FBUyxLQUFLLFFBQVEsRUFBRTs7Ozs7QUFLL0IsWUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFO0FBQ2hDLG1CQUFPLElBQUksQ0FBQTtTQUNkOztBQUVELGlCQUFTLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUE7S0FDNUM7O0FBRUQsVUFBTSxHQUFHLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQTs7Ozs7QUFLN0IsUUFBSSxNQUFNLEtBQUssS0FBSyxFQUFFO0FBQ2xCLGVBQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUM7QUFDOUIsZ0JBQUksZ0JBQWMsU0FBUyxBQUFFO0FBQzdCLGtCQUFNLEVBQUUsS0FBSztBQUNiLDJCQUFlLEVBQUUsS0FBSztTQUN6QixDQUFDLENBQUE7S0FDTDs7Ozs7QUFLRCxRQUFJLE1BQU0sS0FBSyxRQUFRLEVBQUU7Ozs7QUFJckIsWUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRTtBQUNyQixrQkFBTSx3R0FBb0YsQ0FBQTtTQUM3Rjs7QUFFRCxZQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRTtBQUNiLHFCQUFTLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTO1NBQzNDLENBQUMsQ0FBQTs7QUFFRixlQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDO0FBQzlCLGdCQUFJLEVBQUUsV0FBVyxHQUFHLFNBQVM7QUFDN0Isa0JBQU0sRUFBRSxRQUFRO0FBQ2hCLDJCQUFlLEVBQUUsS0FBSztTQUN6QixDQUFDLENBQUMsSUFBSSxDQUFDLFVBQUMsR0FBRyxFQUFLOzs7O0FBSWIsa0JBQUssY0FBYyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUE7QUFDcEMsbUJBQU8sR0FBRyxDQUFBO1NBQ2IsQ0FBQyxDQUFBO0tBQ0w7O0FBRUQsVUFBTSxxQ0FBa0IsOEtBQThLLENBQUMsQ0FBQTtDQUMxTSxDQUFBOztxQkFFYyxPQUFPIiwiZmlsZSI6Ii9Vc2Vycy9jaHJpc3RpYW5icm9tYW5uL1NpdGVzL1dlYnByb2pla3RlL3dlYmRyaXZlcmpzL0RFVi9saWIvcHJvdG9jb2wvc2Vzc2lvbi5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICpcbiAqIFByb3RvY29sIGJpbmRpbmdzIGZvciBhbGwgc2Vzc2lvbiBvcGVyYXRpb25zLiBJbiBjYXNlIHlvdSBhcmUgbG9va2luZyBmb3JcbiAqIGBbUE9TVF0gc2Vzc2lvbmAgdG8gaW5pdGlhbGlzZSBhIHNlc3Npb24gb24gdGhlIHNlcnZlciwgdGFrZSBhIGxvb2sgYXQgYC9saWIvcHJvdG9jb2wvaW5pdGAuXG4gKlxuICogPGV4YW1wbGU+XG4gICAgOnNlc3Npb24uanNcbiAgICAvLyByZXRyaWV2ZSB0aGUgY2FwYWJpbGl0aWVzIG9mIHRoZSBzcGVjaWZpZWQgc2Vzc2lvblxuICAgIGNsaWVudC5zZXNzaW9uKGZ1bmN0aW9uKGVycixyZXMpIHsgLi4uIH0pO1xuXG4gICAgLy8gZGVsZXRlIHRoZSBzZXNzaW9uIChlcXVpdmFsZW50IHRvIGBlbmRgIGFjdGlvbiBjb21tYW5kKVxuICAgIGNsaWVudC5zZXNzaW9uKCdkZWxldGUnKTtcbiAqIDwvZXhhbXBsZT5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZz19IGRvV2hhdCAgICAgc2Vzc2lvbiBvcGVyYXRpb24gKGBnZXRgIChkZWZhdWx0KXxgZGVsZXRlYClcbiAqIEBwYXJhbSB7U3RyaW5nfSAgc2Vzc2lvbklkICBzZXNzaW9uIGlkIHRvIG9wZXJhdGUgb25cbiAqXG4gKiBAc2VlICBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL3NlbGVuaXVtL3dpa2kvSnNvbldpcmVQcm90b2NvbCMvc2Vzc2lvbi86c2Vzc2lvbklkXG4gKiBAdHlwZSBwcm90b2NvbFxuICpcbiAqL1xuXG5pbXBvcnQgeyBQcm90b2NvbEVycm9yLCBDb21tYW5kRXJyb3IgfSBmcm9tICcuLi91dGlscy9FcnJvckhhbmRsZXInXG5cbmxldCBzZXNzaW9uID0gZnVuY3Rpb24gKGRvV2hhdCA9ICdHRVQnLCBzZXNzaW9uSWQpIHtcbiAgICAvKiFcbiAgICAgKiBwYXJhbWV0ZXIgY2hlY2tcbiAgICAgKi9cbiAgICBpZiAodHlwZW9mIHNlc3Npb25JZCAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgLyohXG4gICAgICAgICAqIGlmIHNlc3Npb24gd2FzIGFscmVhZHkgY2xvc2VkIHJldHVybiBgdW5kZWZpbmVkYFxuICAgICAgICAgKiBUb0RvIG9yIG1heWJlIHRocm93IGFuIGVycm9yXG4gICAgICAgICAqL1xuICAgICAgICBpZiAoIXRoaXMucmVxdWVzdEhhbmRsZXIuc2Vzc2lvbklEKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgICB9XG5cbiAgICAgICAgc2Vzc2lvbklkID0gdGhpcy5yZXF1ZXN0SGFuZGxlci5zZXNzaW9uSURcbiAgICB9XG5cbiAgICBkb1doYXQgPSBkb1doYXQudG9VcHBlckNhc2UoKVxuXG4gICAgLyohXG4gICAgICogZ2V0IHNlc3Npb25cbiAgICAgKi9cbiAgICBpZiAoZG9XaGF0ID09PSAnR0VUJykge1xuICAgICAgICByZXR1cm4gdGhpcy5yZXF1ZXN0SGFuZGxlci5jcmVhdGUoe1xuICAgICAgICAgICAgcGF0aDogYC9zZXNzaW9uLyR7c2Vzc2lvbklkfWAsXG4gICAgICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICAgICAgcmVxdWlyZXNTZXNzaW9uOiBmYWxzZVxuICAgICAgICB9KVxuICAgIH1cblxuICAgIC8qIVxuICAgICAqIGRlbGV0ZSBzZXNzaW9uXG4gICAgICovXG4gICAgaWYgKGRvV2hhdCA9PT0gJ0RFTEVURScpIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIG1ha2Ugc3VyZSB3ZSBkb24ndCBydW4gdGhpcyBjb21tYW5kIHdpdGhpbiB3ZGlvIHRlc3QgcnVuXG4gICAgICAgICAqL1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLmlzV0RJTykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IENvbW1hbmRFcnJvcihgRG9uJ3QgZW5kIHRoZSBzZXNzaW9uIG1hbnVhbGx5LiBUaGlzIHdpbGwgYmUgZG9uZSBhdXRvbWF0aWNhbGx5LmApXG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmVtaXQoJ2VuZCcsIHtcbiAgICAgICAgICAgIHNlc3Npb25JZDogdGhpcy5yZXF1ZXN0SGFuZGxlci5zZXNzaW9uSURcbiAgICAgICAgfSlcblxuICAgICAgICByZXR1cm4gdGhpcy5yZXF1ZXN0SGFuZGxlci5jcmVhdGUoe1xuICAgICAgICAgICAgcGF0aDogJy9zZXNzaW9uLycgKyBzZXNzaW9uSWQsXG4gICAgICAgICAgICBtZXRob2Q6ICdERUxFVEUnLFxuICAgICAgICAgICAgcmVxdWlyZXNTZXNzaW9uOiBmYWxzZVxuICAgICAgICB9KS50aGVuKChyZXMpID0+IHtcbiAgICAgICAgICAgIC8qIVxuICAgICAgICAgICAgICogZGVsZXRlIHNlc3Npb25JRCBpbiBSZXF1ZXN0SGFuZGxlclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB0aGlzLnJlcXVlc3RIYW5kbGVyLnNlc3Npb25JRCA9IG51bGxcbiAgICAgICAgICAgIHJldHVybiByZXNcbiAgICAgICAgfSlcbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgUHJvdG9jb2xFcnJvcignVGhlIHNlc3Npb24gY29tbWFuZCBuZWVkIGVpdGhlciBhIFxcJ2RlbGV0ZVxcJyBvciBcXCdnZXRcXCdhdHRyaWJ1dGUgdG8ga25vdyB3aGF0IHRvIGRvLiBleGFtcGxlOiBjbGllbnQuc2Vzc2lvbihcXCdnZXRcXCcpLnRoZW4oY2FsbGJhY2spIHRvIGdldCB0aGUgY2FwYWJpbGl0aWVzIG9mIHRoZSBzZXNzaW9uLicpXG59XG5cbmV4cG9ydCBkZWZhdWx0IHNlc3Npb25cbiJdfQ== |