Ejemplo n.º 1
0
    def test_method_update_xml_element_empty_instance(self):
        """
        Tests the update_xml_element method
        """

        version = "2.0.0.1"
        xccdf_version = Version(version=version)

        self.assertFalse(hasattr(xccdf_version, "xml_element"), "XML element is defined")

        xccdf_version.update_xml_element()

        self.assertTrue(hasattr(xccdf_version, "xml_element"), "XML element is not defined")
Ejemplo n.º 2
0
    def test_init_empty_instance(self):
        """
        Tests the class constructor with an empty instance
        """

        error_msg = 'either xml_element or version are required'

        if sys.version_info[0] >= 3 and sys.version_info[1] >= 2:
            with self.assertRaisesRegex(ValueError, error_msg):
                Version()
        else:
            with self.assertRaisesRegexp(ValueError, error_msg):
                Version()
Ejemplo n.º 3
0
    def test_method_update_xml_element_empty_instance(self):
        """
        Tests the update_xml_element method
        """

        version = '2.0.0.1'
        xccdf_version = Version(version=version)

        self.assertFalse(hasattr(xccdf_version, 'xml_element'),
                         'XML element is defined')

        xccdf_version.update_xml_element()

        self.assertTrue(hasattr(xccdf_version, 'xml_element'),
                        'XML element is not defined')
Ejemplo n.º 4
0
    def load_children(self):
        """
        Load the subelements from the xml_element in its correspondent classes.

        :returns: List of child objects.
        :rtype: list
        :raises CardinalityException: If there is more than one Version child.
        :raises CardinalityException: If there is no Group and no Rule child.
        """

        # Containers
        children = list()
        statuses = list()
        version = None
        titles = list()
        descriptions = list()
        platforms = list()
        groups = list()
        rules = list()

        # Element load
        for element in self.xml_element:
            uri, tag = Element.get_namespace_and_tag(element.tag)
            if tag == 'version':
                if version is None:
                    version = Version(element)
                else:
                    error_msg = 'version element found more than once'
                    raise CardinalityException(error_msg)
            elif tag == 'status':
                statuses.append(Status(element))
            elif tag == 'title':
                titles.append(Title(element))
            elif tag == 'description':
                descriptions.append(Description(element))
            elif tag == 'platform':
                platforms.append(Platform(element))
            elif tag == 'Group':
                groups.append(Group(element))
            elif tag == 'Rule':
                rules.append(Rule(element))

        # Element validation
        if len(groups) <= 0 and len(rules) <= 0:
            error_msg = 'a group must contain at least a group or a rule'
            raise CardinalityException(error_msg)

        # List construction
        children.extend(statuses)
        if version is not None:
            children.append(version)
        children.extend(titles)
        children.extend(descriptions)
        children.extend(platforms)
        children.extend(groups)
        children.extend(rules)

        return children
Ejemplo n.º 5
0
    def create_version_object(self, object_type='ok'):
        """
        Helper method to create the Version object

        :returns: Version object
        :rtype: xccdf.models.version.Version
        """

        xml_element = self.load_example_element(object_type)

        return Version(xml_element)
Ejemplo n.º 6
0
    def test_print_object_empty_instance(self):
        """
        Tests the string representation of an Version object
        from an empty instance
        """

        version = '1.0.0'
        xccdf_version = Version(version=version)

        string_value = 'version {version}'.format(version=version)
        self.assertEqual(str(xccdf_version), string_value,
                         'String representation does not match')
Ejemplo n.º 7
0
    def test_init_no_xml_element(self):
        """
        Tests the class constructor from an empty instance
        """
        version = '1.0.0'
        xccdf_version = Version(version=version)

        self.assertEqual(xccdf_version.name, 'version',
                         'version tag name does not match')

        self.assertEqual(xccdf_version.text, version, 'version does not match')

        self.assertFalse(hasattr(xccdf_version, 'xml_element'))
Ejemplo n.º 8
0
    def test_method_to_xml_string(self):
        """
        Tests the to_xml_string method
        """

        xccdf_version = self.create_version_object('ok')

        xml_content = xccdf_version.to_xml_string()

        new_xccdf_version = Version(
            etree.fromstring(xml_content.encode('utf-8')))

        self.assertEqual(xccdf_version.text, new_xccdf_version.text,
                         'Version text does not match')