def test_invalid(self): # Invalid Max-Age s = 'color=blue; Max-Age=over-the-hill' with pytest.raises(ValueError): Cookie.parse(s) cookie = Cookie('color', 'blue') with pytest.raises(ValueError): cookie.max_age = 'over-the-hill' # Invalid Expires s = 'color=blue; Expires=Sun, 06 Xxx 1994 08:49:37 GMT' with pytest.raises(ValueError): Cookie.parse(s) cookie = Cookie('color', 'blue') with pytest.raises(ValueError): cookie.expires = 'Sun, 06 Xxx 1994 08:49:37 GMT'
def test_invalid(self): # Invalid Max-Age s = 'color=blue; Max-Age=over-the-hill' with self.assertRaises(ValueError): cookies = Cookie.parse(s) cookie = Cookie('color', 'blue') with self.assertRaises(ValueError): cookie.max_age = 'over-the-hill' # Invalid Expires s = 'color=blue; Expires=Sun, 06 Xxx 1994 08:49:37 GMT' with self.assertRaises(ValueError): cookies = Cookie.parse(s) cookie = Cookie('color', 'blue') with self.assertRaises(ValueError): cookie.expires = 'Sun, 06 Xxx 1994 08:49:37 GMT'
def test_invalid(self): # Invalid Max-Age s = "color=blue; Max-Age=over-the-hill" with self.assertRaises(ValueError): Cookie.parse(s) cookie = Cookie("color", "blue") with self.assertRaises(ValueError): cookie.max_age = "over-the-hill" # Invalid Expires s = "color=blue; Expires=Sun, 06 Xxx 1994 08:49:37 GMT" with self.assertRaises(ValueError): Cookie.parse(s) cookie = Cookie("color", "blue") with self.assertRaises(ValueError): cookie.expires = "Sun, 06 Xxx 1994 08:49:37 GMT"
def test_parse(self): # Empty string s = '' cookies = Cookie.parse(s) assert len(cookies) == 0 # Invalid single token s = 'color' with pytest.raises(ValueError): cookies = Cookie.parse(s) # Invalid single token that's keyword s = 'HttpOnly' with pytest.raises(ValueError): cookies = Cookie.parse(s) # Invalid key/value pair whose key is a keyword s = 'domain=example.com' with pytest.raises(ValueError): cookies = Cookie.parse(s) # 1 cookie with empty value s = 'color=' cookies = Cookie.parse(s) assert len(cookies) == 1 cookie = cookies[0] assert cookie.key == 'color' assert cookie.value == '' assert cookie.domain is None assert cookie.path is None assert cookie.max_age is None assert cookie.expires is None assert cookie.secure is None assert cookie.httponly is None assert str(cookie) == "color=" assert cookie.http_cookie() == "color=;" # 1 cookie with name/value s = 'color=blue' cookies = Cookie.parse(s) assert len(cookies) == 1 cookie = cookies[0] assert cookie.key == 'color' assert cookie.value == 'blue' assert cookie.domain is None assert cookie.path is None assert cookie.max_age is None assert cookie.expires is None assert cookie.secure is None assert cookie.httponly is None assert str(cookie) == "color=blue" assert cookie.http_cookie() == "color=blue;" # 1 cookie with whose value is quoted # Use "get by name" utility to extract specific cookie s = 'color="blue"' cookie = Cookie.get_named_cookie_from_string(s, 'color') assert cookie is not None, Cookie assert cookie.key == 'color' assert cookie.value == 'blue' assert cookie.domain is None assert cookie.path is None assert cookie.max_age is None assert cookie.expires is None assert cookie.secure is None assert cookie.httponly is None assert str(cookie) == "color=blue" assert cookie.http_cookie() == "color=blue;" # 1 cookie with name/value and domain, path attributes. # Change up the whitespace a bit. s = 'color =blue; domain= example.com ; path = /toplevel ' cookies = Cookie.parse(s) assert len(cookies) == 1 cookie = cookies[0] assert cookie.key == 'color' assert cookie.value == 'blue' assert cookie.domain == 'example.com' assert cookie.path == '/toplevel' assert cookie.max_age is None assert cookie.expires is None assert cookie.secure is None assert cookie.httponly is None assert str(cookie) == "color=blue; Domain=example.com; Path=/toplevel" assert cookie.http_cookie() == "color=blue;" # 2 cookies, various attributes s = 'color=blue; Max-Age=3600; temperature=hot; HttpOnly' cookies = Cookie.parse(s) assert len(cookies) == 2 cookie = cookies[0] assert cookie.key == 'color' assert cookie.value == 'blue' assert cookie.domain is None assert cookie.path is None assert cookie.max_age == 3600 assert cookie.expires is None assert cookie.secure is None assert cookie.httponly is None assert str(cookie) == "color=blue; Max-Age=3600" assert cookie.http_cookie() == "color=blue;" cookie = cookies[1] assert cookie.key == 'temperature' assert cookie.value == 'hot' assert cookie.domain is None assert cookie.path is None assert cookie.max_age is None assert cookie.expires is None assert cookie.secure is None assert cookie.httponly is True assert str(cookie) == "temperature=hot; HttpOnly" assert cookie.http_cookie() == "temperature=hot;"
def test_expires(self): # 1 cookie with name/value and no Max-Age and no Expires s = 'color=blue;' cookies = Cookie.parse(s) assert len(cookies) == 1 cookie = cookies[0] # Force timestamp to known value cookie.timestamp = self.now assert cookie.key == 'color' assert cookie.value == 'blue' assert cookie.domain is None assert cookie.path is None assert cookie.max_age is None assert cookie.expires is None assert cookie.secure is None assert cookie.httponly is None assert str(cookie) == "color=blue" assert cookie.get_expiration() is None # Normalize assert cookie.normalize_expiration() is None assert cookie.max_age is None assert cookie.expires is None assert str(cookie) == "color=blue" # 1 cookie with name/value and Max-Age s = 'color=blue; max-age=%d' % (self.max_age) cookies = Cookie.parse(s) assert len(cookies) == 1 cookie = cookies[0] # Force timestamp to known value cookie.timestamp = self.now assert cookie.key == 'color' assert cookie.value == 'blue' assert cookie.domain is None assert cookie.path is None assert cookie.max_age == self.max_age assert cookie.expires is None assert cookie.secure is None assert cookie.httponly is None assert str(cookie) == "color=blue; Max-Age=%d" % (self.max_age) assert cookie.get_expiration() == self.age_expiration # Normalize assert cookie.normalize_expiration() == self.age_expiration assert cookie.max_age is None assert cookie.expires == self.age_expiration assert str(cookie) == "color=blue; Expires=%s" % (self.age_string) # 1 cookie with name/value and Expires s = 'color=blue; Expires=%s' % (self.expires_string) cookies = Cookie.parse(s) assert len(cookies) == 1 cookie = cookies[0] # Force timestamp to known value cookie.timestamp = self.now assert cookie.key == 'color' assert cookie.value == 'blue' assert cookie.domain is None assert cookie.path is None assert cookie.max_age is None assert cookie.expires == self.expires assert cookie.secure is None assert cookie.httponly is None assert str(cookie) == "color=blue; Expires=%s" % (self.expires_string) assert cookie.get_expiration() == self.expires # Normalize assert cookie.normalize_expiration() == self.expires assert cookie.max_age is None assert cookie.expires == self.expires assert str(cookie) == "color=blue; Expires=%s" % (self.expires_string) # 1 cookie with name/value witht both Max-Age and Expires, Max-Age takes precedence s = 'color=blue; Expires=%s; max-age=%d' % (self.expires_string, self.max_age) cookies = Cookie.parse(s) assert len(cookies) == 1 cookie = cookies[0] # Force timestamp to known value cookie.timestamp = self.now assert cookie.key == 'color' assert cookie.value == 'blue' assert cookie.domain is None assert cookie.path is None assert cookie.max_age == self.max_age assert cookie.expires == self.expires assert cookie.secure is None assert cookie.httponly is None expected = "color=blue; Max-Age={}; Expires={}".format( self.max_age, self.expires_string) assert str(cookie) == expected assert cookie.get_expiration() == self.age_expiration # Normalize assert cookie.normalize_expiration() == self.age_expiration assert cookie.max_age is None assert cookie.expires == self.age_expiration assert str(cookie) == "color=blue; Expires=%s" % (self.age_string) # Verify different types can be assigned to the timestamp and # expires attribute. cookie = Cookie('color', 'blue') cookie.timestamp = self.now assert cookie.timestamp == self.now cookie.timestamp = self.now_timestamp assert cookie.timestamp == self.now cookie.timestamp = self.now_string assert cookie.timestamp == self.now assert cookie.expires is None cookie.expires = self.expires assert cookie.expires == self.expires cookie.expires = self.expires_timestamp assert cookie.expires == self.expires cookie.expires = self.expires_string assert cookie.expires == self.expires
def test_parse(self): # Empty string s = '' cookies = Cookie.parse(s) self.assertEqual(len(cookies), 0) # Invalid single token s = 'color' with self.assertRaises(ValueError): cookies = Cookie.parse(s) # Invalid single token that's keyword s = 'HttpOnly' with self.assertRaises(ValueError): cookies = Cookie.parse(s) # Invalid key/value pair whose key is a keyword s = 'domain=example.com' with self.assertRaises(ValueError): cookies = Cookie.parse(s) # 1 cookie with empty value s = 'color=' cookies = Cookie.parse(s) self.assertEqual(len(cookies), 1) cookie = cookies[0] self.assertEqual(cookie.key, 'color') self.assertEqual(cookie.value, '') self.assertEqual(cookie.domain, None) self.assertEqual(cookie.path, None) self.assertEqual(cookie.max_age, None) self.assertEqual(cookie.expires, None) self.assertEqual(cookie.secure, None) self.assertEqual(cookie.httponly, None) self.assertEqual(str(cookie), "color=") self.assertEqual(cookie.http_cookie(), "color=;") # 1 cookie with name/value s = 'color=blue' cookies = Cookie.parse(s) self.assertEqual(len(cookies), 1) cookie = cookies[0] self.assertEqual(cookie.key, 'color') self.assertEqual(cookie.value, 'blue') self.assertEqual(cookie.domain, None) self.assertEqual(cookie.path, None) self.assertEqual(cookie.max_age, None) self.assertEqual(cookie.expires, None) self.assertEqual(cookie.secure, None) self.assertEqual(cookie.httponly, None) self.assertEqual(str(cookie), "color=blue") self.assertEqual(cookie.http_cookie(), "color=blue;") # 1 cookie with whose value is quoted # Use "get by name" utility to extract specific cookie s = 'color="blue"' cookie = Cookie.get_named_cookie_from_string(s, 'color') self.assertIsNotNone(cookie) self.assertIsNotNone(cookie, Cookie) self.assertEqual(cookie.key, 'color') self.assertEqual(cookie.value, 'blue') self.assertEqual(cookie.domain, None) self.assertEqual(cookie.path, None) self.assertEqual(cookie.max_age, None) self.assertEqual(cookie.expires, None) self.assertEqual(cookie.secure, None) self.assertEqual(cookie.httponly, None) self.assertEqual(str(cookie), "color=blue") self.assertEqual(cookie.http_cookie(), "color=blue;") # 1 cookie with name/value and domain, path attributes. # Change up the whitespace a bit. s = 'color =blue; domain= example.com ; path = /toplevel ' cookies = Cookie.parse(s) self.assertEqual(len(cookies), 1) cookie = cookies[0] self.assertEqual(cookie.key, 'color') self.assertEqual(cookie.value, 'blue') self.assertEqual(cookie.domain, 'example.com') self.assertEqual(cookie.path, '/toplevel') self.assertEqual(cookie.max_age, None) self.assertEqual(cookie.expires, None) self.assertEqual(cookie.secure, None) self.assertEqual(cookie.httponly, None) self.assertEqual(str(cookie), "color=blue; Domain=example.com; Path=/toplevel") self.assertEqual(cookie.http_cookie(), "color=blue;") # 2 cookies, various attributes s = 'color=blue; Max-Age=3600; temperature=hot; HttpOnly' cookies = Cookie.parse(s) self.assertEqual(len(cookies), 2) cookie = cookies[0] self.assertEqual(cookie.key, 'color') self.assertEqual(cookie.value, 'blue') self.assertEqual(cookie.domain, None) self.assertEqual(cookie.path, None) self.assertEqual(cookie.max_age, 3600) self.assertEqual(cookie.expires, None) self.assertEqual(cookie.secure, None) self.assertEqual(cookie.httponly, None) self.assertEqual(str(cookie), "color=blue; Max-Age=3600") self.assertEqual(cookie.http_cookie(), "color=blue;") cookie = cookies[1] self.assertEqual(cookie.key, 'temperature') self.assertEqual(cookie.value, 'hot') self.assertEqual(cookie.domain, None) self.assertEqual(cookie.path, None) self.assertEqual(cookie.max_age, None) self.assertEqual(cookie.expires, None) self.assertEqual(cookie.secure, None) self.assertEqual(cookie.httponly, True) self.assertEqual(str(cookie), "temperature=hot; HttpOnly") self.assertEqual(cookie.http_cookie(), "temperature=hot;")
def test_expires(self): # 1 cookie with name/value and no Max-Age and no Expires s = 'color=blue;' cookies = Cookie.parse(s) self.assertEqual(len(cookies), 1) cookie = cookies[0] # Force timestamp to known value cookie.timestamp = self.now self.assertEqual(cookie.key, 'color') self.assertEqual(cookie.value, 'blue') self.assertEqual(cookie.domain, None) self.assertEqual(cookie.path, None) self.assertEqual(cookie.max_age, None) self.assertEqual(cookie.expires, None) self.assertEqual(cookie.secure, None) self.assertEqual(cookie.httponly, None) self.assertEqual(str(cookie), "color=blue") self.assertEqual(cookie.get_expiration(), None) # Normalize self.assertEqual(cookie.normalize_expiration(), None) self.assertEqual(cookie.max_age, None) self.assertEqual(cookie.expires, None) self.assertEqual(str(cookie), "color=blue") # 1 cookie with name/value and Max-Age s = 'color=blue; max-age=%d' % (self.max_age) cookies = Cookie.parse(s) self.assertEqual(len(cookies), 1) cookie = cookies[0] # Force timestamp to known value cookie.timestamp = self.now self.assertEqual(cookie.key, 'color') self.assertEqual(cookie.value, 'blue') self.assertEqual(cookie.domain, None) self.assertEqual(cookie.path, None) self.assertEqual(cookie.max_age, self.max_age) self.assertEqual(cookie.expires, None) self.assertEqual(cookie.secure, None) self.assertEqual(cookie.httponly, None) self.assertEqual(str(cookie), "color=blue; Max-Age=%d" % (self.max_age)) self.assertEqual(cookie.get_expiration(), self.age_expiration) # Normalize self.assertEqual(cookie.normalize_expiration(), self.age_expiration) self.assertEqual(cookie.max_age, None) self.assertEqual(cookie.expires, self.age_expiration) self.assertEqual(str(cookie), "color=blue; Expires=%s" % (self.age_string)) # 1 cookie with name/value and Expires s = 'color=blue; Expires=%s' % (self.expires_string) cookies = Cookie.parse(s) self.assertEqual(len(cookies), 1) cookie = cookies[0] # Force timestamp to known value cookie.timestamp = self.now self.assertEqual(cookie.key, 'color') self.assertEqual(cookie.value, 'blue') self.assertEqual(cookie.domain, None) self.assertEqual(cookie.path, None) self.assertEqual(cookie.max_age, None) self.assertEqual(cookie.expires, self.expires) self.assertEqual(cookie.secure, None) self.assertEqual(cookie.httponly, None) self.assertEqual(str(cookie), "color=blue; Expires=%s" % (self.expires_string)) self.assertEqual(cookie.get_expiration(), self.expires) # Normalize self.assertEqual(cookie.normalize_expiration(), self.expires) self.assertEqual(cookie.max_age, None) self.assertEqual(cookie.expires, self.expires) self.assertEqual(str(cookie), "color=blue; Expires=%s" % (self.expires_string)) # 1 cookie with name/value witht both Max-Age and Expires, Max-Age takes precedence s = 'color=blue; Expires=%s; max-age=%d' % (self.expires_string, self.max_age) cookies = Cookie.parse(s) self.assertEqual(len(cookies), 1) cookie = cookies[0] # Force timestamp to known value cookie.timestamp = self.now self.assertEqual(cookie.key, 'color') self.assertEqual(cookie.value, 'blue') self.assertEqual(cookie.domain, None) self.assertEqual(cookie.path, None) self.assertEqual(cookie.max_age, self.max_age) self.assertEqual(cookie.expires, self.expires) self.assertEqual(cookie.secure, None) self.assertEqual(cookie.httponly, None) self.assertEqual(str(cookie), "color=blue; Max-Age=%d; Expires=%s" % (self.max_age, self.expires_string)) self.assertEqual(cookie.get_expiration(), self.age_expiration) # Normalize self.assertEqual(cookie.normalize_expiration(), self.age_expiration) self.assertEqual(cookie.max_age, None) self.assertEqual(cookie.expires, self.age_expiration) self.assertEqual(str(cookie), "color=blue; Expires=%s" % (self.age_string)) # Verify different types can be assigned to the timestamp and # expires attribute. cookie = Cookie('color', 'blue') cookie.timestamp = self.now self.assertEqual(cookie.timestamp, self.now) cookie.timestamp = self.now_timestamp self.assertEqual(cookie.timestamp, self.now) cookie.timestamp = self.now_string self.assertEqual(cookie.timestamp, self.now) self.assertEqual(cookie.expires, None) cookie.expires = self.expires self.assertEqual(cookie.expires, self.expires) cookie.expires = self.expires_timestamp self.assertEqual(cookie.expires, self.expires) cookie.expires = self.expires_string self.assertEqual(cookie.expires, self.expires)