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

95.24% Statements 20/21
78.57% Branches 11/14
100% Functions 2/2
75% Lines 3/4
2 statements, 3 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                                                                                                                                                       
/**
 *
 * Create a new session. The server should attempt to create a session that most
 * closely matches the desired and required capabilities. Required capabilities
 * have higher priority than desired capabilities and must be set for the session
 * to be created.
 *
 * @param {Object} [capabilities] An object describing the session's [desired capabilities](https://code.google.com/p/selenium/wiki/JsonWireProtocol#Desired_Capabilities).
 *
 * @see  https://code.google.com/p/selenium/wiki/JsonWireProtocol#/session
 * @type protocol
 *
 */
 
'use strict';
 
Object.defineProperty(exports, '__esModule', {
    value: true
});I
// istanbul ignore next
 
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
 
var _utilsErrorHandler = require('../utils/ErrorHandler');
 
var _packageJson = require('../../package.json');
 
var _packageJson2 = _interopRequireDefault(_packageJson);
 
var _deepmerge = require('deepmerge');
 
var _deepmerge2 = _interopRequireDefault(_deepmerge);
 
var init = function init() {
    var desiredCapabilities = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];
 
    /**
     * make sure we don't run this command within wdio test run
     */
    if (this.options.isWDIO) {
        throw new _utilsErrorHandler.CommandError('Don\'t call the \'init\' command when using the wdio test runner. ' + 'Your session will get initialised and closed automatically.');
    }
 
    /*!
     * check if session was already established
     */
    if (this.requestHandler.sessionID) {
        throw new _utilsErrorHandler.ProtocolError('Cannot init a new session, please end your current session first');
    }
 
    this.desiredCapabilities = (0, _deepmerge2['default'])(this.desiredCapabilities, desiredCapabilities);
    if (desiredCapabilities.sessionId) {
        this.sessionId = desiredCapabilities.sessionId;
    }
 
    /**
     * report library identity to server
     * @see https://groups.google.com/forum/#!topic/selenium-developers/Zj1ikTz632o
     */
    this.desiredCapabilities = (0, _deepmerge2['default'])(this.desiredCapabilities, {
        requestOrigins: {
            url: _packageJson2['default'].homepage,
            version: _packageJson2['default'].version,
            name: _packageJson2['default'].name
        }
    });
 
    return this.requestHandler.create({
        path: '/session',
        method: 'POST'
    }, {
        desiredCapabilities: this.desiredCapabilities
    });
};
 
exports['default'] = init;
module.exports = exports['default'];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9jaHJpc3RpYW5icm9tYW5uL1NpdGVzL1dlYnByb2pla3RlL3dlYmRyaXZlcmpzL0RFVi9saWIvcHJvdG9jb2wvaW5pdC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztpQ0FjNEMsdUJBQXVCOzsyQkFDbkQsb0JBQW9COzs7O3lCQUNsQixXQUFXOzs7O0FBRTdCLElBQUksSUFBSSxHQUFHLFNBQVAsSUFBSSxHQUF1QztRQUExQixtQkFBbUIseURBQUcsRUFBRTs7Ozs7QUFJekMsUUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRTtBQUNyQixjQUFNLG9DQUFpQixvSUFDNkQsQ0FBQyxDQUFBO0tBQ3hGOzs7OztBQUtELFFBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLEVBQUU7QUFDL0IsY0FBTSxxQ0FBa0Isa0VBQWtFLENBQUMsQ0FBQTtLQUM5Rjs7QUFFRCxRQUFJLENBQUMsbUJBQW1CLEdBQUcsNEJBQU0sSUFBSSxDQUFDLG1CQUFtQixFQUFFLG1CQUFtQixDQUFDLENBQUE7QUFDL0UsUUFBSSxtQkFBbUIsQ0FBQyxTQUFTLEVBQUU7QUFDL0IsWUFBSSxDQUFDLFNBQVMsR0FBRyxtQkFBbUIsQ0FBQyxTQUFTLENBQUE7S0FDakQ7Ozs7OztBQU1ELFFBQUksQ0FBQyxtQkFBbUIsR0FBRyw0QkFBTSxJQUFJLENBQUMsbUJBQW1CLEVBQUU7QUFDdkQsc0JBQWMsRUFBRTtBQUNaLGVBQUcsRUFBRSx5QkFBSSxRQUFRO0FBQ2pCLG1CQUFPLEVBQUUseUJBQUksT0FBTztBQUNwQixnQkFBSSxFQUFFLHlCQUFJLElBQUk7U0FDakI7S0FDSixDQUFDLENBQUE7O0FBRUYsV0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQztBQUM5QixZQUFJLEVBQUUsVUFBVTtBQUNoQixjQUFNLEVBQUUsTUFBTTtLQUNqQixFQUFFO0FBQ0MsMkJBQW1CLEVBQUUsSUFBSSxDQUFDLG1CQUFtQjtLQUNoRCxDQUFDLENBQUE7Q0FDTCxDQUFBOztxQkFFYyxJQUFJIiwiZmlsZSI6Ii9Vc2Vycy9jaHJpc3RpYW5icm9tYW5uL1NpdGVzL1dlYnByb2pla3RlL3dlYmRyaXZlcmpzL0RFVi9saWIvcHJvdG9jb2wvaW5pdC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICpcbiAqIENyZWF0ZSBhIG5ldyBzZXNzaW9uLiBUaGUgc2VydmVyIHNob3VsZCBhdHRlbXB0IHRvIGNyZWF0ZSBhIHNlc3Npb24gdGhhdCBtb3N0XG4gKiBjbG9zZWx5IG1hdGNoZXMgdGhlIGRlc2lyZWQgYW5kIHJlcXVpcmVkIGNhcGFiaWxpdGllcy4gUmVxdWlyZWQgY2FwYWJpbGl0aWVzXG4gKiBoYXZlIGhpZ2hlciBwcmlvcml0eSB0aGFuIGRlc2lyZWQgY2FwYWJpbGl0aWVzIGFuZCBtdXN0IGJlIHNldCBmb3IgdGhlIHNlc3Npb25cbiAqIHRvIGJlIGNyZWF0ZWQuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IFtjYXBhYmlsaXRpZXNdIEFuIG9iamVjdCBkZXNjcmliaW5nIHRoZSBzZXNzaW9uJ3MgW2Rlc2lyZWQgY2FwYWJpbGl0aWVzXShodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL3NlbGVuaXVtL3dpa2kvSnNvbldpcmVQcm90b2NvbCNEZXNpcmVkX0NhcGFiaWxpdGllcykuXG4gKlxuICogQHNlZSAgaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9zZWxlbml1bS93aWtpL0pzb25XaXJlUHJvdG9jb2wjL3Nlc3Npb25cbiAqIEB0eXBlIHByb3RvY29sXG4gKlxuICovXG5cbmltcG9ydCB7IENvbW1hbmRFcnJvciwgUHJvdG9jb2xFcnJvciB9IGZyb20gJy4uL3V0aWxzL0Vycm9ySGFuZGxlcidcbmltcG9ydCBwa2cgZnJvbSAnLi4vLi4vcGFja2FnZS5qc29uJ1xuaW1wb3J0IG1lcmdlIGZyb20gJ2RlZXBtZXJnZSdcblxubGV0IGluaXQgPSBmdW5jdGlvbiAoZGVzaXJlZENhcGFiaWxpdGllcyA9IHt9KSB7XG4gICAgLyoqXG4gICAgICogbWFrZSBzdXJlIHdlIGRvbid0IHJ1biB0aGlzIGNvbW1hbmQgd2l0aGluIHdkaW8gdGVzdCBydW5cbiAgICAgKi9cbiAgICBpZiAodGhpcy5vcHRpb25zLmlzV0RJTykge1xuICAgICAgICB0aHJvdyBuZXcgQ29tbWFuZEVycm9yKGBEb24ndCBjYWxsIHRoZSAnaW5pdCcgY29tbWFuZCB3aGVuIHVzaW5nIHRoZSB3ZGlvIHRlc3QgcnVubmVyLiBgICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgWW91ciBzZXNzaW9uIHdpbGwgZ2V0IGluaXRpYWxpc2VkIGFuZCBjbG9zZWQgYXV0b21hdGljYWxseS5gKVxuICAgIH1cblxuICAgIC8qIVxuICAgICAqIGNoZWNrIGlmIHNlc3Npb24gd2FzIGFscmVhZHkgZXN0YWJsaXNoZWRcbiAgICAgKi9cbiAgICBpZiAodGhpcy5yZXF1ZXN0SGFuZGxlci5zZXNzaW9uSUQpIHtcbiAgICAgICAgdGhyb3cgbmV3IFByb3RvY29sRXJyb3IoJ0Nhbm5vdCBpbml0IGEgbmV3IHNlc3Npb24sIHBsZWFzZSBlbmQgeW91ciBjdXJyZW50IHNlc3Npb24gZmlyc3QnKVxuICAgIH1cblxuICAgIHRoaXMuZGVzaXJlZENhcGFiaWxpdGllcyA9IG1lcmdlKHRoaXMuZGVzaXJlZENhcGFiaWxpdGllcywgZGVzaXJlZENhcGFiaWxpdGllcylcbiAgICBpZiAoZGVzaXJlZENhcGFiaWxpdGllcy5zZXNzaW9uSWQpIHtcbiAgICAgICAgdGhpcy5zZXNzaW9uSWQgPSBkZXNpcmVkQ2FwYWJpbGl0aWVzLnNlc3Npb25JZFxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHJlcG9ydCBsaWJyYXJ5IGlkZW50aXR5IHRvIHNlcnZlclxuICAgICAqIEBzZWUgaHR0cHM6Ly9ncm91cHMuZ29vZ2xlLmNvbS9mb3J1bS8jIXRvcGljL3NlbGVuaXVtLWRldmVsb3BlcnMvWmoxaWtUejYzMm9cbiAgICAgKi9cbiAgICB0aGlzLmRlc2lyZWRDYXBhYmlsaXRpZXMgPSBtZXJnZSh0aGlzLmRlc2lyZWRDYXBhYmlsaXRpZXMsIHtcbiAgICAgICAgcmVxdWVzdE9yaWdpbnM6IHtcbiAgICAgICAgICAgIHVybDogcGtnLmhvbWVwYWdlLFxuICAgICAgICAgICAgdmVyc2lvbjogcGtnLnZlcnNpb24sXG4gICAgICAgICAgICBuYW1lOiBwa2cubmFtZVxuICAgICAgICB9XG4gICAgfSlcblxuICAgIHJldHVybiB0aGlzLnJlcXVlc3RIYW5kbGVyLmNyZWF0ZSh7XG4gICAgICAgIHBhdGg6ICcvc2Vzc2lvbicsXG4gICAgICAgIG1ldGhvZDogJ1BPU1QnXG4gICAgfSwge1xuICAgICAgICBkZXNpcmVkQ2FwYWJpbGl0aWVzOiB0aGlzLmRlc2lyZWRDYXBhYmlsaXRpZXNcbiAgICB9KVxufVxuXG5leHBvcnQgZGVmYXVsdCBpbml0XG4iXX0=