all files / DEV/lib/protocol/ session.js

91.3% Statements 21/23
91.67% Branches 11/12
100% Functions 2/2
80% Lines 4/5
5 statements, 6 branches Ignored     
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99                                                                                                                                                                                               
/**
 *
 * 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==