UNPKG

testium-driver-wd

Version:
116 lines (97 loc) 3.75 kB
/* * Copyright (c) 2015, Groupon, Inc. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of GROUPON nor the names of its contributors may be * used to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ 'use strict'; const assert = require('assertive'); const _ = require('lodash'); const util = require('util'); const getTestiumCookie = require('testium-cookie').getTestiumCookie; exports.clearCookies = function clearCookies() { return this.deleteAllCookies(); }; exports.setCookieValue = function setCookieValue(name, value, options) { const cookie = _.extend( { name, value, path: '/', domain: this.defaultCookieDomain || '127.0.0.1', secure: false, }, options || {} ); return this.setCookie(cookie); }; exports.getCookieValue = function getCookieValue(name) { return this.getCookie(name).then(_.property('value')); }; exports.setCookies = util.deprecate(function setCookies(cookies) { return Promise.all(cookies.map(this.setCookie, this)); }, 'setCookies() has poor defaults, use setCookieValues() instead'); exports.setCookieValues = function setCookieValues(cookies) { const browser = this; return Promise.all( _.map(cookies, (value, name) => { return browser.setCookieValue(name, value); }) ); }; exports.getCookie = function getCookie(name) { return this.getCookies().then(_.partial(_.find, _, { name })); }; exports.getCookies = function getCookies() { return this.allCookies().then(_.partial(_.reject, _, { name: '_testium_' })); }; exports.clearCookie = function clearCookie(name) { return this.deleteCookie(name); }; // BEGIN _testium_ cookie magic // eslint-disable-next-line no-underscore-dangle exports._getTestiumCookieField = function _getTestiumCookieField(name) { return this.allCookies() .then(getTestiumCookie) .then(_.property(name)); }; exports.getStatusCode = function getStatusCode() { return this._getTestiumCookieField('statusCode'); }; exports.assertStatusCode = function assertStatusCode(expectedStatus) { return this.getStatusCode().then(actualStatus => { assert.equal('statusCode', expectedStatus, actualStatus); }); }; exports.getHeaders = function getHeaders() { return this._getTestiumCookieField('headers'); }; exports.getHeader = function getHeader(name) { return this.getHeaders().then(_.property(name)); }; // END _testium_ cookie magic