attrs=['objectGUID'])
return str(misc.GUID(res[0]['objectGUID'][0]))
+ def assertRaisesLdbError(self, errcode, msg, f, *args, **kwargs):
+ """Assert a function raises a particular LdbError."""
+ try:
+ f(*args, **kwargs)
+ except ldb.LdbError as (num, msg):
+ if num != errcode:
+ lut = {v: k for k, v in vars(ldb).iteritems()
+ if k.startswith('ERR_') and isinstance(v, int)}
+ self.fail("%s, expected "
+ "LdbError %s, (%d) "
+ "got %s (%d)" % (msg,
+ lut.get(errcode), errcode,
+ lut.get(num), num))
+ else:
+ lut = {v: k for k, v in vars(ldb).iteritems()
+ if k.startswith('ERR_') and isinstance(v, int)}
+ self.fail("%s, expected "
+ "LdbError %s, (%d) "
+ "but we got success" % (msg, lut.get(errcode), errcode))
+
def _test_la_backlinks(self, reveal=False):
tag = 'backlinks'
kwargs = {}
self.add_linked_attribute(g2, [u3, u1])
self.add_linked_attribute(g3, u2)
- try:
- # adding u2 twice should be an error
- self.add_linked_attribute(g2, [u1, u2, u3, u2])
- except ldb.LdbError as (num, msg):
- if num != ldb.ERR_ENTRY_ALREADY_EXISTS:
- self.fail("adding duplicate values, expected "
- "ERR_ENTRY_ALREADY_EXISTS, (%d) "
- "got %d" % (ldb.ERR_ENTRY_ALREADY_EXISTS, num))
- else:
- self.fail("adding duplicate values succeed when it shouldn't")
+ self.assertRaisesLdbError(ldb.ERR_ENTRY_ALREADY_EXISTS,
+ "adding duplicate values",
+ self.add_linked_attribute, g2,
+ [u1, u2, u3, u2])
self.assert_forward_links(g1, [u1, u2, u3, u4])
self.assert_forward_links(g2, [u3, u1])
self.assert_back_links(u3, [g1])
self.assert_back_links(u4, [])
- try:
- # adding u2 twice should be an error
- self.replace_linked_attribute(g2, [u1, u2, u3, u2])
- except ldb.LdbError as (num, msg):
- if num != ldb.ERR_ENTRY_ALREADY_EXISTS:
- self.fail("adding duplicate values, expected "
- "ERR_ENTRY_ALREADY_EXISTS, (%d) "
- "got %d" % (ldb.ERR_ENTRY_ALREADY_EXISTS, num))
- else:
- self.fail("replacing duplicate values succeeded when it shouldn't")
+ self.assertRaisesLdbError(ldb.ERR_ENTRY_ALREADY_EXISTS,
+ "replacing duplicate values",
+ self.replace_linked_attribute, g2,
+ [u1, u2, u3, u2])
+
def test_la_links_replace2(self):
users = self.add_objects(12, 'user', 'u_replace2')