tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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")