Passed
Push — master ( 55f662...e18d69 )
by Humberto
02:50 queued 11s
created

build.tests.unit.test_match   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 48
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 4
eloc 38
dl 0
loc 48
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A TestMatch.test_all_fields() 0 7 3
A TestMatch.test_from_of_match() 0 14 1
1
"""Test Match abstraction for v0x01 and v0x04."""
2
from unittest import TestCase
3
from unittest.mock import MagicMock, patch, PropertyMock
4
5
from napps.kytos.of_core.v0x01.flow import Match as Match01
6
from napps.kytos.of_core.v0x04.flow import Match as Match04
7
8
9
class TestMatch(TestCase):
10
    """Tests for the Match class."""
11
12
    EXPECTED = {
13
        'in_port': 1,
14
        'dl_src': '11:22:33:44:55:66',
15
        'dl_dst': 'aa:bb:cc:dd:ee:ff',
16
        'dl_vlan': 2,
17
        'dl_vlan_pcp': 3,
18
        'dl_type': 4,
19
        'nw_proto': 5,
20
        'nw_src': '1.2.3.4/32',
21
        'nw_dst': '5.6.7.0/24',
22
        'tp_src': 6,
23
        'tp_dst': 7,
24
    }
25
26
    def test_all_fields(self):
27
        """Test all match fields from and to dict."""
28
        for match_class in Match01, Match04:
29
            with self.subTest(match_class=match_class):
30
                match = match_class.from_dict(self.EXPECTED)
31
                actual = match.as_dict()
32
                self.assertDictEqual(self.EXPECTED, actual)
33
34
    @patch('napps.kytos.of_core.v0x04.flow.MatchFieldFactory')
35
    def test_from_of_match(self, mock_factory):
36
        """Test from_of_match."""
37
        mock_match = MagicMock()
38
        mock_field = MagicMock()
39
        mock_tlv = MagicMock()
40
        mock_field.name = 'A'
41
        mock_field.value = 42
42
        mock_factory.from_of_tlv.return_value = mock_field
43
        type(mock_match).oxm_match_fields = (PropertyMock(
44
                                             return_value=[[mock_tlv]]))
45
        response = Match04.from_of_match(mock_match)
46
        self.assertEqual(mock_factory.from_of_tlv.call_count, 1)
47
        self.assertIsInstance(response, Match04)
48