test_cookies.py (4639B)
1 # This Source Code Form is subject to the terms of the Mozilla Public 2 # License, v. 2.0. If a copy of the MPL was not distributed with this 3 # file, You can obtain one at http://mozilla.org/MPL/2.0/. 4 5 import calendar 6 import random 7 import time 8 9 from marionette_driver.errors import UnsupportedOperationException 10 from marionette_harness import MarionetteTestCase 11 12 13 class CookieTest(MarionetteTestCase): 14 def setUp(self): 15 MarionetteTestCase.setUp(self) 16 test_url = self.marionette.absolute_url("test.html") 17 self.marionette.navigate(test_url) 18 self.COOKIE_A = {"name": "foo", "value": "bar", "path": "/", "secure": False} 19 20 def tearDown(self): 21 self.marionette.delete_all_cookies() 22 MarionetteTestCase.tearDown(self) 23 24 def test_add_cookie(self): 25 self.marionette.add_cookie(self.COOKIE_A) 26 cookie_returned = str(self.marionette.execute_script("return document.cookie")) 27 self.assertTrue(self.COOKIE_A["name"] in cookie_returned) 28 29 def test_adding_a_cookie_that_expired_in_the_past(self): 30 cookie = self.COOKIE_A.copy() 31 cookie["expiry"] = calendar.timegm(time.gmtime()) - (60 * 60 * 24) 32 self.marionette.add_cookie(cookie) 33 cookies = self.marionette.get_cookies() 34 self.assertEqual(0, len(cookies)) 35 36 def test_chrome_error(self): 37 with self.marionette.using_context("chrome"): 38 self.assertRaises( 39 UnsupportedOperationException, self.marionette.add_cookie, self.COOKIE_A 40 ) 41 self.assertRaises( 42 UnsupportedOperationException, 43 self.marionette.delete_cookie, 44 self.COOKIE_A, 45 ) 46 self.assertRaises( 47 UnsupportedOperationException, self.marionette.delete_all_cookies 48 ) 49 self.assertRaises( 50 UnsupportedOperationException, self.marionette.get_cookies 51 ) 52 53 def test_delete_all_cookie(self): 54 self.marionette.add_cookie(self.COOKIE_A) 55 cookie_returned = str(self.marionette.execute_script("return document.cookie")) 56 print(cookie_returned) 57 self.assertTrue(self.COOKIE_A["name"] in cookie_returned) 58 self.marionette.delete_all_cookies() 59 self.assertFalse(self.marionette.get_cookies()) 60 61 def test_delete_cookie(self): 62 self.marionette.add_cookie(self.COOKIE_A) 63 cookie_returned = str(self.marionette.execute_script("return document.cookie")) 64 self.assertTrue(self.COOKIE_A["name"] in cookie_returned) 65 self.marionette.delete_cookie("foo") 66 cookie_returned = str(self.marionette.execute_script("return document.cookie")) 67 self.assertFalse(self.COOKIE_A["name"] in cookie_returned) 68 69 def test_should_get_cookie_by_name(self): 70 key = "key_{}".format(int(random.random() * 10000000)) 71 self.marionette.execute_script( 72 "document.cookie = arguments[0] + '=set';", [key] 73 ) 74 75 cookie = self.marionette.get_cookie(key) 76 self.assertEqual("set", cookie["value"]) 77 78 def test_get_all_cookies(self): 79 key1 = "key_{}".format(int(random.random() * 10000000)) 80 key2 = "key_{}".format(int(random.random() * 10000000)) 81 82 cookies = self.marionette.get_cookies() 83 count = len(cookies) 84 85 one = {"name": key1, "value": "value"} 86 two = {"name": key2, "value": "value"} 87 88 self.marionette.add_cookie(one) 89 self.marionette.add_cookie(two) 90 91 test_url = self.marionette.absolute_url("test.html") 92 self.marionette.navigate(test_url) 93 cookies = self.marionette.get_cookies() 94 self.assertEqual(count + 2, len(cookies)) 95 96 def test_should_not_delete_cookies_with_a_similar_name(self): 97 cookieOneName = "fish" 98 cookie1 = {"name": cookieOneName, "value": "cod"} 99 cookie2 = {"name": cookieOneName + "x", "value": "earth"} 100 self.marionette.add_cookie(cookie1) 101 self.marionette.add_cookie(cookie2) 102 103 self.marionette.delete_cookie(cookieOneName) 104 cookies = self.marionette.get_cookies() 105 106 self.assertFalse(cookie1["name"] == cookies[0]["name"], msg=str(cookies)) 107 self.assertEqual(cookie2["name"], cookies[0]["name"], msg=str(cookies)) 108 109 def test_we_get_required_elements_when_available(self): 110 self.marionette.add_cookie(self.COOKIE_A) 111 cookies = self.marionette.get_cookies() 112 113 self.assertIn("name", cookies[0], "name not available") 114 self.assertIn("value", cookies[0], "value not available") 115 self.assertIn("httpOnly", cookies[0], "httpOnly not available")