def test_revert_package_rules(proxy_getter, rule_data, ksdata_mock, storage_mock): rule_data.new_rule("package --add=firewalld --remove=telnet --add=iptables --add=vim") packages_data = PackagesSelectionData() packages_data.packages = ["vim"] dnf_payload_mock = PAYLOADS.get_proxy("/fake/payload/1") dnf_payload_mock.PackagesSelection = PackagesSelectionData.to_structure(packages_data) # run twice --> nothing should be different in the second run messages = rule_data.eval_rules(ksdata_mock, storage_mock) messages = rule_data.eval_rules(ksdata_mock, storage_mock) # one info message for each added/removed package assert len(messages) == 3 rule_data.revert_changes(ksdata_mock, storage_mock) # (only) added and excluded packages should have been removed from the # list assert dnf_payload_mock.PackagesSelection == \ PackagesSelectionData.to_structure(packages_data) # now do the same again # messages = rule_data.eval_rules(ksdata_mock, storage_mock) # one info message for each added/removed package assert len(messages) == 3 rule_data.revert_changes(ksdata_mock, storage_mock) # (only) added and excluded packages should have been removed from the # list assert dnf_payload_mock.PackagesSelection == \ PackagesSelectionData.to_structure(packages_data)
def test_evaluation_package_rules(proxy_getter, rule_data, ksdata_mock, storage_mock): rule_data.new_rule("package --add=firewalld --remove=telnet --add=vim") packages_data = PackagesSelectionData() packages_data.packages = ["vim"] dnf_payload_mock = PAYLOADS.get_proxy("/fake/payload/1") dnf_payload_mock.PackagesSelection = PackagesSelectionData.to_structure(packages_data) messages = rule_data.eval_rules(ksdata_mock, storage_mock) # one info message for each (really) added/removed package assert len(messages) == 2 assert all(message.type == common.MESSAGE_TYPE_INFO for message in messages) # all packages should appear in the messages not_seen = _quoted_keywords_not_seen_in_messages( {"firewalld", "telnet"}, messages, ) assert not not_seen packages_data = PackagesSelectionData() packages_data.packages = ["vim", "firewalld"] packages_data.excluded_packages = ["telnet"] assert dnf_payload_mock.PackagesSelection == \ PackagesSelectionData.to_structure(packages_data)
def PackagesSelection(self) -> Structure: """The packages selection. :return: a structure of the type PackagesSelectionData """ return PackagesSelectionData.to_structure( self.implementation.packages_selection)
def packages_selection_data_test(self): """Test the PackagesSelectionData structure.""" data = PackagesSelectionData.to_structure( PackagesSelectionData() ) self._check_dbus_property( "PackagesSelection", data )
def set_packages_data(data: PackagesSelectionData): """Set the DBus data with the packages configuration. :param data: a packages configuration """ payload_proxy = get_payload_proxy() if payload_proxy.Type != PAYLOAD_TYPE_DNF: log.debug("OSCAP addon: The payload doesn't support packages.") return payload_proxy.PackagesSelection = \ PackagesSelectionData.to_structure(data)
def set_dbus_defaults(): boss = BOSS.get_proxy() boss.GetModules.return_value = [ KDUMP.service_name ] kdump = KDUMP.get_proxy() kdump.KdumpEnabled = True user_interface = BOSS.get_proxy(USER_INTERFACE) user_interface.PasswordPolicies = {} network = NETWORK.get_proxy() network.Connected.return_value = True firewall = NETWORK.get_proxy(FIREWALL) firewall.EnabledServices = [] firewall.DisabledServices = [] firewall.EnabledPorts = [] firewall.Trusts = [] device_tree = STORAGE.get_proxy(DEVICE_TREE) device_tree.GetDeviceMountOptions.return_value = "defaults" device_tree.GetMountPoints.return_value = {} bootloader = STORAGE.get_proxy(BOOTLOADER) bootloader.IsPasswordSet = False users = USERS.get_proxy() users.IsRootPasswordSet = True users.IsRootPasswordCrypted = False users.RootPassword = "******" payloads = PAYLOADS.get_proxy() payloads.ActivePayload = "/fake/payload/1" dnf_payload = PAYLOADS.get_proxy("/fake/payload/1") dnf_payload.Type = PAYLOAD_TYPE_DNF packages_data = PackagesSelectionData() dnf_payload.PackagesSelection = PackagesSelectionData.to_structure(packages_data)
def test_evaluation_package_rules_report_only(proxy_getter, rule_data, ksdata_mock, storage_mock): rule_data.new_rule("package --add=firewalld --remove=telnet --add=iptables") messages = rule_data.eval_rules(ksdata_mock, storage_mock, report_only=True) # one info message for each added/removed package assert len(messages) == 3 assert all(message.type == common.MESSAGE_TYPE_INFO for message in messages) not_seen = _quoted_keywords_not_seen_in_messages( {"firewalld", "telnet", "iptables"}, messages, ) assert not not_seen # report_only --> no packages should be added or excluded dnf_payload_mock = PAYLOADS.get_proxy("/fake/payload/1") packages_data = PackagesSelectionData() assert dnf_payload_mock.PackagesSelection == \ PackagesSelectionData.to_structure(packages_data)
def set_packages_selection(self, data: PackagesSelectionData): """Set the DBus data with the packages selection.""" return self.proxy.SetPackagesSelection( PackagesSelectionData.to_structure(data) )