/node_modules/protractor/node_modules/selenium-webdriver/test/cookie_test.js

https://gitlab.com/bethalice523/WebAPI · JavaScript · 206 lines · 148 code · 41 blank · 17 comment · 1 complexity · 451ee3f5f12ad8010e178ae54ab0f5f5 MD5 · raw file

  1. // Licensed to the Software Freedom Conservancy (SFC) under one
  2. // or more contributor license agreements. See the NOTICE file
  3. // distributed with this work for additional information
  4. // regarding copyright ownership. The SFC licenses this file
  5. // to you under the Apache License, Version 2.0 (the
  6. // "License"); you may not use this file except in compliance
  7. // with the License. You may obtain a copy of the License at
  8. //
  9. // http://www.apache.org/licenses/LICENSE-2.0
  10. //
  11. // Unless required by applicable law or agreed to in writing,
  12. // software distributed under the License is distributed on an
  13. // "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  14. // KIND, either express or implied. See the License for the
  15. // specific language governing permissions and limitations
  16. // under the License.
  17. 'use strict';
  18. var assert = require('assert'),
  19. url = require('url');
  20. var test = require('../lib/test'),
  21. fileserver = require('../lib/test/fileserver'),
  22. Browser = require('..').Browser,
  23. Pages = test.Pages;
  24. test.suite(function(env) {
  25. var driver;
  26. test.before(function() {
  27. driver = env.builder().build();
  28. });
  29. test.after(function() {
  30. driver.quit();
  31. });
  32. test.ignore(env.browsers(Browser.SAFARI)). // Cookie handling is broken.
  33. describe('Cookie Management;', function() {
  34. test.beforeEach(function() {
  35. driver.get(fileserver.Pages.ajaxyPage);
  36. driver.manage().deleteAllCookies();
  37. assertHasCookies();
  38. });
  39. test.it('can add new cookies', function() {
  40. var cookie = createCookieSpec();
  41. driver.manage().addCookie(cookie.name, cookie.value);
  42. driver.manage().getCookie(cookie.name).then(function(actual) {
  43. assert.equal(actual.value, cookie.value);
  44. });
  45. });
  46. test.it('can get all cookies', function() {
  47. var cookie1 = createCookieSpec();
  48. var cookie2 = createCookieSpec();
  49. driver.manage().addCookie(cookie1.name, cookie1.value);
  50. driver.manage().addCookie(cookie2.name, cookie2.value);
  51. assertHasCookies(cookie1, cookie2);
  52. });
  53. test.ignore(env.browsers(Browser.IE)).
  54. it('only returns cookies visible to the current page', function() {
  55. var cookie1 = createCookieSpec();
  56. var cookie2 = createCookieSpec();
  57. driver.manage().addCookie(cookie1.name, cookie1.value);
  58. var pageUrl = fileserver.whereIs('page/1');
  59. driver.get(pageUrl);
  60. driver.manage().addCookie(
  61. cookie2.name, cookie2.value, url.parse(pageUrl).pathname);
  62. assertHasCookies(cookie1, cookie2);
  63. driver.get(fileserver.Pages.ajaxyPage);
  64. assertHasCookies(cookie1);
  65. driver.get(pageUrl);
  66. assertHasCookies(cookie1, cookie2);
  67. });
  68. test.it('can delete all cookies', function() {
  69. var cookie1 = createCookieSpec();
  70. var cookie2 = createCookieSpec();
  71. driver.executeScript(
  72. 'document.cookie = arguments[0] + "=" + arguments[1];' +
  73. 'document.cookie = arguments[2] + "=" + arguments[3];',
  74. cookie1.name, cookie1.value, cookie2.name, cookie2.value);
  75. assertHasCookies(cookie1, cookie2);
  76. driver.manage().deleteAllCookies();
  77. assertHasCookies();
  78. });
  79. test.it('can delete cookies by name', function() {
  80. var cookie1 = createCookieSpec();
  81. var cookie2 = createCookieSpec();
  82. driver.executeScript(
  83. 'document.cookie = arguments[0] + "=" + arguments[1];' +
  84. 'document.cookie = arguments[2] + "=" + arguments[3];',
  85. cookie1.name, cookie1.value, cookie2.name, cookie2.value);
  86. assertHasCookies(cookie1, cookie2);
  87. driver.manage().deleteCookie(cookie1.name);
  88. assertHasCookies(cookie2);
  89. });
  90. test.it('should only delete cookie with exact name', function() {
  91. var cookie1 = createCookieSpec();
  92. var cookie2 = createCookieSpec();
  93. var cookie3 = {name: cookie1.name + 'xx', value: cookie1.value};
  94. driver.executeScript(
  95. 'document.cookie = arguments[0] + "=" + arguments[1];' +
  96. 'document.cookie = arguments[2] + "=" + arguments[3];' +
  97. 'document.cookie = arguments[4] + "=" + arguments[5];',
  98. cookie1.name, cookie1.value, cookie2.name, cookie2.value,
  99. cookie3.name, cookie3.value);
  100. assertHasCookies(cookie1, cookie2, cookie3);
  101. driver.manage().deleteCookie(cookie1.name);
  102. assertHasCookies(cookie2, cookie3);
  103. });
  104. test.it('can delete cookies set higher in the path', function() {
  105. var cookie = createCookieSpec();
  106. var childUrl = fileserver.whereIs('child/childPage.html');
  107. var grandchildUrl = fileserver.whereIs(
  108. 'child/grandchild/grandchildPage.html');
  109. driver.get(childUrl);
  110. driver.manage().addCookie(cookie.name, cookie.value);
  111. assertHasCookies(cookie);
  112. driver.get(grandchildUrl);
  113. assertHasCookies(cookie);
  114. driver.manage().deleteCookie(cookie.name);
  115. assertHasCookies();
  116. driver.get(childUrl);
  117. assertHasCookies();
  118. });
  119. test.ignore(env.browsers(Browser.ANDROID, Browser.FIREFOX, Browser.IE)).
  120. it('should retain cookie expiry', function() {
  121. var cookie = createCookieSpec();
  122. var expirationDelay = 5 * 1000;
  123. var futureTime = Date.now() + expirationDelay;
  124. driver.manage().addCookie(
  125. cookie.name, cookie.value, null, null, false, futureTime);
  126. driver.manage().getCookie(cookie.name).then(function(actual) {
  127. assert.equal(actual.value, cookie.value);
  128. // expiry times are exchanged in seconds since January 1, 1970 UTC.
  129. assert.equal(actual.expiry, Math.floor(futureTime / 1000));
  130. });
  131. driver.sleep(expirationDelay);
  132. assertHasCookies();
  133. });
  134. });
  135. function createCookieSpec() {
  136. return {
  137. name: getRandomString(),
  138. value: getRandomString()
  139. };
  140. }
  141. function buildCookieMap(cookies) {
  142. var map = {};
  143. cookies.forEach(function(cookie) {
  144. map[cookie.name] = cookie;
  145. });
  146. return map;
  147. }
  148. function assertHasCookies(var_args) {
  149. var expected = Array.prototype.slice.call(arguments, 0);
  150. driver.manage().getCookies().then(function(cookies) {
  151. assert.equal(cookies.length, expected.length,
  152. 'Wrong # of cookies.' +
  153. '\n Expected: ' + JSON.stringify(expected) +
  154. '\n Was : ' + JSON.stringify(cookies));
  155. var map = buildCookieMap(cookies);
  156. for (var i = 0; i < expected.length; ++i) {
  157. assert.equal(expected[i].value, map[expected[i].name].value);
  158. }
  159. });
  160. }
  161. function getRandomString() {
  162. var x = 1234567890;
  163. return Math.floor(Math.random() * x).toString(36);
  164. }
  165. });