def test_mass_delete(self):
     g1 = Group(name="g1", project_id=self.project1._id)
     g1.save()
     g2 = Group(name="g2", project_id=self.project1._id)
     g2.save()
     g3 = Group(name="g3", project_id=self.project1._id)
     g3.save()
     g4 = Group(name="g4", project_id=self.project1._id)
     g4.save()
     g1.add_child(g2)
     g2.add_child(g3)
     g3.add_child(g4)
     group_ids = [str(g2._id), str(g3._id)]
     r = self.post_json("/api/v1/groups/mass_delete",
                        {"group_ids": group_ids})
     self.assertEqual(200, r.status_code)
     deleted_groups = Group.find({"_id": {"$in": [g2._id, g3._id]}})
     self.assertEqual(0, deleted_groups.count())
     g1 = Group.find_one({"_id": g1._id})
     self.assertEqual(0, len(g1.child_ids))
     g4 = Group.find_one({"_id": g4._id})
     self.assertEqual(0, len(g4.parent_ids))
Beispiel #2
0
    group_cache[group_name] = g
    i += 1
    if i % 1000 == 0:
        print i
print i

i = 0
print "Setting children"
for group_name, group_desc in data["Groups"].items():
    child_ids = []
    for child in group_desc["children"]:
        child_ids.append(group_cache[child]._id)
    if len(child_ids) > 0:
        g = group_cache[group_name]
        for cid in child_ids:
            g.add_child(cid)
    i += 1
    if i % 100 == 0:
        print i
print i

print "Processing datacenters"
Datacenter.destroy_all()
datacenter_cache = {}
for datacenter_name, datacenter_desc in data["Datacenters"].items():
    dc = Datacenter(name=datacenter_name, human_readable=datacenter_desc["golem_name"])
    dc.save()
    datacenter_cache[datacenter_name] = dc

print "Setting parents"
for datacenter_name, datacenter_desc in data["Datacenters"].items():
    def test_mass_move(self):
        g1 = Group(name="g1", project_id=self.project1._id)
        g1.save()
        g2 = Group(name="g2", project_id=self.project1._id)
        g2.save()
        g3 = Group(name="g3", project_id=self.project1._id)
        g3.save()
        g4 = Group(name="g4", project_id=self.project1._id)
        g4.save()

        g1.add_child(g2)
        g2.add_child(g3)
        g3.add_child(g4)

        # 400, no group_ids given
        r = self.post_json("/api/v1/groups/mass_move",
                           {"project_id": str(self.project2._id)})
        self.assertEqual(r.status_code, 400)

        # 400, no project_id given
        r = self.post_json("/api/v1/groups/mass_move",
                           {"group_ids": [str(g2._id)]})
        self.assertEqual(r.status_code, 400)

        # 400, invalid group_ids type
        r = self.post_json("/api/v1/groups/mass_move", {
            "project_id": str(self.project2._id),
            "group_ids": str(g2._id)
        })
        self.assertEqual(r.status_code, 400)

        # group is already in the project - 404, no group suitable for moving found
        r = self.post_json("/api/v1/groups/mass_move", {
            "project_id": str(self.project1._id),
            "group_ids": [str(g2._id)]
        })
        self.assertEqual(r.status_code, 404)

        # no project found
        r = self.post_json("/api/v1/groups/mass_move", {
            "project_id": str(ObjectId()),
            "group_ids": [str(g2._id)]
        })
        self.assertEqual(r.status_code, 404)

        # real case
        payload = {
            "group_ids": [str(g2._id)],
            "project_id": str(self.project2._id)
        }

        r = self.post_json("/api/v1/groups/mass_move", payload)
        self.assertEqual(r.status_code, 200)

        # reload groups
        g1 = Group.find_one({"_id": g1._id})
        g2 = Group.find_one({"_id": g2._id})
        g3 = Group.find_one({"_id": g3._id})
        g4 = Group.find_one({"_id": g4._id})

        # group 1 should have remained in project1
        self.assertEqual(g1.project_id, self.project1._id)

        # groups 2, 3, 4 should have been moved to project2
        self.assertEqual(g2.project_id, self.project2._id)
        self.assertEqual(g3.project_id, self.project2._id)
        self.assertEqual(g4.project_id, self.project2._id)

        # group 2 should have been detached from g1
        self.assertItemsEqual([], g2.parent_ids)
        self.assertItemsEqual([], g1.child_ids)

        # groups 3, 4 should have kept its' parents
        self.assertItemsEqual([g2._id], g3.parent_ids)
        self.assertItemsEqual([g3._id], g4.parent_ids)