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]), ])
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)
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)
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
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)
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)
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), ])
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
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)
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
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)
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'
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)
def test_str(self): ava1 = AVA(self.ava1) self.assertEqual(str(ava1), self.str_ava1) self.assertIsInstance(str(ava1), str)
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
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)
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
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)
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
def test_str(self): ava1 = AVA(self.ava1) assert str(ava1) == self.str_ava1 assert isinstance(str(ava1), str)