def test_la_move_ou_tree(self): tag = 'move_tree' u1, u2 = self.add_objects(2, 'user', '%s_u_' % tag, ou=self.ou1) g1, g2 = self.add_objects(2, 'group', '%s_g_' % tag, ou=self.ou1) c1, c2, c3 = self.add_objects(3, 'computer', '%s_c_' % tag, ou=self.ou1) self.add_linked_attribute(g1, u1) self.add_linked_attribute(g1, g2) self.add_linked_attribute(g2, u1) self.add_linked_attribute(g2, u2) c1u1 = self.add_binary_link(c1, u1, 'a').replace(self.ou1, self.ou3) c2u1 = self.add_binary_link(c2, u1, 'b').replace(self.ou1, self.ou3) c3u1 = self.add_binary_link(c3, u1, 124.543).replace(self.ou1, self.ou3) c1g1 = self.add_binary_link(c1, g1, 'd').replace(self.ou1, self.ou3) c2g2 = self.add_binary_link(c2, g2, 'd').replace(self.ou1, self.ou3) c2c1 = self.add_binary_link(c2, c1, 'd').replace(self.ou1, self.ou3) c1u2 = self.add_binary_link(c1, u2, 'd').replace(self.ou1, self.ou3) c1u1_2 = self.add_binary_link(c1, u1, 'b').replace(self.ou1, self.ou3) self.assertRaisesLdbError(20, "Attribute msDS-RevealedUsers already exists", self.add_binary_link, c1, u2, 'd') self.samdb.rename(self.ou1, self.ou3) debug(colour.c_CYAN("rename FINISHED")) u1, u2, g1, g2, c1, c2, c3 = [x.replace(self.ou1, self.ou3) for x in (u1, u2, g1, g2, c1, c2, c3)] self.samdb.delete(g2, ['tree_delete:1']) self.assert_forward_links(g1, [u1]) self.assert_back_links(u1, [g1]) self.assert_back_links(u2, set()) self.assert_forward_links(c1, [c1u1, c1u1_2, c1u2, c1g1], attr='msDS-RevealedUsers') self.assert_forward_links(c2, [c2u1, c2c1], attr='msDS-RevealedUsers') self.assert_forward_links(c3, [c3u1], attr='msDS-RevealedUsers') self.assert_back_links(u1, [c1, c1, c2, c3], attr='msDS-RevealedDSAs') self.assert_back_links(u2, [c1], attr='msDS-RevealedDSAs') self.assert_back_links(g1, [c1], attr='msDS-RevealedDSAs') self.assert_back_links(c1, [c2], attr='msDS-RevealedDSAs')
def test_la_move_ou_noncomputers(self): """Here we are especially testing the msDS-RevealedDSAs links""" tag = 'move_noncomputers' u1, u2 = self.add_objects(2, 'user', '%s_u_' % tag, ou=self.ou1) g1, g2 = self.add_objects(2, 'group', '%s_g_' % tag, ou=self.ou1) c1, c2, c3 = self.add_objects(3, 'computer', '%s_c_' % tag, ou=self.ou2) self.add_linked_attribute(g1, u1) self.add_linked_attribute(g1, g2) c1u1 = self.add_binary_link(c1, u1, 'a').replace(self.ou1, self.ou3) c2u1 = self.add_binary_link(c2, u1, 'b').replace(self.ou1, self.ou3) c2u1_2 = self.add_binary_link(c2, u1, 'c').replace(self.ou1, self.ou3) c3u1 = self.add_binary_link(c3, g1, 'b').replace(self.ou1, self.ou3) c1g1 = self.add_binary_link(c1, g1, 'd').replace(self.ou1, self.ou3) c2g2 = self.add_binary_link(c2, g2, 'd').replace(self.ou1, self.ou3) c2c1 = self.add_binary_link(c2, c1, 'd').replace(self.ou1, self.ou3) c1u2 = self.add_binary_link(c1, u2, 'd').replace(self.ou1, self.ou3) c1u1_2 = self.add_binary_link(c1, u1, 'b').replace(self.ou1, self.ou3) c1u1_3 = self.add_binary_link(c1, u1, 'c').replace(self.ou1, self.ou3) c2u1_3 = self.add_binary_link(c2, u1, 'e').replace(self.ou1, self.ou3) c3u2 = self.add_binary_link(c3, u2, 'b').replace(self.ou1, self.ou3) self.samdb.rename(self.ou1, self.ou3) debug(colour.c_CYAN("rename FINISHED")) u1, u2, g1, g2, c1, c2, c3 = [x.replace(self.ou1, self.ou3) for x in (u1, u2, g1, g2, c1, c2, c3)] self.samdb.delete(c3, ['tree_delete:1']) self.assert_forward_links(g1, [g2, u1]) self.assert_back_links(u1, [g1]) self.assert_back_links(u2, []) self.assert_forward_links(c1, [c1u1, c1u1_2, c1u1_3, c1u2, c1g1], attr='msDS-RevealedUsers') self.assert_forward_links(c2, [c2u1, c2u1_2, c2u1_3, c2c1, c2g2], attr='msDS-RevealedUsers') self.assert_back_links(u1, [c1, c1, c1, c2, c2, c2], attr='msDS-RevealedDSAs') self.assert_back_links(u2, [c1], attr='msDS-RevealedDSAs') self.assert_back_links(g1, [c1], attr='msDS-RevealedDSAs') self.assert_back_links(c1, [c2], attr='msDS-RevealedDSAs')