def test_delete_build_basic(self, f_users, f_coprs, f_mock_chroots, f_builds, f_db): self.b1.pkgs = "http://example.com/copr-keygen-1.58-1.fc20.src.rpm" expected_dir = self.b1.result_dir self.db.session.add(self.b1) self.db.session.commit() expected_chroots_to_delete = set() for bchroot in self.b1_bc: expected_chroots_to_delete.add(bchroot.name) assert len(ActionsLogic.get_many().all()) == 0 BuildsLogic.delete_build(self.u1, self.b1) self.db.session.commit() assert len(ActionsLogic.get_many().all()) == 1 action = ActionsLogic.get_many().one() delete_data = json.loads(action.data) assert delete_data['chroot_builddirs'] == { 'srpm-builds': ['bar'], 'fedora-18-x86_64': ['bar'] } with pytest.raises(NoResultFound): BuildsLogic.get(self.b1.id).one()
def test_delete_build_as_admin(self, f_users, f_coprs, f_mock_chroots, f_builds, f_db): self.b4.pkgs = "http://example.com/copr-keygen-1.58-1.fc20.src.rpm" expected_dir = self.b4.result_dir for bc in self.b4_bc: bc.status = StatusEnum("succeeded") bc.ended_on = time.time() self.u1.admin = True self.db.session.add_all(self.b4_bc) self.db.session.add(self.b4) self.db.session.add(self.u1) self.db.session.commit() expected_chroots_to_delete = set() for bchroot in self.b4_bc: expected_chroots_to_delete.add(bchroot.name) assert len(ActionsLogic.get_many().all()) == 0 BuildsLogic.delete_build(self.u1, self.b4) self.db.session.commit() assert len(ActionsLogic.get_many().all()) == 1 action = ActionsLogic.get_many().one() with pytest.raises(NoResultFound): BuildsLogic.get(self.b4.id).one()
def test_delete_build_as_admin( self, f_users, f_coprs, f_mock_chroots, f_builds, f_db): self.b4.pkgs = "http://example.com/copr-keygen-1.58-1.fc20.src.rpm" expected_dir = self.b4.result_dir_name for bc in self.b4_bc: bc.status = StatusEnum("succeeded") bc.ended_on = time.time() self.u1.admin = True self.db.session.add_all(self.b4_bc) self.db.session.add(self.b4) self.db.session.add(self.u1) self.db.session.commit() expected_chroots_to_delete = set() for bchroot in self.b4_bc: expected_chroots_to_delete.add(bchroot.name) assert len(ActionsLogic.get_many().all()) == 0 BuildsLogic.delete_build(self.u1, self.b4) self.db.session.commit() assert len(ActionsLogic.get_many().all()) == 1 action = ActionsLogic.get_many().one() delete_data = json.loads(action.data) assert "chroots" in delete_data assert delete_data["result_dir_name"] == expected_dir assert expected_chroots_to_delete == set(delete_data["chroots"]) with pytest.raises(NoResultFound): BuildsLogic.get(self.b4.id).one()
def test_delete_build_basic( self, f_users, f_coprs, f_mock_chroots, f_builds, f_db): self.b1.pkgs = "http://example.com/copr-keygen-1.58-1.fc20.src.rpm" expected_dir = self.b1.result_dir_name self.db.session.add(self.b1) self.db.session.commit() expected_chroots_to_delete = set() for bchroot in self.b1_bc: expected_chroots_to_delete.add(bchroot.name) assert len(ActionsLogic.get_many().all()) == 0 BuildsLogic.delete_build(self.u1, self.b1) self.db.session.commit() assert len(ActionsLogic.get_many().all()) == 1 action = ActionsLogic.get_many().one() delete_data = json.loads(action.data) assert "chroots" in delete_data assert delete_data["result_dir_name"] == expected_dir assert expected_chroots_to_delete == set(delete_data["chroots"]) with pytest.raises(NoResultFound): BuildsLogic.get(self.b1.id).one()
def test_delete_build_basic(self, f_users, f_coprs, f_mock_chroots, f_builds, f_db): self.b1.pkgs = "http://example.com/copr-keygen-1.58-1.fc20.src.rpm" expected_dir = self.b1.result_dir_name self.db.session.add(self.b1) self.db.session.commit() expected_chroots_to_delete = set() for bchroot in self.b1_bc: expected_chroots_to_delete.add(bchroot.name) assert len(ActionsLogic.get_many().all()) == 0 BuildsLogic.delete_build(self.u1, self.b1) self.db.session.commit() assert len(ActionsLogic.get_many().all()) == 1 action = ActionsLogic.get_many().one() delete_data = json.loads(action.data) assert "chroots" in delete_data assert delete_data["result_dir_name"] == expected_dir assert expected_chroots_to_delete == set(delete_data["chroots"]) with pytest.raises(NoResultFound): BuildsLogic.get(self.b1.id).one()
def test_delete_build_exceptions( self, f_users, f_coprs, f_mock_chroots, f_builds, f_db): self.db.session.commit() with pytest.raises(InsufficientRightsException): BuildsLogic.delete_build(self.u1, self.b4) self.b1_bc[0].status = "running" self.db.session.add(self.b1_bc[0]) self.db.session.commit() with pytest.raises(ActionInProgressException): BuildsLogic.delete_build(self.u1, self.b1)
def test_delete_build_no_chroots_to_clean(self, f_users, f_coprs, f_mock_chroots, f_builds, f_db): for bchroot in self.b1_bc: bchroot.status = helpers.StatusEnum("skipped") self.db.session.commit() assert len(ActionsLogic.get_many().all()) == 0 BuildsLogic.delete_build(self.u1, self.b1) self.db.session.commit() assert len(ActionsLogic.get_many().all()) == 0
def test_delete_build_exceptions(self, f_users, f_coprs, f_mock_chroots, f_builds, f_db): self.db.session.commit() with pytest.raises(InsufficientRightsException): BuildsLogic.delete_build(self.u1, self.b4) self.b1_bc[0].status = "running" self.db.session.add(self.b1_bc[0]) self.db.session.commit() with pytest.raises(ActionInProgressException): BuildsLogic.delete_build(self.u1, self.b1)
def test_delete_build_no_chroots_to_clean( self, f_users, f_coprs, f_mock_chroots, f_builds, f_db): for bchroot in self.b1_bc: bchroot.status = helpers.StatusEnum("skipped") self.db.session.commit() assert len(ActionsLogic.get_many().all()) == 0 BuildsLogic.delete_build(self.u1, self.b1) self.db.session.commit() assert len(ActionsLogic.get_many().all()) == 0
def test_delete_build_exceptions( self, f_users, f_coprs, f_mock_chroots, f_builds, f_db): for bc in self.b4_bc: bc.status = StatusEnum("succeeded") bc.ended_on = time.time() self.u1.admin = False self.db.session.add_all(self.b4_bc) self.db.session.add(self.b4) self.db.session.add(self.u1) self.db.session.commit() with pytest.raises(InsufficientRightsException): BuildsLogic.delete_build(self.u1, self.b4) self.b1_bc[0].status = StatusEnum("running") self.db.session.add(self.b1_bc[0]) self.db.session.commit() with pytest.raises(ActionInProgressException): BuildsLogic.delete_build(self.u1, self.b1)
def test_delete_build_exceptions( self, f_users, f_coprs, f_mock_chroots, f_builds, f_db): for bc in self.b4_bc: bc.status = StatusEnum("succeeded") bc.ended_on = time.time() self.u1.admin = False self.db.session.add_all(self.b4_bc) self.db.session.add(self.b4) self.db.session.add(self.u1) self.db.session.commit() with pytest.raises(InsufficientRightsException): BuildsLogic.delete_build(self.u1, self.b4) self.b1_bc[0].status = StatusEnum("running") self.db.session.add(self.b1_bc[0]) self.db.session.commit() with pytest.raises(ActionInProgressException): BuildsLogic.delete_build(self.u1, self.b1)
def test_delete_build_basic( self, f_users, f_coprs, f_mock_chroots, f_builds, f_db): self.db.session.commit() expected_chroots_to_delete = set() for bchroot in self.b1_bc: expected_chroots_to_delete.add(bchroot.name) assert len(ActionsLogic.get_many().all()) == 0 BuildsLogic.delete_build(self.u1, self.b1) self.db.session.commit() assert len(ActionsLogic.get_many().all()) == 1 action = ActionsLogic.get_many().one() delete_data = json.loads(action.data) assert "chroots" in delete_data assert expected_chroots_to_delete == set(delete_data["chroots"]) with pytest.raises(NoResultFound): BuildsLogic.get(self.b1.id).one()
def test_delete_build_basic(self, f_users, f_coprs, f_mock_chroots, f_builds, f_db): self.db.session.commit() expected_chroots_to_delete = set() for bchroot in self.b1_bc: expected_chroots_to_delete.add(bchroot.name) assert len(ActionsLogic.get_many().all()) == 0 BuildsLogic.delete_build(self.u1, self.b1) self.db.session.commit() assert len(ActionsLogic.get_many().all()) == 1 action = ActionsLogic.get_many().one() delete_data = json.loads(action.data) assert "chroots" in delete_data assert expected_chroots_to_delete == set(delete_data["chroots"]) with pytest.raises(NoResultFound): BuildsLogic.get(self.b1.id).one()
def test_delete_build_exceptions(self, f_users, f_coprs, f_mock_chroots, f_builds, f_db): for bc in self.b4_bc: bc.status = StatusEnum("succeeded") bc.ended_on = time.time() self.u1.admin = False self.db.session.add_all(self.b4_bc) self.db.session.add(self.b4) self.db.session.add(self.u1) self.db.session.commit() with pytest.raises(InsufficientRightsException): BuildsLogic.delete_build(self.u1, self.b4) self.b1_bc[0].status = StatusEnum("running") self.db.session.add(self.b1_bc[0]) self.db.session.commit() with pytest.raises(ActionInProgressException): BuildsLogic.delete_build(self.u1, self.b1) self.copr_persistent = models.Copr(name=u"persistent_copr", user=self.u2, persistent=True) self.copr_dir = models.CoprDir(name="persistent_copr", main=True, copr=self.copr_persistent) self.build_persistent = models.Build(copr=self.copr_persistent, copr_dir=self.copr_dir, package=self.p2, user=self.u2, submitted_on=100) with pytest.raises(InsufficientRightsException): BuildsLogic.delete_build(self.u2, self.build_persistent)
def test_delete_build_bad_src_pkg( self, f_users, f_coprs, f_mock_chroots, f_builds, f_db): # has meaning only for the builds with old result dir naming schema self.b1.pkgs = "http://example.com/" self.db.session.add(self.b1) self.db.session.commit() expected_chroots_to_delete = set() for bchroot in self.b1_bc: bchroot.git_hash = None expected_chroots_to_delete.add(bchroot.name) assert len(ActionsLogic.get_many().all()) == 0 BuildsLogic.delete_build(self.u1, self.b1) self.db.session.commit() assert len(ActionsLogic.get_many().all()) == 0 with pytest.raises(NoResultFound): BuildsLogic.get(self.b1.id).one()
def test_delete_build_some_chroots(self, f_users, f_coprs, f_mock_chroots, f_builds, f_db): expected_chroots_to_delete = set( [self.b1_bc[0].name, self.b1_bc[-1].name]) for bchroot in self.b1_bc[1:-1]: bchroot.status = helpers.StatusEnum("skipped") self.db.session.commit() assert len(ActionsLogic.get_many().all()) == 0 BuildsLogic.delete_build(self.u1, self.b1) self.db.session.commit() assert len(ActionsLogic.get_many().all()) == 1 action = ActionsLogic.get_many().one() delete_data = json.loads(action.data) assert "chroots" in delete_data assert expected_chroots_to_delete == set(delete_data["chroots"]) with pytest.raises(NoResultFound): BuildsLogic.get(self.b1.id).one()
def test_delete_build_some_chroots( self, f_users, f_coprs, f_mock_chroots, f_builds, f_db): expected_chroots_to_delete = set([self.b1_bc[0].name, self.b1_bc[-1].name]) for bchroot in self.b1_bc[1:-1]: bchroot.status = helpers.StatusEnum("skipped") self.db.session.commit() assert len(ActionsLogic.get_many().all()) == 0 BuildsLogic.delete_build(self.u1, self.b1) self.db.session.commit() assert len(ActionsLogic.get_many().all()) == 1 action = ActionsLogic.get_many().one() delete_data = json.loads(action.data) assert "chroots" in delete_data assert expected_chroots_to_delete == set(delete_data["chroots"]) with pytest.raises(NoResultFound): BuildsLogic.get(self.b1.id).one()
def test_delete_build_bad_src_pkg(self, f_users, f_coprs, f_mock_chroots, f_builds, f_db): # has meaning only for the builds with old result dir naming schema self.b1.pkgs = "http://example.com/" self.db.session.add(self.b1) self.db.session.commit() expected_chroots_to_delete = set() for bchroot in self.b1_bc: bchroot.git_hash = None expected_chroots_to_delete.add(bchroot.name) assert len(ActionsLogic.get_many().all()) == 0 BuildsLogic.delete_build(self.u1, self.b1) self.db.session.commit() assert len(ActionsLogic.get_many().all()) == 0 with pytest.raises(NoResultFound): BuildsLogic.get(self.b1.id).one()
def delete_build(build_id): build = ComplexLogic.get_build_safe(build_id) build_dict = to_dict(build) BuildsLogic.delete_build(flask.g.user, build) db.session.commit() return flask.jsonify(build_dict)