Imported Debian patch 4.7.2-3
This commit is contained in:
committed by
Mario Fetka
parent
27edeba051
commit
8bc559c5a1
@@ -4,19 +4,13 @@ import os
|
||||
|
||||
import pytest
|
||||
|
||||
from ipapython.certdb import (
|
||||
NSSDatabase,
|
||||
TRUSTED_PEER_TRUST_FLAGS,
|
||||
nss_supports_dbm,
|
||||
)
|
||||
from ipapython import ipautil
|
||||
from ipapython.certdb import NSSDatabase, TRUSTED_PEER_TRUST_FLAGS
|
||||
from ipaplatform.osinfo import osinfo
|
||||
|
||||
CERTNICK = 'testcert'
|
||||
CERTSAN = 'testcert.certdb.test'
|
||||
|
||||
if osinfo.id == 'fedora':
|
||||
if osinfo.version_number >= (28,):
|
||||
if int(osinfo.version_id) >= 28:
|
||||
NSS_DEFAULT = 'sql'
|
||||
else:
|
||||
NSS_DEFAULT = 'dbm'
|
||||
@@ -38,16 +32,11 @@ def create_selfsigned(nssdb):
|
||||
'-s', 'CN=testcert',
|
||||
'-n', CERTNICK,
|
||||
'-m', '365',
|
||||
'--extSAN', f'dns:{CERTSAN}'
|
||||
])
|
||||
finally:
|
||||
os.unlink(noisefile)
|
||||
|
||||
|
||||
@pytest.mark.skipif(
|
||||
not nss_supports_dbm(),
|
||||
reason="NSS is built without support of the legacy database(DBM)",
|
||||
)
|
||||
def test_dbm_tmp():
|
||||
with NSSDatabase(dbtype='dbm') as nssdb:
|
||||
assert nssdb.dbtype == 'dbm'
|
||||
@@ -68,19 +57,6 @@ def test_dbm_tmp():
|
||||
assert os.path.basename(nssdb.secmod) == 'secmod.db'
|
||||
|
||||
|
||||
@pytest.mark.skipif(
|
||||
nss_supports_dbm(),
|
||||
reason="NSS is built with support of the legacy database(DBM)",
|
||||
)
|
||||
def test_dbm_raise():
|
||||
with pytest.raises(ValueError) as e:
|
||||
NSSDatabase(dbtype="dbm")
|
||||
assert (
|
||||
str(e.value) == "NSS is built without support of the legacy "
|
||||
"database(DBM)"
|
||||
)
|
||||
|
||||
|
||||
def test_sql_tmp():
|
||||
with NSSDatabase(dbtype='sql') as nssdb:
|
||||
assert nssdb.dbtype == 'sql'
|
||||
@@ -101,10 +77,6 @@ def test_sql_tmp():
|
||||
assert os.path.basename(nssdb.secmod) == 'pkcs11.txt'
|
||||
|
||||
|
||||
@pytest.mark.skipif(
|
||||
not nss_supports_dbm(),
|
||||
reason="NSS is built without support of the legacy database(DBM)",
|
||||
)
|
||||
def test_convert_db():
|
||||
with NSSDatabase(dbtype='dbm') as nssdb:
|
||||
assert nssdb.dbtype == 'dbm'
|
||||
@@ -140,10 +112,6 @@ def test_convert_db():
|
||||
assert os.path.basename(nssdb.secmod) == 'pkcs11.txt'
|
||||
|
||||
|
||||
@pytest.mark.skipif(
|
||||
not nss_supports_dbm(),
|
||||
reason="NSS is built without support of the legacy database(DBM)",
|
||||
)
|
||||
def test_convert_db_nokey():
|
||||
with NSSDatabase(dbtype='dbm') as nssdb:
|
||||
assert nssdb.dbtype == 'dbm'
|
||||
@@ -199,88 +167,3 @@ def test_auto_db():
|
||||
assert nssdb.filenames is not None
|
||||
assert nssdb.exists()
|
||||
nssdb.list_certs()
|
||||
|
||||
|
||||
def test_delete_cert_and_key():
|
||||
"""Test that delete_cert + delete_key always deletes everything
|
||||
|
||||
Test with a NSSDB that contains:
|
||||
- cert + key
|
||||
- key only
|
||||
- cert only
|
||||
- none of them
|
||||
"""
|
||||
cmd = ipautil.run(['mktemp'], capture_output=True)
|
||||
p12file = cmd.output.strip()
|
||||
|
||||
try:
|
||||
with NSSDatabase() as nssdb:
|
||||
nssdb.create_db()
|
||||
|
||||
# 1. Test delete_key_and_cert when cert + key are present
|
||||
# Create a NSS DB with cert + key
|
||||
create_selfsigned(nssdb)
|
||||
# Save both in a p12 file for latter use
|
||||
ipautil.run(
|
||||
[
|
||||
'pk12util',
|
||||
'-o', p12file, '-n', CERTNICK, '-d', nssdb.secdir,
|
||||
'-k', nssdb.pwd_file,
|
||||
'-w', nssdb.pwd_file
|
||||
])
|
||||
# Delete cert and key
|
||||
nssdb.delete_key_and_cert(CERTNICK)
|
||||
# make sure that everything was deleted
|
||||
assert len(nssdb.list_keys()) == 0
|
||||
assert len(nssdb.list_certs()) == 0
|
||||
|
||||
# 2. Test delete_key_and_cert when only key is present
|
||||
# Import cert and key then remove cert
|
||||
import_args = [
|
||||
'pk12util',
|
||||
'-i', p12file, '-d', nssdb.secdir,
|
||||
'-k', nssdb.pwd_file,
|
||||
'-w', nssdb.pwd_file]
|
||||
ipautil.run(import_args)
|
||||
nssdb.delete_cert(CERTNICK)
|
||||
# Delete cert and key
|
||||
nssdb.delete_key_and_cert(CERTNICK)
|
||||
# make sure that everything was deleted
|
||||
assert len(nssdb.list_keys()) == 0
|
||||
assert len(nssdb.list_certs()) == 0
|
||||
|
||||
# 3. Test delete_key_and_cert when only cert is present
|
||||
# Import cert and key then remove key
|
||||
ipautil.run(import_args)
|
||||
nssdb.delete_key_only(CERTNICK)
|
||||
# make sure the db contains only the cert
|
||||
assert len(nssdb.list_keys()) == 0
|
||||
assert len(nssdb.list_certs()) == 1
|
||||
|
||||
# Delete cert and key when key is not present
|
||||
nssdb.delete_key_and_cert(CERTNICK)
|
||||
# make sure that everything was deleted
|
||||
assert len(nssdb.list_keys()) == 0
|
||||
assert len(nssdb.list_certs()) == 0
|
||||
|
||||
# 4. Test delete_key_and_cert with a wrong nickname
|
||||
# Import cert and key
|
||||
ipautil.run(import_args)
|
||||
# Delete cert and key
|
||||
nssdb.delete_key_and_cert('wrongnick')
|
||||
# make sure that nothing was deleted
|
||||
assert len(nssdb.list_keys()) == 1
|
||||
assert len(nssdb.list_certs()) == 1
|
||||
finally:
|
||||
os.unlink(p12file)
|
||||
|
||||
|
||||
def test_check_validity():
|
||||
with NSSDatabase() as nssdb:
|
||||
nssdb.create_db()
|
||||
create_selfsigned(nssdb)
|
||||
with pytest.raises(ValueError):
|
||||
nssdb.verify_ca_cert_validity(CERTNICK)
|
||||
nssdb.verify_server_cert_validity(CERTNICK, CERTSAN)
|
||||
with pytest.raises(ValueError):
|
||||
nssdb.verify_server_cert_validity(CERTNICK, 'invalid.example')
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
import unittest
|
||||
import datetime
|
||||
import email.utils
|
||||
import calendar
|
||||
@@ -26,127 +27,125 @@ import pytest
|
||||
|
||||
pytestmark = pytest.mark.tier0
|
||||
|
||||
|
||||
class TestParse:
|
||||
class TestParse(unittest.TestCase):
|
||||
|
||||
def test_parse(self):
|
||||
# Empty string
|
||||
s = ''
|
||||
cookies = Cookie.parse(s)
|
||||
assert len(cookies) == 0
|
||||
self.assertEqual(len(cookies), 0)
|
||||
|
||||
# Invalid single token
|
||||
s = 'color'
|
||||
with pytest.raises(ValueError):
|
||||
with self.assertRaises(ValueError):
|
||||
cookies = Cookie.parse(s)
|
||||
|
||||
# Invalid single token that's keyword
|
||||
s = 'HttpOnly'
|
||||
with pytest.raises(ValueError):
|
||||
with self.assertRaises(ValueError):
|
||||
cookies = Cookie.parse(s)
|
||||
|
||||
# Invalid key/value pair whose key is a keyword
|
||||
s = 'domain=example.com'
|
||||
with pytest.raises(ValueError):
|
||||
with self.assertRaises(ValueError):
|
||||
cookies = Cookie.parse(s)
|
||||
|
||||
# 1 cookie with empty value
|
||||
s = 'color='
|
||||
cookies = Cookie.parse(s)
|
||||
assert len(cookies) == 1
|
||||
self.assertEqual(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=;"
|
||||
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)
|
||||
assert len(cookies) == 1
|
||||
self.assertEqual(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;"
|
||||
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')
|
||||
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;"
|
||||
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)
|
||||
assert len(cookies) == 1
|
||||
self.assertEqual(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;"
|
||||
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)
|
||||
assert len(cookies) == 2
|
||||
self.assertEqual(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;"
|
||||
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]
|
||||
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;"
|
||||
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;")
|
||||
|
||||
class TestExpires(unittest.TestCase):
|
||||
|
||||
class TestExpires:
|
||||
|
||||
@pytest.fixture(autouse=True)
|
||||
def expires_setup(self):
|
||||
def setUp(self):
|
||||
# Force microseconds to zero because cookie timestamps only have second resolution
|
||||
self.now = datetime.datetime.utcnow().replace(microsecond=0)
|
||||
self.now_timestamp = calendar.timegm(self.now.utctimetuple())
|
||||
@@ -165,237 +164,233 @@ class TestExpires:
|
||||
# 1 cookie with name/value and no Max-Age and no Expires
|
||||
s = 'color=blue;'
|
||||
cookies = Cookie.parse(s)
|
||||
assert len(cookies) == 1
|
||||
self.assertEqual(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
|
||||
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
|
||||
assert cookie.normalize_expiration() is None
|
||||
assert cookie.max_age is None
|
||||
assert cookie.expires is None
|
||||
assert str(cookie) == "color=blue"
|
||||
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)
|
||||
assert len(cookies) == 1
|
||||
self.assertEqual(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
|
||||
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
|
||||
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)
|
||||
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)
|
||||
assert len(cookies) == 1
|
||||
self.assertEqual(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
|
||||
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
|
||||
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)
|
||||
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)
|
||||
assert len(cookies) == 1
|
||||
self.assertEqual(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
|
||||
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
|
||||
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)
|
||||
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
|
||||
assert cookie.timestamp == self.now
|
||||
self.assertEqual(cookie.timestamp, self.now)
|
||||
cookie.timestamp = self.now_timestamp
|
||||
assert cookie.timestamp == self.now
|
||||
self.assertEqual(cookie.timestamp, self.now)
|
||||
cookie.timestamp = self.now_string
|
||||
assert cookie.timestamp == self.now
|
||||
self.assertEqual(cookie.timestamp, self.now)
|
||||
|
||||
assert cookie.expires is None
|
||||
self.assertEqual(cookie.expires, None)
|
||||
|
||||
cookie.expires = self.expires
|
||||
assert cookie.expires == self.expires
|
||||
self.assertEqual(cookie.expires, self.expires)
|
||||
cookie.expires = self.expires_timestamp
|
||||
assert cookie.expires == self.expires
|
||||
self.assertEqual(cookie.expires, self.expires)
|
||||
cookie.expires = self.expires_string
|
||||
assert cookie.expires == self.expires
|
||||
self.assertEqual(cookie.expires, self.expires)
|
||||
|
||||
|
||||
class TestInvalidAttributes:
|
||||
class TestInvalidAttributes(unittest.TestCase):
|
||||
def test_invalid(self):
|
||||
# Invalid Max-Age
|
||||
s = 'color=blue; Max-Age=over-the-hill'
|
||||
with pytest.raises(ValueError):
|
||||
with self.assertRaises(ValueError):
|
||||
Cookie.parse(s)
|
||||
|
||||
cookie = Cookie('color', 'blue')
|
||||
with pytest.raises(ValueError):
|
||||
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 pytest.raises(ValueError):
|
||||
with self.assertRaises(ValueError):
|
||||
Cookie.parse(s)
|
||||
|
||||
cookie = Cookie('color', 'blue')
|
||||
with pytest.raises(ValueError):
|
||||
with self.assertRaises(ValueError):
|
||||
cookie.expires = 'Sun, 06 Xxx 1994 08:49:37 GMT'
|
||||
|
||||
|
||||
class TestAttributes:
|
||||
class TestAttributes(unittest.TestCase):
|
||||
def test_attributes(self):
|
||||
cookie = Cookie('color', 'blue')
|
||||
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
|
||||
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)
|
||||
|
||||
cookie.domain = 'example.com'
|
||||
assert cookie.domain == 'example.com'
|
||||
self.assertEqual(cookie.domain, 'example.com')
|
||||
cookie.domain = None
|
||||
assert cookie.domain is None
|
||||
self.assertEqual(cookie.domain, None)
|
||||
|
||||
cookie.path = '/toplevel'
|
||||
assert cookie.path == '/toplevel'
|
||||
self.assertEqual(cookie.path, '/toplevel')
|
||||
cookie.path = None
|
||||
assert cookie.path is None
|
||||
self.assertEqual(cookie.path, None)
|
||||
|
||||
cookie.max_age = 400
|
||||
assert cookie.max_age == 400
|
||||
self.assertEqual(cookie.max_age, 400)
|
||||
cookie.max_age = None
|
||||
assert cookie.max_age is None
|
||||
self.assertEqual(cookie.max_age, None)
|
||||
|
||||
cookie.expires = 'Sun, 06 Nov 1994 08:49:37 GMT'
|
||||
assert cookie.expires == datetime.datetime(1994, 11, 6, 8, 49, 37)
|
||||
self.assertEqual(cookie.expires, datetime.datetime(1994, 11, 6, 8, 49, 37))
|
||||
cookie.expires = None
|
||||
assert cookie.expires is None
|
||||
self.assertEqual(cookie.expires, None)
|
||||
|
||||
cookie.secure = True
|
||||
assert cookie.secure is True
|
||||
assert str(cookie) == "color=blue; Secure"
|
||||
self.assertEqual(cookie.secure, True)
|
||||
self.assertEqual(str(cookie), "color=blue; Secure")
|
||||
cookie.secure = False
|
||||
assert cookie.secure is False
|
||||
assert str(cookie) == "color=blue"
|
||||
self.assertEqual(cookie.secure, False)
|
||||
self.assertEqual(str(cookie), "color=blue")
|
||||
cookie.secure = None
|
||||
assert cookie.secure is None
|
||||
assert str(cookie) == "color=blue"
|
||||
self.assertEqual(cookie.secure, None)
|
||||
self.assertEqual(str(cookie), "color=blue")
|
||||
|
||||
cookie.httponly = True
|
||||
assert cookie.httponly is True
|
||||
assert str(cookie) == "color=blue; HttpOnly"
|
||||
self.assertEqual(cookie.httponly, True)
|
||||
self.assertEqual(str(cookie), "color=blue; HttpOnly")
|
||||
cookie.httponly = False
|
||||
assert cookie.httponly is False
|
||||
assert str(cookie) == "color=blue"
|
||||
self.assertEqual(cookie.httponly, False)
|
||||
self.assertEqual(str(cookie), "color=blue")
|
||||
cookie.httponly = None
|
||||
assert cookie.httponly is None
|
||||
assert str(cookie) == "color=blue"
|
||||
self.assertEqual(cookie.httponly, None)
|
||||
self.assertEqual(str(cookie), "color=blue")
|
||||
|
||||
|
||||
class TestHTTPReturn:
|
||||
@pytest.fixture(autouse=True)
|
||||
def http_return_setup(self):
|
||||
class TestHTTPReturn(unittest.TestCase):
|
||||
def setUp(self):
|
||||
self.url = 'http://www.foo.bar.com/one/two'
|
||||
|
||||
def test_no_attributes(self):
|
||||
cookie = Cookie('color', 'blue')
|
||||
assert cookie.http_return_ok(self.url)
|
||||
self.assertTrue(cookie.http_return_ok(self.url))
|
||||
|
||||
def test_domain(self):
|
||||
cookie = Cookie('color', 'blue', domain='www.foo.bar.com')
|
||||
assert cookie.http_return_ok(self.url)
|
||||
self.assertTrue(cookie.http_return_ok(self.url))
|
||||
|
||||
cookie = Cookie('color', 'blue', domain='.foo.bar.com')
|
||||
assert cookie.http_return_ok(self.url)
|
||||
self.assertTrue(cookie.http_return_ok(self.url))
|
||||
|
||||
cookie = Cookie('color', 'blue', domain='.bar.com')
|
||||
assert cookie.http_return_ok(self.url)
|
||||
self.assertTrue(cookie.http_return_ok(self.url))
|
||||
|
||||
cookie = Cookie('color', 'blue', domain='bar.com')
|
||||
with pytest.raises(Cookie.URLMismatch):
|
||||
assert cookie.http_return_ok(self.url)
|
||||
with self.assertRaises(Cookie.URLMismatch):
|
||||
self.assertTrue(cookie.http_return_ok(self.url))
|
||||
|
||||
cookie = Cookie('color', 'blue', domain='bogus.com')
|
||||
with pytest.raises(Cookie.URLMismatch):
|
||||
assert cookie.http_return_ok(self.url)
|
||||
with self.assertRaises(Cookie.URLMismatch):
|
||||
self.assertTrue(cookie.http_return_ok(self.url))
|
||||
|
||||
cookie = Cookie('color', 'blue', domain='www.foo.bar.com')
|
||||
with pytest.raises(Cookie.URLMismatch):
|
||||
assert cookie.http_return_ok('http://192.168.1.1/one/two')
|
||||
with self.assertRaises(Cookie.URLMismatch):
|
||||
self.assertTrue(cookie.http_return_ok('http://192.168.1.1/one/two'))
|
||||
|
||||
def test_path(self):
|
||||
cookie = Cookie('color', 'blue')
|
||||
assert cookie.http_return_ok(self.url)
|
||||
self.assertTrue(cookie.http_return_ok(self.url))
|
||||
|
||||
cookie = Cookie('color', 'blue', path='/')
|
||||
assert cookie.http_return_ok(self.url)
|
||||
self.assertTrue(cookie.http_return_ok(self.url))
|
||||
|
||||
cookie = Cookie('color', 'blue', path='/one')
|
||||
assert cookie.http_return_ok(self.url)
|
||||
self.assertTrue(cookie.http_return_ok(self.url))
|
||||
|
||||
cookie = Cookie('color', 'blue', path='/oneX')
|
||||
with pytest.raises(Cookie.URLMismatch):
|
||||
assert cookie.http_return_ok(self.url)
|
||||
with self.assertRaises(Cookie.URLMismatch):
|
||||
self.assertTrue(cookie.http_return_ok(self.url))
|
||||
|
||||
def test_expires(self):
|
||||
now = datetime.datetime.utcnow().replace(microsecond=0)
|
||||
@@ -404,34 +399,32 @@ class TestHTTPReturn:
|
||||
expires = now + datetime.timedelta(days=1)
|
||||
|
||||
cookie = Cookie('color', 'blue', expires=expires)
|
||||
assert cookie.http_return_ok(self.url)
|
||||
self.assertTrue(cookie.http_return_ok(self.url))
|
||||
|
||||
# expired 1 day ago
|
||||
expires = now + datetime.timedelta(days=-1)
|
||||
cookie = Cookie('color', 'blue', expires=expires)
|
||||
with pytest.raises(Cookie.Expired):
|
||||
assert cookie.http_return_ok(self.url)
|
||||
with self.assertRaises(Cookie.Expired):
|
||||
self.assertTrue(cookie.http_return_ok(self.url))
|
||||
|
||||
|
||||
def test_httponly(self):
|
||||
cookie = Cookie('color', 'blue', httponly=True)
|
||||
assert cookie.http_return_ok('http://example.com')
|
||||
assert cookie.http_return_ok('https://example.com')
|
||||
self.assertTrue(cookie.http_return_ok('http://example.com'))
|
||||
self.assertTrue(cookie.http_return_ok('https://example.com'))
|
||||
|
||||
with pytest.raises(Cookie.URLMismatch):
|
||||
assert cookie.http_return_ok('ftp://example.com')
|
||||
with self.assertRaises(Cookie.URLMismatch):
|
||||
self.assertTrue(cookie.http_return_ok('ftp://example.com'))
|
||||
|
||||
def test_secure(self):
|
||||
cookie = Cookie('color', 'blue', secure=True)
|
||||
assert cookie.http_return_ok('https://Xexample.com')
|
||||
self.assertTrue(cookie.http_return_ok('https://Xexample.com'))
|
||||
|
||||
with pytest.raises(Cookie.URLMismatch):
|
||||
assert cookie.http_return_ok('http://Xexample.com')
|
||||
with self.assertRaises(Cookie.URLMismatch):
|
||||
self.assertTrue(cookie.http_return_ok('http://Xexample.com'))
|
||||
|
||||
|
||||
class TestNormalization:
|
||||
@pytest.fixture(autouse=True)
|
||||
def normalization_setup(self):
|
||||
class TestNormalization(unittest.TestCase):
|
||||
def setUp(self):
|
||||
# Force microseconds to zero because cookie timestamps only have second resolution
|
||||
self.now = datetime.datetime.utcnow().replace(microsecond=0)
|
||||
self.now_timestamp = calendar.timegm(self.now.utctimetuple())
|
||||
@@ -447,53 +440,58 @@ class TestNormalization:
|
||||
self.expires_string = email.utils.formatdate(self.expires_timestamp, usegmt=True)
|
||||
|
||||
def test_path_normalization(self):
|
||||
assert Cookie.normalize_url_path('') == '/'
|
||||
assert Cookie.normalize_url_path('foo') == '/'
|
||||
assert Cookie.normalize_url_path('foo/') == '/'
|
||||
assert Cookie.normalize_url_path('/foo') == '/'
|
||||
assert Cookie.normalize_url_path('/foo/') == '/foo'
|
||||
assert Cookie.normalize_url_path('/Foo/bar') == '/foo'
|
||||
assert Cookie.normalize_url_path('/foo/baR/') == '/foo/bar'
|
||||
self.assertEqual(Cookie.normalize_url_path(''), '/')
|
||||
self.assertEqual(Cookie.normalize_url_path('foo'), '/')
|
||||
self.assertEqual(Cookie.normalize_url_path('foo/'), '/')
|
||||
self.assertEqual(Cookie.normalize_url_path('/foo'), '/')
|
||||
self.assertEqual(Cookie.normalize_url_path('/foo/'), '/foo')
|
||||
self.assertEqual(Cookie.normalize_url_path('/Foo/bar'), '/foo')
|
||||
self.assertEqual(Cookie.normalize_url_path('/foo/baR/'), '/foo/bar')
|
||||
|
||||
def test_normalization(self):
|
||||
cookie = Cookie('color', 'blue', expires=self.expires)
|
||||
cookie.timestamp = self.now_timestamp
|
||||
|
||||
assert cookie.domain is None
|
||||
assert cookie.path is None
|
||||
self.assertEqual(cookie.domain, None)
|
||||
self.assertEqual(cookie.path, None)
|
||||
|
||||
url = 'http://example.COM/foo'
|
||||
cookie.normalize(url)
|
||||
assert cookie.domain == 'example.com'
|
||||
assert cookie.path == '/'
|
||||
assert cookie.expires == self.expires
|
||||
self.assertEqual(cookie.domain, 'example.com')
|
||||
self.assertEqual(cookie.path, '/')
|
||||
self.assertEqual(cookie.expires, self.expires)
|
||||
|
||||
cookie = Cookie('color', 'blue', max_age=self.max_age)
|
||||
cookie.timestamp = self.now_timestamp
|
||||
|
||||
assert cookie.domain is None
|
||||
assert cookie.path is None
|
||||
self.assertEqual(cookie.domain, None)
|
||||
self.assertEqual(cookie.path, None)
|
||||
|
||||
url = 'http://example.com/foo/'
|
||||
cookie.normalize(url)
|
||||
assert cookie.domain == 'example.com'
|
||||
assert cookie.path == '/foo'
|
||||
assert cookie.expires == self.age_expiration
|
||||
self.assertEqual(cookie.domain, 'example.com')
|
||||
self.assertEqual(cookie.path, '/foo')
|
||||
self.assertEqual(cookie.expires, self.age_expiration)
|
||||
|
||||
cookie = Cookie('color', 'blue')
|
||||
url = 'http://example.com/foo'
|
||||
cookie.normalize(url)
|
||||
assert cookie.domain == 'example.com'
|
||||
assert cookie.path == '/'
|
||||
self.assertEqual(cookie.domain, 'example.com')
|
||||
self.assertEqual(cookie.path, '/')
|
||||
|
||||
cookie = Cookie('color', 'blue')
|
||||
url = 'http://example.com/foo/bar'
|
||||
cookie.normalize(url)
|
||||
assert cookie.domain == 'example.com'
|
||||
assert cookie.path == '/foo'
|
||||
self.assertEqual(cookie.domain, 'example.com')
|
||||
self.assertEqual(cookie.path, '/foo')
|
||||
|
||||
cookie = Cookie('color', 'blue')
|
||||
url = 'http://example.com/foo/bar/'
|
||||
cookie.normalize(url)
|
||||
assert cookie.domain == 'example.com'
|
||||
assert cookie.path == '/foo/bar'
|
||||
self.assertEqual(cookie.domain, 'example.com')
|
||||
self.assertEqual(cookie.path, '/foo/bar')
|
||||
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
|
||||
@@ -4,8 +4,11 @@
|
||||
from __future__ import absolute_import
|
||||
|
||||
import os
|
||||
import shutil
|
||||
import tempfile
|
||||
|
||||
import pytest
|
||||
|
||||
from ipapython import directivesetter
|
||||
|
||||
EXAMPLE_CONFIG = [
|
||||
@@ -19,7 +22,18 @@ WHITESPACE_CONFIG = [
|
||||
]
|
||||
|
||||
|
||||
class test_set_directive_lines:
|
||||
@pytest.fixture
|
||||
def tempdir(request):
|
||||
tempdir = tempfile.mkdtemp()
|
||||
|
||||
def fin():
|
||||
shutil.rmtree(tempdir)
|
||||
|
||||
request.addfinalizer(fin)
|
||||
return tempdir
|
||||
|
||||
|
||||
class test_set_directive_lines(object):
|
||||
def test_remove_directive(self):
|
||||
lines = directivesetter.set_directive_lines(
|
||||
False, '=', 'foo', None, EXAMPLE_CONFIG, comment="#")
|
||||
@@ -36,7 +50,7 @@ class test_set_directive_lines:
|
||||
assert list(lines) == ['foo=3\n', 'foobar=2\n']
|
||||
|
||||
|
||||
class test_set_directive_lines_whitespace:
|
||||
class test_set_directive_lines_whitespace(object):
|
||||
def test_remove_directive(self):
|
||||
lines = directivesetter.set_directive_lines(
|
||||
False, ' ', 'foo', None, WHITESPACE_CONFIG, comment="#")
|
||||
@@ -58,7 +72,7 @@ class test_set_directive_lines_whitespace:
|
||||
assert list(lines) == ['foo 1\n', 'foobar 6\n']
|
||||
|
||||
|
||||
class test_set_directive:
|
||||
class test_set_directive(object):
|
||||
def test_set_directive(self):
|
||||
"""Check that set_directive writes the new data and preserves mode."""
|
||||
fd, filename = tempfile.mkstemp()
|
||||
@@ -86,7 +100,7 @@ class test_set_directive:
|
||||
os.remove(filename)
|
||||
|
||||
|
||||
class test_get_directive:
|
||||
class test_get_directive(object):
|
||||
def test_get_directive(self, tmpdir):
|
||||
configfile = tmpdir.join('config')
|
||||
configfile.write(''.join(EXAMPLE_CONFIG))
|
||||
@@ -99,7 +113,7 @@ class test_get_directive:
|
||||
separator='=')
|
||||
|
||||
|
||||
class test_get_directive_whitespace:
|
||||
class test_get_directive_whitespace(object):
|
||||
def test_get_directive(self, tmpdir):
|
||||
configfile = tmpdir.join('config')
|
||||
configfile.write(''.join(WHITESPACE_CONFIG))
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -33,7 +33,7 @@ def mkuri(priority, weight, target):
|
||||
)
|
||||
|
||||
|
||||
class TestSortSRV:
|
||||
class TestSortSRV(object):
|
||||
def test_empty(self):
|
||||
assert dnsutil.sort_prio_weight([]) == []
|
||||
|
||||
@@ -96,7 +96,7 @@ class TestSortSRV:
|
||||
assert len(dnsutil.sort_prio_weight(records)) == len(records)
|
||||
|
||||
|
||||
class TestSortURI:
|
||||
class TestSortURI(object):
|
||||
def test_prio(self):
|
||||
h1 = mkuri(1, 0, u"https://host1/api")
|
||||
h2 = mkuri(2, 0, u"https://host2/api")
|
||||
|
||||
@@ -28,7 +28,6 @@ import pwd
|
||||
import socket
|
||||
import sys
|
||||
import tempfile
|
||||
import textwrap
|
||||
|
||||
import pytest
|
||||
import six
|
||||
@@ -85,9 +84,8 @@ def test_ip_address(addr, words, prefixlen):
|
||||
assert ip.prefixlen == prefixlen
|
||||
|
||||
|
||||
class TestCIDict:
|
||||
@pytest.fixture(autouse=True)
|
||||
def cidict_setup(self):
|
||||
class TestCIDict(object):
|
||||
def setup(self):
|
||||
self.cidict = ipautil.CIDict()
|
||||
self.cidict["Key1"] = "val1"
|
||||
self.cidict["key2"] = "val2"
|
||||
@@ -164,11 +162,11 @@ class TestCIDict:
|
||||
|
||||
@pytest.mark.skipif(not six.PY2, reason="Python 2 only")
|
||||
def test_haskey(self):
|
||||
assert self.cidict.has_key("KEY1") # noqa
|
||||
assert self.cidict.has_key("key2") # noqa
|
||||
assert self.cidict.has_key("key3") # noqa
|
||||
assert self.cidict.has_key("KEY1")
|
||||
assert self.cidict.has_key("key2")
|
||||
assert self.cidict.has_key("key3")
|
||||
|
||||
assert not self.cidict.has_key("Key4") # noqa
|
||||
assert not self.cidict.has_key("Key4")
|
||||
|
||||
def test_contains(self):
|
||||
assert "KEY1" in self.cidict
|
||||
@@ -339,7 +337,7 @@ class TestCIDict:
|
||||
assert list(dct.values()) == [None] * 3
|
||||
|
||||
|
||||
class TestTimeParser:
|
||||
class TestTimeParser(object):
|
||||
def test_simple(self):
|
||||
timestr = "20070803"
|
||||
|
||||
@@ -395,6 +393,8 @@ class TestTimeParser:
|
||||
assert_equal(800000, time.microsecond)
|
||||
|
||||
def test_time_zones(self):
|
||||
# pylint: disable=no-member
|
||||
|
||||
timestr = "20051213141205Z"
|
||||
|
||||
time = ipautil.parse_generalized_time(timestr)
|
||||
@@ -577,32 +577,3 @@ def test_check_port_bindable_udp(udp_listen):
|
||||
assert not ipautil.check_port_bindable(port, socket.SOCK_DGRAM)
|
||||
sock.close()
|
||||
assert ipautil.check_port_bindable(port, socket.SOCK_DGRAM)
|
||||
|
||||
|
||||
def test_config_replace_variables(tempdir):
|
||||
conffile = os.path.join(tempdir, 'test.conf')
|
||||
|
||||
conf = textwrap.dedent("""
|
||||
replaced=foo
|
||||
removed=gone
|
||||
""")
|
||||
expected = textwrap.dedent("""
|
||||
replaced=bar
|
||||
addreplaced=baz
|
||||
""")
|
||||
|
||||
with open(conffile, 'w') as f:
|
||||
f.write(conf)
|
||||
|
||||
result = ipautil.config_replace_variables(
|
||||
conffile,
|
||||
replacevars=dict(replaced="bar", addreplaced="baz"),
|
||||
removevars={'removed'}
|
||||
)
|
||||
assert result == {
|
||||
'removed': 'gone', 'replaced': 'foo'
|
||||
}
|
||||
|
||||
with open(conffile, 'r') as f:
|
||||
newconf = f.read()
|
||||
assert newconf == expected
|
||||
|
||||
@@ -19,72 +19,72 @@
|
||||
import sys
|
||||
sys.path.insert(0, ".")
|
||||
|
||||
import unittest
|
||||
import pytest
|
||||
|
||||
from ipapython import ipavalidate
|
||||
|
||||
pytestmark = pytest.mark.tier0
|
||||
|
||||
|
||||
class TestValidate:
|
||||
class TestValidate(unittest.TestCase):
|
||||
def test_validEmail(self):
|
||||
assert ipavalidate.Email("test@freeipa.org") is True
|
||||
assert ipavalidate.Email("", notEmpty=False) is True
|
||||
self.assertEqual(True, ipavalidate.Email("test@freeipa.org"))
|
||||
self.assertEqual(True, ipavalidate.Email("", notEmpty=False))
|
||||
|
||||
def test_invalidEmail(self):
|
||||
assert ipavalidate.Email("test") is False
|
||||
assert ipavalidate.Email("test@freeipa") is False
|
||||
assert ipavalidate.Email("test@.com") is False
|
||||
assert ipavalidate.Email("") is False
|
||||
assert ipavalidate.Email(None) is False
|
||||
self.assertEqual(False, ipavalidate.Email("test"))
|
||||
self.assertEqual(False, ipavalidate.Email("test@freeipa"))
|
||||
self.assertEqual(False, ipavalidate.Email("test@.com"))
|
||||
self.assertEqual(False, ipavalidate.Email(""))
|
||||
self.assertEqual(False, ipavalidate.Email(None))
|
||||
|
||||
def test_validPlain(self):
|
||||
assert ipavalidate.Plain("Joe User") is True
|
||||
assert ipavalidate.Plain("Joe O'Malley") is True
|
||||
assert ipavalidate.Plain("", notEmpty=False) is True
|
||||
assert ipavalidate.Plain(None, notEmpty=False) is True
|
||||
assert ipavalidate.Plain("JoeUser", allowSpaces=False) is True
|
||||
assert ipavalidate.Plain("JoeUser", allowSpaces=True) is True
|
||||
self.assertEqual(True, ipavalidate.Plain("Joe User"))
|
||||
self.assertEqual(True, ipavalidate.Plain("Joe O'Malley"))
|
||||
self.assertEqual(True, ipavalidate.Plain("", notEmpty=False))
|
||||
self.assertEqual(True, ipavalidate.Plain(None, notEmpty=False))
|
||||
self.assertEqual(True, ipavalidate.Plain("JoeUser", allowSpaces=False))
|
||||
self.assertEqual(True, ipavalidate.Plain("JoeUser", allowSpaces=True))
|
||||
|
||||
def test_invalidPlain(self):
|
||||
assert ipavalidate.Plain("Joe (User)") is False
|
||||
assert ipavalidate.Plain("Joe C. User") is False
|
||||
assert ipavalidate.Plain("", notEmpty=True) is False
|
||||
assert ipavalidate.Plain(None, notEmpty=True) is False
|
||||
assert ipavalidate.Plain("Joe User", allowSpaces=False) is False
|
||||
assert ipavalidate.Plain("Joe C. User") is False
|
||||
self.assertEqual(False, ipavalidate.Plain("Joe (User)"))
|
||||
self.assertEqual(False, ipavalidate.Plain("Joe C. User"))
|
||||
self.assertEqual(False, ipavalidate.Plain("", notEmpty=True))
|
||||
self.assertEqual(False, ipavalidate.Plain(None, notEmpty=True))
|
||||
self.assertEqual(False, ipavalidate.Plain("Joe User", allowSpaces=False))
|
||||
self.assertEqual(False, ipavalidate.Plain("Joe C. User"))
|
||||
|
||||
def test_validString(self):
|
||||
assert ipavalidate.String("Joe User") is True
|
||||
assert ipavalidate.String("Joe O'Malley") is True
|
||||
assert ipavalidate.String("", notEmpty=False) is True
|
||||
assert ipavalidate.String(None, notEmpty=False) is True
|
||||
assert ipavalidate.String("Joe C. User") is True
|
||||
self.assertEqual(True, ipavalidate.String("Joe User"))
|
||||
self.assertEqual(True, ipavalidate.String("Joe O'Malley"))
|
||||
self.assertEqual(True, ipavalidate.String("", notEmpty=False))
|
||||
self.assertEqual(True, ipavalidate.String(None, notEmpty=False))
|
||||
self.assertEqual(True, ipavalidate.String("Joe C. User"))
|
||||
|
||||
def test_invalidString(self):
|
||||
assert ipavalidate.String("", notEmpty=True) is False
|
||||
assert ipavalidate.String(None, notEmpty=True) is False
|
||||
self.assertEqual(False, ipavalidate.String("", notEmpty=True))
|
||||
self.assertEqual(False, ipavalidate.String(None, notEmpty=True))
|
||||
|
||||
def test_validPath(self):
|
||||
assert ipavalidate.Path("/") is True
|
||||
assert ipavalidate.Path("/home/user") is True
|
||||
assert ipavalidate.Path("../home/user") is True
|
||||
assert ipavalidate.Path("", notEmpty=False) is True
|
||||
assert ipavalidate.Path(None, notEmpty=False) is True
|
||||
self.assertEqual(True, ipavalidate.Path("/"))
|
||||
self.assertEqual(True, ipavalidate.Path("/home/user"))
|
||||
self.assertEqual(True, ipavalidate.Path("../home/user"))
|
||||
self.assertEqual(True, ipavalidate.Path("", notEmpty=False))
|
||||
self.assertEqual(True, ipavalidate.Path(None, notEmpty=False))
|
||||
|
||||
def test_invalidPath(self):
|
||||
assert ipavalidate.Path("(foo)") is False
|
||||
assert ipavalidate.Path("", notEmpty=True) is False
|
||||
assert ipavalidate.Path(None, notEmpty=True) is False
|
||||
self.assertEqual(False, ipavalidate.Path("(foo)"))
|
||||
self.assertEqual(False, ipavalidate.Path("", notEmpty=True))
|
||||
self.assertEqual(False, ipavalidate.Path(None, notEmpty=True))
|
||||
|
||||
def test_validName(self):
|
||||
assert ipavalidate.GoodName("foo") is True
|
||||
assert ipavalidate.GoodName("1foo") is True
|
||||
assert ipavalidate.GoodName("foo.bar") is True
|
||||
assert ipavalidate.GoodName("foo.bar$") is True
|
||||
self.assertEqual(True, ipavalidate.GoodName("foo"))
|
||||
self.assertEqual(True, ipavalidate.GoodName("1foo"))
|
||||
self.assertEqual(True, ipavalidate.GoodName("foo.bar"))
|
||||
self.assertEqual(True, ipavalidate.GoodName("foo.bar$"))
|
||||
|
||||
def test_invalidName(self):
|
||||
assert ipavalidate.GoodName("foo bar") is False
|
||||
assert ipavalidate.GoodName("foo%bar") is False
|
||||
assert ipavalidate.GoodName("*foo") is False
|
||||
assert ipavalidate.GoodName("$foo.bar$") is False
|
||||
self.assertEqual(False, ipavalidate.GoodName("foo bar"))
|
||||
self.assertEqual(False, ipavalidate.GoodName("foo%bar"))
|
||||
self.assertEqual(False, ipavalidate.GoodName("*foo"))
|
||||
self.assertEqual(False, ipavalidate.GoodName("$foo.bar$"))
|
||||
|
||||
@@ -35,17 +35,12 @@ SIZE_256 = 'abcdefgh' * 32
|
||||
SIZE_512 = 'abcdefgh' * 64
|
||||
SIZE_1024 = 'abcdefgh' * 128
|
||||
|
||||
|
||||
@pytest.mark.skip_if_container(
|
||||
"any", reason="kernel keyrings are not namespaced yet"
|
||||
)
|
||||
class test_keyring:
|
||||
class test_keyring(object):
|
||||
"""
|
||||
Test the kernel keyring interface
|
||||
"""
|
||||
|
||||
@pytest.fixture(autouse=True)
|
||||
def keyring_setup(self):
|
||||
def setup(self):
|
||||
try:
|
||||
kernel_keyring.del_key(TEST_KEY)
|
||||
except ValueError:
|
||||
@@ -122,10 +117,13 @@ class test_keyring:
|
||||
See if a key is available
|
||||
"""
|
||||
kernel_keyring.add_key(TEST_KEY, TEST_VALUE)
|
||||
assert kernel_keyring.has_key(TEST_KEY) # noqa
|
||||
|
||||
result = kernel_keyring.has_key(TEST_KEY)
|
||||
assert(result == True)
|
||||
kernel_keyring.del_key(TEST_KEY)
|
||||
assert not kernel_keyring.has_key(TEST_KEY) # noqa
|
||||
|
||||
result = kernel_keyring.has_key(TEST_KEY)
|
||||
assert(result == False)
|
||||
|
||||
def test_07(self):
|
||||
"""
|
||||
|
||||
@@ -12,13 +12,12 @@ from ipapython import session_storage
|
||||
|
||||
@pytest.mark.skip_ipaclient_unittest
|
||||
@pytest.mark.needs_ipaapi
|
||||
class test_session_storage:
|
||||
class test_session_storage(object):
|
||||
"""
|
||||
Test the session storage interface
|
||||
"""
|
||||
|
||||
@pytest.fixture(autouse=True)
|
||||
def session_storage_setup(self):
|
||||
def setup(self):
|
||||
# TODO: set up test user and kinit to it
|
||||
# tmpdir = tempfile.mkdtemp(prefix = "tmp-")
|
||||
# os.environ['KRB5CCNAME'] = 'FILE:%s/ccache' % tmpdir
|
||||
|
||||
Reference in New Issue
Block a user