Ejemplo n.º 1
0
    def test_get_diff_when_root_have_no_children_and_added_candidate(self):
        running = etree.fromstring('<vr><vrId>1</vrId></vr>')
        candidate = etree.fromstring('<vr><vrId>1</vrId><vrId>2</vrId></vr>')

        block = Block(running, candidate)
        expected = b'<vr><same><vrId>1</vrId></same><added><vrId>2</vrId></added></vr>'
        actual = etree.tostring(block.get_diff())
        self.assertEqual(expected, actual)
Ejemplo n.º 2
0
    def test_get_diff_when_elements_same(self):
        running = self._get_element('vr', 'vrId', '1')
        candidate = self._get_element('vr', 'vrId', '1')

        block = Block(running, candidate)

        self.assertEqual(b'<vr><same><vrId>1</vrId></same></vr>',
                         etree.tostring(block.get_diff()))
Ejemplo n.º 3
0
    def test_get_diff_when_running_is_none(self):
        candidate = self._get_element('vr', 'Interface', 'Interface text')

        block = Block(None, candidate)

        added_element = etree.Element('added')
        added_element.append(candidate)
        expected = etree.tostring(added_element)
        self.assertEqual(expected, etree.tostring(block.get_diff()))
Ejemplo n.º 4
0
    def test_get_diff_when_candidate_is_none(self):
        running = self._get_element('vr', 'Interface', 'Interface text')

        block = Block(running, None)

        added_element = etree.Element('removed')
        added_element.append(running)
        expected = etree.tostring(added_element)
        self.assertEqual(expected, etree.tostring(block.get_diff()))
Ejemplo n.º 5
0
    def test_get_diff_when_candidate_has_deep_new_elements(self):
        running = etree.fromstring('<vr><vrId><mac>1</mac></vrId></vr>')
        candidate = etree.fromstring(
            '<vr><vrId><mac>1</mac></vrId><vrId><mac>3</mac></vrId></vr>')

        block = Block(running, candidate)
        expected = b'<vr><same><vrId><mac>1</mac></vrId></same><added><vrId><mac>3</mac></vrId></added></vr>'
        actual = etree.tostring(block.get_diff())
        self.assertEqual(expected, actual)
Ejemplo n.º 6
0
    def test_get_diff_when_root_have_no_children_and_new_ele_in_candidate(
            self):
        running = etree.fromstring('<vr><vrId>1</vrId></vr>')
        candidate = etree.fromstring('<vr><vrId>1</vrId><vrId>2</vrId></vr>')

        block = Block(running, candidate)
        self.assertEqual(
            b'<vr><same><vrId>1</vrId></same><added><vrId>2</vrId></added></vr>',
            etree.tostring(block.get_diff()))
Ejemplo n.º 7
0
    def test_get_diff_when_elements_moved(self):
        running = etree.fromstring('<vr><vrId>1</vrId><vrId>2</vrId></vr>')
        candidate = etree.fromstring('<vr><vrId>2</vrId><vrId>1</vrId></vr>')

        block = Block(running, candidate)

        self.assertEqual(
            b'<vr><moved><vrId>1</vrId></moved><moved><vrId>2</vrId></moved></vr>',
            etree.tostring(block.get_diff()))
Ejemplo n.º 8
0
    def test_get_diff_element_with_two_children_and_moved(self):
        running = etree.fromstring(
            '<a><b><n>r1</n><c>true</c></b><b><n>r2</n><c>true</c></b></a>')
        candidate = etree.fromstring(
            '<a><b><n>r2</n><c>true</c></b><b><n>r1</n><c>true</c></b></a>')

        block = Block(running, candidate)
        expected = b'<a><moved><b><n>r1</n><c>true</c></b></moved><moved><b><n>r2</n><c>true</c></b></moved></a>'
        actual = etree.tostring(block.get_diff())
        self.assertEqual(expected, actual)
Ejemplo n.º 9
0
    def test_get_diff_when_text_changed(self):
        running = etree.fromstring(
            '<logging_cli><logging>false</logging></logging_cli>')
        candidate = etree.fromstring(
            '<logging_cli><logging>true</logging></logging_cli>')

        block = Block(running, candidate)
        expected = (b'<logging_cli><removed><logging>false</logging></removed>'
                    b'<added><logging>true</logging></added></logging_cli>')
        actual = etree.tostring(block.get_diff())
        self.assertEqual(expected, actual)
Ejemplo n.º 10
0
    def test_get_diff_when_root_have_no_children(self):
        running = etree.fromstring(
            '<vr><vrId><name>1</name></vrId><vrId><name>3</name></vrId></vr>')
        candidate = etree.fromstring(
            '<vr><vrId><name>2</name></vrId><vrId><name>4</name></vrId></vr>')

        block = Block(running, candidate)

        expected = (
            b'<vr><vrId><removed><name>1</name></removed><added><name>2</name></added></vrId>'
            b'<vrId><removed><name>3</name></removed><added><name>4</name></added></vrId></vr>'
        )
        actual = etree.tostring(block.get_diff())
        self.assertEqual(expected, actual)
Ejemplo n.º 11
0
    def test_get_diff_with_multiple_children_changed(self):
        running_string = """
        <vr>
            <interface>
                <ifName>lo.management</ifName>
                <vrfName>management</vrfName>
                <ipAddr>127.0.0.1/9</ipAddr>
                <mtu>1501</mtu>
                <ipv6Addr>
                    <ipv6Addr>::1/128</ipv6Addr>
                </ipv6Addr>
            </interface>
        </vr>
        """
        candidate_string = """
        <vr>
            <interface>
                <ifName>lo.management</ifName>
                <vrfName>management</vrfName>
                <ipAddr>127.0.0.1/10</ipAddr>
                <mtu>1500</mtu>
                <ipv6Addr>
                    <ipv6Addr>::1/129</ipv6Addr>
                </ipv6Addr>
            </interface>
        </vr>
        """
        running = etree.fromstring(running_string)
        candidate = etree.fromstring(candidate_string)

        block = Block(running, candidate)
        expected = (b'<vr>'
                    b'<interface>'
                    b'<ipv6Addr>'
                    b'<removed><ipv6Addr>::1/128</ipv6Addr></removed>'
                    b'<added><ipv6Addr>::1/129</ipv6Addr></added>'
                    b'</ipv6Addr>'
                    b'<same><ifName>lo.management</ifName></same>'
                    b'<same><vrfName>management</vrfName></same>'
                    b'<removed><ipAddr>127.0.0.1/9</ipAddr></removed>'
                    b'<added><ipAddr>127.0.0.1/10</ipAddr></added>'
                    b'<removed><mtu>1501</mtu></removed>'
                    b'<added><mtu>1500</mtu></added>'
                    b'</interface>'
                    b'</vr>')

        actual = etree.tostring(block.get_diff())
        self.assertEqual(expected, actual)
Ejemplo n.º 12
0
    def test_get_diff_when_text_changed_but_have_other_children(self):
        running = etree.fromstring(
            '<nsmsnmp><enabled>false</enabled><vrfName>management</vrfName></nsmsnmp>'
        )
        candidate = etree.fromstring(
            '<nsmsnmp><enabled>true</enabled><vrfName>management</vrfName></nsmsnmp>'
        )

        block = Block(running, candidate)
        expected = (b'<nsmsnmp>'
                    b'<same><vrfName>management</vrfName></same>'
                    b'<removed><enabled>false</enabled></removed>'
                    b'<added><enabled>true</enabled></added>'
                    b'</nsmsnmp>')
        actual = etree.tostring(block.get_diff())
        self.assertEqual(expected, actual)
Ejemplo n.º 13
0
    def test_get_diff_with_deep_children_and_formatted(self):
        running_string = """
        <vr>
            <vrId>0</vrId>
            <vrId>1</vrId>
            <vrId>2</vrId>
            <vrf>
                <vrfName>FOO_THREE</vrfName>
                <macVrf>true</macVrf>
            </vrf>
            <vrf>
                <vrfName>FOO_TWO</vrfName>
                <macVrf>true</macVrf>
            </vrf>
        </vr>"""
        candidate_string = """
        <vr>
            <vrId>0</vrId>
            <vrId>1</vrId>
            <vrf>
                <vrfName>FOO_TWO</vrfName>
                <macVrf>true</macVrf>
            </vrf>
            <vrf>
                <vrfName>FOO_THREE</vrfName>
                <macVrf>true</macVrf>
            </vrf>
        </vr>"""
        running = etree.fromstring(running_string)
        candidate = etree.fromstring(candidate_string)
        block = Block(running, candidate)
        actual = block.get_diff()

        self.assertEqual(actual.tag, 'vr')

        actual_as_string = etree.tostring(actual).decode('utf-8')
        self.assertTrue('<same><vrId>0</vrId></same>' in actual_as_string)
        self.assertTrue('<same><vrId>1</vrId></same>' in actual_as_string)
        self.assertTrue(
            '<moved><vrf><vrfName>FOO_THREE</vrfName><macVrf>true</macVrf></vrf></moved>'
            in actual_as_string)
        self.assertTrue(
            '<moved><vrf><vrfName>FOO_TWO</vrfName><macVrf>true</macVrf></vrf></moved>'
            in actual_as_string)
        self.assertTrue(
            '<removed><vrId>2</vrId></removed>' in actual_as_string)