Beispiel #1
0
    def dn_setup(self):
        # ava1 must sort before ava2
        self.attr1    = 'cn'
        self.value1   = u'Bob'
        self.str_ava1 = '%s=%s' % (self.attr1, self.value1)
        self.ava1     = AVA(self.attr1, self.value1)

        self.str_rdn1 = '%s=%s' % (self.attr1, self.value1)
        self.rdn1     = RDN((self.attr1, self.value1))

        self.attr2    = 'ou'
        self.value2   = u'people'
        self.str_ava2 = '%s=%s' % (self.attr2, self.value2)
        self.ava2     = AVA(self.attr2, self.value2)

        self.str_rdn2 = '%s=%s' % (self.attr2, self.value2)
        self.rdn2     = RDN((self.attr2, self.value2))

        self.str_dn1 = self.str_rdn1
        self.dn1 = DN(self.rdn1)

        self.str_dn2 = self.str_rdn2
        self.dn2 = DN(self.rdn2)

        self.str_dn3 = '%s,%s' % (self.str_rdn1, self.str_rdn2)
        self.dn3 = DN(self.rdn1, self.rdn2)

        self.base_rdn1 = RDN(('dc', 'redhat'))
        self.base_rdn2 = RDN(('dc', 'com'))
        self.base_dn = DN(self.base_rdn1, self.base_rdn2)

        self.container_rdn1 = RDN(('cn', 'sudorules'))
        self.container_rdn2 = RDN(('cn', 'sudo'))
        self.container_dn = DN(self.container_rdn1, self.container_rdn2)

        self.base_container_dn = DN((self.attr1, self.value1),
                                    self.container_dn, self.base_dn)

        ou = x509.NameAttribute(
            x509.NameOID.ORGANIZATIONAL_UNIT_NAME, self.value2)
        cn = x509.NameAttribute(x509.NameOID.COMMON_NAME, self.value1)
        c = x509.NameAttribute(x509.NameOID.COUNTRY_NAME, 'AU')
        st = x509.NameAttribute(
            x509.NameOID.STATE_OR_PROVINCE_NAME, 'Queensland')
        self.x500name = x509.Name([ou, cn])
        self.x500nameMultiRDN = x509.Name([
            x509.RelativeDistinguishedName([c, st]),
            x509.RelativeDistinguishedName([cn]),
        ])
        self.x500nameMultiRDN2 = x509.Name([
            x509.RelativeDistinguishedName([st, c]),
            x509.RelativeDistinguishedName([cn]),
        ])
Beispiel #2
0
    def ava_setup(self):
        self.attr1    = 'cn'
        self.value1   = 'Bob'
        self.str_ava1 = '%s=%s' % (self.attr1, self.value1)
        self.ava1     = AVA(self.attr1, self.value1)

        self.attr2    = 'ou'
        self.value2   = 'People'
        self.str_ava2 = '%s=%s' % (self.attr2, self.value2)
        self.ava2     = AVA(self.attr2, self.value2)

        self.attr3    = 'c'
        self.value3   = 'US'
        self.str_ava3 = '%s=%s' % (self.attr3, self.value3)
        self.ava3     = AVA(self.attr3, self.value3)
Beispiel #3
0
    def test_hashing(self):
        # create AVA's that are equal but differ in case
        ava1 = AVA((self.attr1.lower(), self.value1.upper()))
        ava2 = AVA((self.attr1.upper(), self.value1.lower()))

        # AVAs that are equal should hash to the same value.
        self.assertEqual(ava1, ava2)
        self.assertEqual(hash(ava1), hash(ava2))

        # Different AVA objects with the same value should
        # map to 1 common key and 1 member in a set. The key and
        # member are based on the object's value.

        ava1_a = AVA(self.ava1)
        ava1_b = AVA(self.ava1)

        ava2_a = AVA(self.ava2)
        ava2_b = AVA(self.ava2)

        ava3_a = AVA(self.ava3)
        ava3_b = AVA(self.ava3)

        self.assertEqual(ava1_a, ava1_b)
        self.assertEqual(ava2_a, ava2_b)
        self.assertEqual(ava3_a, ava3_b)

        d = dict()
        s = set()

        d[ava1_a] = str(ava1_a)
        d[ava1_b] = str(ava1_b)
        d[ava2_a] = str(ava2_a)
        d[ava2_b] = str(ava2_b)

        s.add(ava1_a)
        s.add(ava1_b)
        s.add(ava2_a)
        s.add(ava2_b)

        self.assertEqual(len(d), 2)
        self.assertEqual(len(s), 2)
        self.assertEqual(sorted(d), sorted([ava1_a, ava2_a]))
        self.assertEqual(sorted(s), sorted([ava1_a, ava2_a]))

        self.assertTrue(ava1_a in d)
        self.assertTrue(ava1_b in d)
        self.assertTrue(ava2_a in d)
        self.assertTrue(ava2_b in d)
        self.assertFalse(ava3_a in d)
        self.assertFalse(ava3_b in d)

        self.assertTrue(ava1_a in s)
        self.assertTrue(ava1_b in s)
        self.assertTrue(ava2_a in s)
        self.assertTrue(ava2_b in s)
        self.assertFalse(ava3_a in s)
        self.assertFalse(ava3_b in s)
Beispiel #4
0
    def test_hashing(self):
        # create AVA's that are equal but differ in case
        ava1 = AVA((self.attr1.lower(), self.value1.upper()))
        ava2 = AVA((self.attr1.upper(), self.value1.lower()))

        # AVAs that are equal should hash to the same value.
        assert ava1 == ava2
        assert hash(ava1) == hash(ava2)

        # Different AVA objects with the same value should
        # map to 1 common key and 1 member in a set. The key and
        # member are based on the object's value.

        ava1_a = AVA(self.ava1)
        ava1_b = AVA(self.ava1)

        ava2_a = AVA(self.ava2)
        ava2_b = AVA(self.ava2)

        ava3_a = AVA(self.ava3)
        ava3_b = AVA(self.ava3)

        assert ava1_a == ava1_b
        assert ava2_a == ava2_b
        assert ava3_a == ava3_b

        d = dict()
        s = set()

        d[ava1_a] = str(ava1_a)
        d[ava1_b] = str(ava1_b)
        d[ava2_a] = str(ava2_a)
        d[ava2_b] = str(ava2_b)

        s.add(ava1_a)
        s.add(ava1_b)
        s.add(ava2_a)
        s.add(ava2_b)

        assert len(d) == 2
        assert len(s) == 2
        assert sorted(d) == sorted([ava1_a, ava2_a])
        assert sorted(s) == sorted([ava1_a, ava2_a])

        assert ava1_a in d
        assert ava1_b in d
        assert ava2_a in d
        assert ava2_b in d
        assert ava3_a not in d
        assert ava3_b not in d

        assert ava1_a in s
        assert ava1_b in s
        assert ava2_a in s
        assert ava2_b in s
        assert ava3_a not in s
        assert ava3_b not in s
Beispiel #5
0
    def test_properties(self):
        ava1 = AVA(self.ava1)

        self.assertEqual(ava1.attr, self.attr1)
        self.assertIsInstance(ava1.attr, unicode)

        self.assertEqual(ava1.value, self.value1)
        self.assertIsInstance(ava1.value, unicode)
Beispiel #6
0
    def test_properties(self):
        ava1 = AVA(self.ava1)

        assert ava1.attr == self.attr1
        assert isinstance(ava1.attr, unicode)

        assert ava1.value == self.value1
        assert isinstance(ava1.value, unicode)
Beispiel #7
0
    def setUp(self):
        # ava1 must sort before ava2
        self.attr1 = 'cn'
        self.value1 = u'Bob'
        self.str_ava1 = '%s=%s' % (self.attr1, self.value1)
        self.ava1 = AVA(self.attr1, self.value1)

        self.str_rdn1 = '%s=%s' % (self.attr1, self.value1)
        self.rdn1 = RDN((self.attr1, self.value1))

        self.attr2 = 'ou'
        self.value2 = u'people'
        self.str_ava2 = '%s=%s' % (self.attr2, self.value2)
        self.ava2 = AVA(self.attr2, self.value2)

        self.str_rdn2 = '%s=%s' % (self.attr2, self.value2)
        self.rdn2 = RDN((self.attr2, self.value2))

        self.str_dn1 = self.str_rdn1
        self.dn1 = DN(self.rdn1)

        self.str_dn2 = self.str_rdn2
        self.dn2 = DN(self.rdn2)

        self.str_dn3 = '%s,%s' % (self.str_rdn1, self.str_rdn2)
        self.dn3 = DN(self.rdn1, self.rdn2)

        self.base_rdn1 = RDN(('dc', 'redhat'))
        self.base_rdn2 = RDN(('dc', 'com'))
        self.base_dn = DN(self.base_rdn1, self.base_rdn2)

        self.container_rdn1 = RDN(('cn', 'sudorules'))
        self.container_rdn2 = RDN(('cn', 'sudo'))
        self.container_dn = DN(self.container_rdn1, self.container_rdn2)

        self.base_container_dn = DN((self.attr1, self.value1),
                                    self.container_dn, self.base_dn)

        self.x500name = x509.Name([
            x509.NameAttribute(x509.NameOID.ORGANIZATIONAL_UNIT_NAME,
                               self.value2),
            x509.NameAttribute(x509.NameOID.COMMON_NAME, self.value1),
        ])
Beispiel #8
0
    def test_indexing(self):
        ava1 = AVA(self.ava1)

        assert ava1[self.attr1] == self.value1

        assert ava1[0] == self.attr1
        assert ava1[1] == self.value1

        with pytest.raises(KeyError):
            ava1['foo']  # pylint: disable=pointless-statement

        with pytest.raises(KeyError):
            ava1[3]  # pylint: disable=pointless-statement
Beispiel #9
0
    def rdn_setup(self):
        # ava1 must sort before ava2
        self.attr1    = 'cn'
        self.value1   = 'Bob'
        self.str_ava1 = '%s=%s' % (self.attr1, self.value1)
        self.ava1     = AVA(self.attr1, self.value1)

        self.str_rdn1 = '%s=%s' % (self.attr1, self.value1)
        self.rdn1 = RDN((self.attr1, self.value1))

        self.attr2    = 'ou'
        self.value2   = 'people'
        self.str_ava2 = '%s=%s' % (self.attr2, self.value2)
        self.ava2     = AVA(self.attr2, self.value2)

        self.str_rdn2 = '%s=%s' % (self.attr2, self.value2)
        self.rdn2     = RDN((self.attr2, self.value2))

        self.str_ava3 = '%s=%s+%s=%s' % (self.attr1, self.value1, self.attr2, self.value2)

        self.str_rdn3 = '%s=%s+%s=%s' % (self.attr1, self.value1, self.attr2, self.value2)
        self.rdn3 = RDN(self.ava1, self.ava2)
Beispiel #10
0
    def test_indexing(self):
        ava1 = AVA(self.ava1)

        self.assertEqual(ava1[self.attr1], self.value1)

        self.assertEqual(ava1[0], self.attr1)
        self.assertEqual(ava1[1], self.value1)

        with self.assertRaises(KeyError):
            ava1['foo']  # pylint: disable=pointless-statement

        with self.assertRaises(KeyError):
            ava1[3]  # pylint: disable=pointless-statement
Beispiel #11
0
    def setUp(self):
        # ava1 must sort before ava2
        self.attr1 = 'cn'
        self.value1 = 'Bob'
        self.str_ava1 = '%s=%s' % (self.attr1, self.value1)
        self.ava1 = AVA(self.attr1, self.value1)

        self.str_rdn1 = '%s=%s' % (self.attr1, self.value1)
        self.rdn1 = RDN((self.attr1, self.value1))

        self.attr2 = 'ou'
        self.value2 = 'people'
        self.str_ava2 = '%s=%s' % (self.attr2, self.value2)
        self.ava2 = AVA(self.attr2, self.value2)

        self.str_rdn2 = '%s=%s' % (self.attr2, self.value2)
        self.rdn2 = RDN((self.attr2, self.value2))

        self.str_dn1 = self.str_rdn1
        self.dn1 = DN(self.rdn1)

        self.str_dn2 = self.str_rdn2
        self.dn2 = DN(self.rdn2)

        self.str_dn3 = '%s,%s' % (self.str_rdn1, self.str_rdn2)
        self.dn3 = DN(self.rdn1, self.rdn2)

        self.base_rdn1 = RDN(('dc', 'redhat'))
        self.base_rdn2 = RDN(('dc', 'com'))
        self.base_dn = DN(self.base_rdn1, self.base_rdn2)

        self.container_rdn1 = RDN(('cn', 'sudorules'))
        self.container_rdn2 = RDN(('cn', 'sudo'))
        self.container_dn = DN(self.container_rdn1, self.container_rdn2)

        self.base_container_dn = DN((self.attr1, self.value1),
                                    self.container_dn, self.base_dn)
Beispiel #12
0
    def test_create(self):
        # Create with attr,value pair
        ava1 = AVA(self.attr1, self.value1)
        self.assertExpectedClass(AVA, ava1, 'self')
        assert ava1 == self.ava1

        # Create with "attr=value" string
        ava1 = AVA(self.str_ava1)
        self.assertExpectedClass(AVA, ava1, 'self')
        assert ava1 == self.ava1

        # Create with tuple (attr, value)
        ava1 = AVA((self.attr1, self.value1))
        self.assertExpectedClass(AVA, ava1, 'self')
        assert ava1 == self.ava1

        # Create with list [attr, value]
        ava1 = AVA([self.attr1, self.value1])
        self.assertExpectedClass(AVA, ava1, 'self')
        assert ava1 == self.ava1

        # Create with no args should fail
        with pytest.raises(TypeError):
            AVA()

        # Create with more than 3 args should fail
        with pytest.raises(TypeError):
            AVA(self.attr1, self.value1, self.attr1, self.attr1)

        # Create with 1 arg which is not string should fail
        with pytest.raises(TypeError):
            AVA(1)

        # Create with malformed AVA string should fail
        with pytest.raises(ValueError):
            AVA("cn")

        # Create with non-string parameters, should convert
        ava1 = AVA(1, self.value1)
        self.assertExpectedClass(AVA, ava1, 'self')
        assert ava1.attr == u'1'

        ava1 = AVA((1, self.value1))
        self.assertExpectedClass(AVA, ava1, 'self')
        assert ava1.attr == u'1'

        ava1 = AVA(self.attr1, 1)
        self.assertExpectedClass(AVA, ava1, 'self')
        assert ava1.value == u'1'

        ava1 = AVA((self.attr1, 1))
        self.assertExpectedClass(AVA, ava1, 'self')
        assert ava1.value == u'1'
Beispiel #13
0
    def test_cmp(self):
        # Equality
        ava1 = AVA(self.attr1, self.value1)

        self.assertTrue(ava1 == self.ava1)
        self.assertFalse(ava1 != self.ava1)

        self.assertTrue(ava1 == self.str_ava1)
        self.assertFalse(ava1 != self.str_ava1)

        result = cmp(ava1, self.ava1)
        self.assertEqual(result, 0)

        # Upper case attr should still be equal
        ava1 = AVA(self.attr1.upper(), self.value1)

        self.assertFalse(ava1.attr == self.attr1)
        self.assertTrue(ava1.value == self.value1)
        self.assertTrue(ava1 == self.ava1)
        self.assertFalse(ava1 != self.ava1)

        result = cmp(ava1, self.ava1)
        self.assertEqual(result, 0)

        # Upper case value should still be equal
        ava1 = AVA(self.attr1, self.value1.upper())

        self.assertTrue(ava1.attr == self.attr1)
        self.assertFalse(ava1.value == self.value1)
        self.assertTrue(ava1 == self.ava1)
        self.assertFalse(ava1 != self.ava1)

        result = cmp(ava1, self.ava1)
        self.assertEqual(result, 0)

        # Make ava1's attr greater
        with self.assertRaises(AttributeError):
            ava1.attr = self.attr1 + "1"
        ava1 = AVA(self.attr1 + "1", self.value1.upper())

        self.assertFalse(ava1 == self.ava1)
        self.assertTrue(ava1 != self.ava1)

        result = cmp(ava1, self.ava1)
        self.assertEqual(result, 1)

        result = cmp(self.ava1, ava1)
        self.assertEqual(result, -1)

        # Reset ava1's attr, should be equal again
        with self.assertRaises(AttributeError):
            ava1.attr = self.attr1
        ava1 = AVA(self.attr1, self.value1.upper())

        result = cmp(ava1, self.ava1)
        self.assertEqual(result, 0)

        # Make ava1's value greater
        # attr will be equal, this tests secondary comparision component
        with self.assertRaises(AttributeError):
            ava1.value = self.value1 + "1"
        ava1 = AVA(self.attr1, self.value1 + "1")

        result = cmp(ava1, self.ava1)
        self.assertEqual(result, 1)

        result = cmp(self.ava1, ava1)
        self.assertEqual(result, -1)
Beispiel #14
0
    def test_str(self):
        ava1 = AVA(self.ava1)

        self.assertEqual(str(ava1), self.str_ava1)
        self.assertIsInstance(str(ava1), str)
Beispiel #15
0
    def test_create(self):
        # Create with single attr,value pair
        dn1 = DN((self.attr1, self.value1))
        assert len(dn1) == 1
        self.assertExpectedClass(DN, dn1, 'self')
        for i in range(0, len(dn1)):
            self.assertExpectedClass(DN, dn1[i], 'RDN')
            for j in range(0, len(dn1[i])):
                self.assertExpectedClass(DN, dn1[i][j], 'AVA')
        assert isinstance(dn1[0].attr, unicode)
        assert isinstance(dn1[0].value, unicode)
        assert dn1[0] == self.rdn1

        # Create with single attr,value pair passed as a tuple
        dn1 = DN((self.attr1, self.value1))
        assert len(dn1) == 1
        self.assertExpectedClass(DN, dn1, 'self')
        for i in range(0, len(dn1)):
            self.assertExpectedClass(DN, dn1[i], 'RDN')
            for j in range(0, len(dn1[i])):
                self.assertExpectedClass(DN, dn1[i][j], 'AVA')
            assert isinstance(dn1[i].attr, unicode)
            assert isinstance(dn1[i].value, unicode)
        assert dn1[0] == self.rdn1

        # Creation with multiple attr,value string pairs should fail
        with pytest.raises(ValueError):
            dn1 = DN(self.attr1, self.value1, self.attr2, self.value2)

        # Create with multiple attr,value pairs passed as tuples & lists
        dn1 = DN((self.attr1, self.value1), [self.attr2, self.value2])
        assert len(dn1) == 2
        self.assertExpectedClass(DN, dn1, 'self')
        for i in range(0, len(dn1)):
            self.assertExpectedClass(DN, dn1[i], 'RDN')
            for j in range(0, len(dn1[i])):
                self.assertExpectedClass(DN, dn1[i][j], 'AVA')
            assert isinstance(dn1[i].attr, unicode)
            assert isinstance(dn1[i].value, unicode)
        assert dn1[0] == self.rdn1
        assert dn1[1] == self.rdn2

        # Create with multiple attr,value pairs passed as tuple and RDN
        dn1 = DN((self.attr1, self.value1), RDN((self.attr2, self.value2)))
        assert len(dn1) == 2
        self.assertExpectedClass(DN, dn1, 'self')
        for i in range(0, len(dn1)):
            self.assertExpectedClass(DN, dn1[i], 'RDN')
            for j in range(0, len(dn1[i])):
                self.assertExpectedClass(DN, dn1[i][j], 'AVA')
            assert isinstance(dn1[i].attr, unicode)
            assert isinstance(dn1[i].value, unicode)
        assert dn1[0] == self.rdn1
        assert dn1[1] == self.rdn2

        # Create with multiple attr,value pairs but reverse
        # constructor parameter ordering. RDN ordering should also be
        # reversed because DN's are a ordered sequence of RDN's
        dn1 = DN((self.attr2, self.value2), (self.attr1, self.value1))
        assert len(dn1) == 2
        self.assertExpectedClass(DN, dn1, 'self')
        for i in range(0, len(dn1)):
            self.assertExpectedClass(DN, dn1[i], 'RDN')
            for j in range(0, len(dn1[i])):
                self.assertExpectedClass(DN, dn1[i][j], 'AVA')
            assert isinstance(dn1[i].attr, unicode)
            assert isinstance(dn1[i].value, unicode)
        assert dn1[0] == self.rdn2
        assert dn1[1] == self.rdn1

        # Create with single RDN object
        dn1 = DN(self.rdn1)
        assert len(dn1) == 1
        self.assertExpectedClass(DN, dn1, 'self')
        for i in range(0, len(dn1)):
            self.assertExpectedClass(DN, dn1[i], 'RDN')
            for j in range(0, len(dn1[i])):
                self.assertExpectedClass(DN, dn1[i][j], 'AVA')
            assert isinstance(dn1[i].attr, unicode)
            assert isinstance(dn1[i].value, unicode)
        assert dn1[0] == self.rdn1

        # Create with multiple RDN objects, assure ordering is preserved.
        dn1 = DN(self.rdn1, self.rdn2)
        assert len(dn1) == 2
        self.assertExpectedClass(DN, dn1, 'self')
        for i in range(0, len(dn1)):
            self.assertExpectedClass(DN, dn1[i], 'RDN')
            for j in range(0, len(dn1[i])):
                self.assertExpectedClass(DN, dn1[i][j], 'AVA')
            assert isinstance(dn1[i].attr, unicode)
            assert isinstance(dn1[i].value, unicode)
        assert dn1[0] == self.rdn1
        assert dn1[1] == self.rdn2

        # Create with multiple RDN objects in different order, assure
        # ordering is preserved.
        dn1 = DN(self.rdn2, self.rdn1)
        assert len(dn1) == 2
        self.assertExpectedClass(DN, dn1, 'self')
        for i in range(0, len(dn1)):
            self.assertExpectedClass(DN, dn1[i], 'RDN')
            for j in range(0, len(dn1[i])):
                self.assertExpectedClass(DN, dn1[i][j], 'AVA')
            assert isinstance(dn1[i].attr, unicode)
            assert isinstance(dn1[i].value, unicode)
        assert dn1[0] == self.rdn2
        assert dn1[1] == self.rdn1

        # Create with single string with 1 RDN
        dn1 = DN(self.str_rdn1)
        assert len(dn1) == 1
        self.assertExpectedClass(DN, dn1, 'self')
        for i in range(0, len(dn1)):
            self.assertExpectedClass(DN, dn1[i], 'RDN')
            for j in range(0, len(dn1[i])):
                self.assertExpectedClass(DN, dn1[i][j], 'AVA')
            assert isinstance(dn1[i].attr, unicode)
            assert isinstance(dn1[i].value, unicode)
        assert dn1[0] == self.rdn1

        # Create with single string with 2 RDN's
        dn1 = DN(self.str_dn3)
        assert len(dn1) == 2
        self.assertExpectedClass(DN, dn1, 'self')
        for i in range(0, len(dn1)):
            self.assertExpectedClass(DN, dn1[i], 'RDN')
            for j in range(0, len(dn1[i])):
                self.assertExpectedClass(DN, dn1[i][j], 'AVA')
            assert isinstance(dn1[i].attr, unicode)
            assert isinstance(dn1[i].value, unicode)
        assert dn1[0] == self.rdn1
        assert dn1[1] == self.rdn2

        # Create with a python-cryptography 'Name'
        dn1 = DN(self.x500name)
        assert len(dn1) == 2
        self.assertExpectedClass(DN, dn1, 'self')
        for i in range(0, len(dn1)):
            self.assertExpectedClass(DN, dn1[i], 'RDN')
            for j in range(0, len(dn1[i])):
                self.assertExpectedClass(DN, dn1[i][j], 'AVA')
            assert isinstance(dn1[i].attr, unicode)
            assert isinstance(dn1[i].value, unicode)
        assert dn1[0] == self.rdn1
        assert dn1[1] == self.rdn2

        # Create from 'Name' with multi-valued RDN
        dn1 = DN(self.x500nameMultiRDN)
        assert len(dn1) == 2
        assert len(dn1[1]) == 2
        assert AVA('c', 'au') in dn1[1]
        assert AVA('st', 'queensland') in dn1[1]
        assert len(dn1[0]) == 1
        assert self.ava1 in dn1[0]

        # Create with RDN, and 2 DN's (e.g. attr + container + base)
        dn1 = DN((self.attr1, self.value1), self.container_dn, self.base_dn)
        assert len(dn1) == 5
        dn_str = ','.join([str(self.rdn1),
                            str(self.container_rdn1), str(self.container_rdn2),
                            str(self.base_rdn1), str(self.base_rdn2)])
        assert str(dn1) == dn_str
Beispiel #16
0
    def test_cmp(self):
        # Equality
        ava1 = AVA(self.attr1, self.value1)

        self.assertTrue(ava1 == self.ava1)
        self.assertFalse(ava1 != self.ava1)

        self.assertTrue(ava1 == self.str_ava1)
        self.assertFalse(ava1 != self.str_ava1)

        result = cmp(ava1, self.ava1)
        self.assertEqual(result, 0)

        # Upper case attr should still be equal
        ava1 = AVA(self.attr1.upper(), self.value1)

        self.assertFalse(ava1.attr == self.attr1)
        self.assertTrue(ava1.value == self.value1)
        self.assertTrue(ava1 == self.ava1)
        self.assertFalse(ava1 != self.ava1)

        result = cmp(ava1, self.ava1)
        self.assertEqual(result, 0)

        # Upper case value should still be equal
        ava1 = AVA(self.attr1, self.value1.upper())

        self.assertTrue(ava1.attr == self.attr1)
        self.assertFalse(ava1.value == self.value1)
        self.assertTrue(ava1 == self.ava1)
        self.assertFalse(ava1 != self.ava1)

        result = cmp(ava1, self.ava1)
        self.assertEqual(result, 0)

        # Make ava1's attr greater
        with self.assertRaises(AttributeError):
            ava1.attr = self.attr1 + "1"
        ava1 = AVA(self.attr1 + "1", self.value1.upper())

        self.assertFalse(ava1 == self.ava1)
        self.assertTrue(ava1 != self.ava1)

        result = cmp(ava1, self.ava1)
        self.assertEqual(result, 1)

        result = cmp(self.ava1, ava1)
        self.assertEqual(result, -1)

        # Reset ava1's attr, should be equal again
        with self.assertRaises(AttributeError):
            ava1.attr = self.attr1
        ava1 = AVA(self.attr1, self.value1.upper())

        result = cmp(ava1, self.ava1)
        self.assertEqual(result, 0)

        # Make ava1's value greater
        # attr will be equal, this tests secondary comparision component
        with self.assertRaises(AttributeError):
            ava1.value = self.value1 + "1"
        ava1 = AVA(self.attr1, self.value1 + "1")

        result = cmp(ava1, self.ava1)
        self.assertEqual(result, 1)

        result = cmp(self.ava1, ava1)
        self.assertEqual(result, -1)
Beispiel #17
0
    def test_i18n(self):
        actual = self.arabic_hello_unicode.encode('utf-8')
        expected = self.arabic_hello_utf8
        assert actual == expected

        # AVA's
        # test attr i18n
        ava1 = AVA(self.arabic_hello_unicode, 'foo')
        assert isinstance(ava1.attr, unicode)
        assert isinstance(ava1.value, unicode)
        assert ava1.attr == self.arabic_hello_unicode
        self.assert_equal_utf8(ava1, self.arabic_hello_utf8 + b'=foo')

        with self.fail_py3(TypeError):
            ava1 = AVA(self.arabic_hello_utf8, 'foo')
        if six.PY2:
            assert isinstance(ava1.attr, unicode)
            assert isinstance(ava1.value, unicode)
            assert ava1.attr == self.arabic_hello_unicode
            self.assert_equal_utf8(ava1, self.arabic_hello_utf8 + b'=foo')

        # test value i18n
        ava1 = AVA('cn', self.arabic_hello_unicode)
        assert isinstance(ava1.attr, unicode)
        assert isinstance(ava1.value, unicode)
        assert ava1.value == self.arabic_hello_unicode
        self.assert_equal_utf8(ava1, b'cn=' + self.arabic_hello_utf8)

        with self.fail_py3(TypeError):
            ava1 = AVA('cn', self.arabic_hello_utf8)
        if six.PY2:
            assert isinstance(ava1.attr, unicode)
            assert isinstance(ava1.value, unicode)
            assert ava1.value == self.arabic_hello_unicode
            self.assert_equal_utf8(ava1, b'cn=' + self.arabic_hello_utf8)

        # RDN's
        # test attr i18n
        rdn1 = RDN((self.arabic_hello_unicode, 'foo'))
        assert isinstance(rdn1.attr, unicode)
        assert isinstance(rdn1.value, unicode)
        assert rdn1.attr == self.arabic_hello_unicode
        self.assert_equal_utf8(rdn1, self.arabic_hello_utf8 + b'=foo')

        with self.fail_py3(TypeError):
            rdn1 = RDN((self.arabic_hello_utf8, 'foo'))
        if six.PY2:
            assert isinstance(rdn1.attr, unicode)
            assert isinstance(rdn1.value, unicode)
            assert rdn1.attr == self.arabic_hello_unicode
            assert str(rdn1) == self.arabic_hello_utf8 + b'=foo'

        # test value i18n
        rdn1 = RDN(('cn', self.arabic_hello_unicode))
        assert isinstance(rdn1.attr, unicode)
        assert isinstance(rdn1.value, unicode)
        assert rdn1.value == self.arabic_hello_unicode
        self.assert_equal_utf8(rdn1, b'cn=' + self.arabic_hello_utf8)

        with self.fail_py3(TypeError):
            rdn1 = RDN(('cn', self.arabic_hello_utf8))
        if six.PY2:
            assert isinstance(rdn1.attr, unicode)
            assert isinstance(rdn1.value, unicode)
            assert rdn1.value == self.arabic_hello_unicode
            assert str(rdn1) == b'cn=' + self.arabic_hello_utf8

        # DN's
        # test attr i18n
        dn1 = DN((self.arabic_hello_unicode, 'foo'))
        assert isinstance(dn1[0].attr, unicode)
        assert isinstance(dn1[0].value, unicode)
        assert dn1[0].attr == self.arabic_hello_unicode
        self.assert_equal_utf8(dn1, self.arabic_hello_utf8 + b'=foo')

        with self.fail_py3(TypeError):
            dn1 = DN((self.arabic_hello_utf8, 'foo'))
        if six.PY2:
            assert isinstance(dn1[0].attr, unicode)
            assert isinstance(dn1[0].value, unicode)
            assert dn1[0].attr == self.arabic_hello_unicode
            assert str(dn1) == self.arabic_hello_utf8 + b'=foo'

        # test value i18n
        dn1 = DN(('cn', self.arabic_hello_unicode))
        assert isinstance(dn1[0].attr, unicode)
        assert isinstance(dn1[0].value, unicode)
        assert dn1[0].value == self.arabic_hello_unicode
        self.assert_equal_utf8(dn1, b'cn=' + self.arabic_hello_utf8)

        with self.fail_py3(TypeError):
            dn1 = DN(('cn', self.arabic_hello_utf8))
        if six.PY2:
            assert isinstance(dn1[0].attr, unicode)
            assert isinstance(dn1[0].value, unicode)
            assert dn1[0].value == self.arabic_hello_unicode
            assert str(dn1) == b'cn=' + self.arabic_hello_utf8
Beispiel #18
0
    def test_i18n(self):
        self.assertEqual(self.arabic_hello_utf8,
                         self.arabic_hello_unicode.encode('utf-8'))

        # AVA's
        # test attr i18n
        ava1 = AVA(self.arabic_hello_unicode, 'foo')
        self.assertIsInstance(ava1.attr, unicode)
        self.assertIsInstance(ava1.value, unicode)
        self.assertEqual(ava1.attr, self.arabic_hello_unicode)
        self.assert_equal_utf8(ava1, self.arabic_hello_utf8 + b'=foo')

        with self.fail_py3(TypeError):
            ava1 = AVA(self.arabic_hello_utf8, 'foo')
        if six.PY2:
            self.assertIsInstance(ava1.attr, unicode)
            self.assertIsInstance(ava1.value, unicode)
            self.assertEqual(ava1.attr, self.arabic_hello_unicode)
            self.assert_equal_utf8(ava1, self.arabic_hello_utf8 + b'=foo')

        # test value i18n
        ava1 = AVA('cn', self.arabic_hello_unicode)
        self.assertIsInstance(ava1.attr, unicode)
        self.assertIsInstance(ava1.value, unicode)
        self.assertEqual(ava1.value, self.arabic_hello_unicode)
        self.assert_equal_utf8(ava1, b'cn=' + self.arabic_hello_utf8)

        with self.fail_py3(TypeError):
            ava1 = AVA('cn', self.arabic_hello_utf8)
        if six.PY2:
            self.assertIsInstance(ava1.attr, unicode)
            self.assertIsInstance(ava1.value, unicode)
            self.assertEqual(ava1.value, self.arabic_hello_unicode)
            self.assert_equal_utf8(ava1, b'cn=' + self.arabic_hello_utf8)

        # RDN's
        # test attr i18n
        rdn1 = RDN((self.arabic_hello_unicode, 'foo'))
        self.assertIsInstance(rdn1.attr, unicode)
        self.assertIsInstance(rdn1.value, unicode)
        self.assertEqual(rdn1.attr, self.arabic_hello_unicode)
        self.assert_equal_utf8(rdn1, self.arabic_hello_utf8 + b'=foo')

        with self.fail_py3(TypeError):
            rdn1 = RDN((self.arabic_hello_utf8, 'foo'))
        if six.PY2:
            self.assertIsInstance(rdn1.attr, unicode)
            self.assertIsInstance(rdn1.value, unicode)
            self.assertEqual(rdn1.attr, self.arabic_hello_unicode)
            self.assertEqual(str(rdn1), self.arabic_hello_utf8 + b'=foo')

        # test value i18n
        rdn1 = RDN(('cn', self.arabic_hello_unicode))
        self.assertIsInstance(rdn1.attr, unicode)
        self.assertIsInstance(rdn1.value, unicode)
        self.assertEqual(rdn1.value, self.arabic_hello_unicode)
        self.assert_equal_utf8(rdn1, b'cn=' + self.arabic_hello_utf8)

        with self.fail_py3(TypeError):
            rdn1 = RDN(('cn', self.arabic_hello_utf8))
        if six.PY2:
            self.assertIsInstance(rdn1.attr, unicode)
            self.assertIsInstance(rdn1.value, unicode)
            self.assertEqual(rdn1.value, self.arabic_hello_unicode)
            self.assertEqual(str(rdn1), b'cn=' + self.arabic_hello_utf8)

        # DN's
        # test attr i18n
        dn1 = DN((self.arabic_hello_unicode, 'foo'))
        self.assertIsInstance(dn1[0].attr, unicode)
        self.assertIsInstance(dn1[0].value, unicode)
        self.assertEqual(dn1[0].attr, self.arabic_hello_unicode)
        self.assert_equal_utf8(dn1, self.arabic_hello_utf8 + b'=foo')

        with self.fail_py3(TypeError):
            dn1 = DN((self.arabic_hello_utf8, 'foo'))
        if six.PY2:
            self.assertIsInstance(dn1[0].attr, unicode)
            self.assertIsInstance(dn1[0].value, unicode)
            self.assertEqual(dn1[0].attr, self.arabic_hello_unicode)
            self.assertEqual(str(dn1), self.arabic_hello_utf8 + b'=foo')

        # test value i18n
        dn1 = DN(('cn', self.arabic_hello_unicode))
        self.assertIsInstance(dn1[0].attr, unicode)
        self.assertIsInstance(dn1[0].value, unicode)
        self.assertEqual(dn1[0].value, self.arabic_hello_unicode)
        self.assert_equal_utf8(dn1, b'cn=' + self.arabic_hello_utf8)

        with self.fail_py3(TypeError):
            dn1 = DN(('cn', self.arabic_hello_utf8))
        if six.PY2:
            self.assertIsInstance(dn1[0].attr, unicode)
            self.assertIsInstance(dn1[0].value, unicode)
            self.assertEqual(dn1[0].value, self.arabic_hello_unicode)
            self.assertEqual(str(dn1), b'cn=' + self.arabic_hello_utf8)
Beispiel #19
0
    def test_cmp(self):
        # Equality
        ava1 = AVA(self.attr1, self.value1)

        assert ava1 == self.ava1
        assert ava1 == self.ava1

        assert ava1 == self.str_ava1
        assert ava1 == self.str_ava1

        result = cmp(ava1, self.ava1)
        assert result == 0

        # Upper case attr should still be equal
        ava1 = AVA(self.attr1.upper(), self.value1)

        assert ava1.attr != self.attr1
        assert ava1.value == self.value1
        assert ava1 == self.ava1
        assert ava1 == self.ava1

        result = cmp(ava1, self.ava1)
        assert result == 0

        # Upper case value should still be equal
        ava1 = AVA(self.attr1, self.value1.upper())

        assert ava1.attr == self.attr1
        assert ava1.value != self.value1
        assert ava1 == self.ava1
        assert ava1 == self.ava1

        result = cmp(ava1, self.ava1)
        assert result == 0

        # Make ava1's attr greater
        with pytest.raises(AttributeError):
            ava1.attr = self.attr1 + "1"
        ava1 = AVA(self.attr1 + "1", self.value1.upper())

        assert ava1 != self.ava1
        assert ava1 != self.ava1

        result = cmp(ava1, self.ava1)
        assert result == 1

        result = cmp(self.ava1, ava1)
        assert result == -1

        # Reset ava1's attr, should be equal again
        with pytest.raises(AttributeError):
            ava1.attr = self.attr1
        ava1 = AVA(self.attr1, self.value1.upper())

        result = cmp(ava1, self.ava1)
        assert result == 0

        # Make ava1's value greater
        # attr will be equal, this tests secondary comparision component
        with pytest.raises(AttributeError):
            ava1.value = self.value1 + "1"
        ava1 = AVA(self.attr1, self.value1 + "1")

        result = cmp(ava1, self.ava1)
        assert result == 1

        result = cmp(self.ava1, ava1)
        assert result == -1
Beispiel #20
0
    def test_str(self):
        ava1 = AVA(self.ava1)

        assert str(ava1) == self.str_ava1
        assert isinstance(str(ava1), str)