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_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_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_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_re_enable_auto_createrepo_produce_action(self, f_users, f_coprs, f_mock_chroots, f_db): self.db.session.add_all( [self.u1, self.c1, self.mc1, self.mc2, self.mc3]) username = self.u1.name coprname = self.c1.name copr_id = self.c1.id chroot = self.mc1.name # 1.ensure ACR enabled self.db.session.commit() c1_actual = CoprsLogic.get(self.u1.name, self.c1.name).one() assert c1_actual.auto_createrepo # 1. disabling ACR self.test_client.post("/coprs/{0}/{1}/update/".format( username, coprname), data={ "name": coprname, chroot: "y", "id": copr_id, "disable_createrepo": True }, follow_redirects=True) self.db.session.commit() # check current status c1_actual = CoprsLogic.get(username, coprname).one() assert not c1_actual.auto_createrepo # no actions issued before assert len(ActionsLogic.get_many().all()) == 0 # 2. enabling ACR self.test_client.post("/coprs/{0}/{1}/update/".format( username, coprname), data={ "name": coprname, chroot: "y", "id": copr_id, "disable_createrepo": "false" }, follow_redirects=True) self.db.session.commit() c1_actual = CoprsLogic.get(username, coprname).one() # ACR enabled assert c1_actual.auto_createrepo # added action assert len(ActionsLogic.get_many().all()) > 0 action = ActionsLogic.get_many( action_type=ActionTypeEnum("createrepo")).one() data_dict = json.loads(action.data) assert data_dict["username"] == username assert data_dict["projectname"] == coprname
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_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_re_enable_auto_createrepo_produce_action( self, f_users, f_coprs, f_mock_chroots, f_db): self.db.session.add_all( [self.u1, self.c1, self.mc1, self.mc2, self.mc3]) username = self.u1.name coprname = self.c1.name copr_id = self.c1.id chroot = self.mc1.name # 1.ensure ACR enabled self.db.session.commit() c1_actual = CoprsLogic.get(self.u1.name, self.c1.name).one() assert c1_actual.auto_createrepo # 1. disabling ACR self.test_client.post( "/coprs/{0}/{1}/update/".format(username, coprname), data={"name": coprname, chroot: "y", "id": copr_id, "disable_createrepo": True}, follow_redirects=True ) self.db.session.commit() # check current status c1_actual = CoprsLogic.get(username, coprname).one() assert not c1_actual.auto_createrepo # no actions issued before assert len(ActionsLogic.get_many().all()) == 0 # 2. enabling ACR self.test_client.post( "/coprs/{0}/{1}/update/".format(username, coprname), data={"name": coprname, chroot: "y", "id": copr_id, "disable_createrepo": "false"}, follow_redirects=True ) self.db.session.commit() c1_actual = CoprsLogic.get(username, coprname).one() # ACR enabled assert c1_actual.auto_createrepo # added action assert len(ActionsLogic.get_many().all()) > 0 action = ActionsLogic.get_many(action_type=ActionTypeEnum("createrepo")).one() data_dict = json.loads(action.data) assert data_dict["username"] == username assert data_dict["projectname"] == coprname
def test_fork_copr_sends_actions(self, mc_flask_g, f_users, f_coprs, f_mock_chroots, f_builds, f_db): mc_flask_g.user.name = self.u2.name fc1, created = ComplexLogic.fork_copr(self.c1, self.u2, u"dstname") self.db.session.commit() actions = ActionsLogic.get_many(ActionTypeEnum("gen_gpg_key")).all() assert len(actions) == 1 data = json.loads(actions[0].data) assert data["username"] == self.u2.name assert data["projectname"] == "dstname" actions = ActionsLogic.get_many(ActionTypeEnum("fork")).all() assert len(actions) == 1 data = json.loads(actions[0].data) assert data["user"] == self.u2.name assert data["copr"] == "dstname" last_build, forked_build = self.c1.packages[0].builds[1], fc1.builds[0] assert data["builds_map"] == {str(forked_build.id): str(last_build.result_dir_name)}
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_copr_logic_add_sends_create_gpg_key_action(self, f_users, f_mock_chroots, f_db): name = u"project_1" selected_chroots = [self.mc1.name] CoprsLogic.add(self.u1, name, selected_chroots) self.db.session.commit() actions = ActionsLogic.get_many(ActionTypeEnum("gen_gpg_key")).all() assert len(actions) == 1 data = json.loads(actions[0].data) assert data["username"] == self.u1.name assert data["projectname"] == name
def test_fork_copr_sends_actions(self, f_users, f_coprs, f_mock_chroots, f_builds, f_db): with app.app_context(): with mock.patch('flask.g') as mc_flask_g: mc_flask_g.user.name = self.u2.name fc1, created = ComplexLogic.fork_copr(self.c1, self.u2, u"dstname") self.db.session.commit() actions = ActionsLogic.get_many(ActionTypeEnum("fork")).all() assert len(actions) == 1 data = json.loads(actions[0].data) assert data["user"] == self.u2.name assert data["copr"] == "dstname" assert data["builds_map"] == {'srpm-builds': {'bar': '00000005'},'fedora-18-x86_64': {'bar': '00000005-hello-world'}}
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_fork_copr_sends_actions(self, mc_flask_g, f_users, f_coprs, f_mock_chroots, f_builds, f_db): mc_flask_g.user.name = self.u2.name fc1, created = ComplexLogic.fork_copr(self.c1, self.u2, u"dstname") self.db.session.commit() actions = ActionsLogic.get_many(ActionTypeEnum("gen_gpg_key")).all() assert len(actions) == 1 data = json.loads(actions[0].data) assert data["username"] == self.u2.name assert data["projectname"] == "dstname" actions = ActionsLogic.get_many(ActionTypeEnum("fork")).all() assert len(actions) == 1 data = json.loads(actions[0].data) assert data["user"] == self.u2.name assert data["copr"] == "dstname" last_build, forked_build = self.c1.packages[0].builds[1], fc1.builds[0] assert data["builds_map"] == { str(forked_build.id): str(last_build.result_dir_name) }
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 test_fork_copr_projects_with_more_builds(self, mc_flask_g, f_users, f_fork_prepare, f_db): mc_flask_g.user.name = self.u2.name fc2, created = ComplexLogic.fork_copr(self.c2, self.u2, u"dstname") self.db.session.commit() actions = ActionsLogic.get_many(ActionTypeEnum("fork")).all() assert len(actions) == 1 data = json.loads(actions[0].data) assert data["user"] == self.u2.name assert data["copr"] == "dstname" assert data["builds_map"] == { 'srpm-builds': {'00000008-whatsupthere-world': '00000012', '00000006-hello-world': '00000013', '00000010-new-package': '00000014', '00000011-new-package': '00000015'}, 'fedora-17-x86_64': {'8-whatsupthere-world': '00000012-whatsupthere-world', '6-hello-world': '00000013-hello-world', '10-new-package': '00000014-new-package'}, 'fedora-17-i386': {'8-whatsupthere-world': '00000012-whatsupthere-world', '6-hello-world': '00000013-hello-world', '11-new-package': '00000015-new-package'}}