Completed
Push — master ( 8082e9...516ce7 )
by
unknown
17s queued 13s
created

tests.test_port_convert   A

Complexity

Total Complexity 16

Size/Duplication

Total Lines 136
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 88
dl 0
loc 136
rs 10
c 0
b 0
f 0
wmc 16

10 Methods

Rating   Name   Duplication   Size   Complexity  
A ConvertPortTestCase.test_udp_ports() 0 8 2
A ConvertPortTestCase.test_compress_list() 0 5 1
A ConvertPortTestCase.test_both_ports() 0 11 2
A ConvertPortTestCase.test_get_spec_type_ports() 0 10 1
A ConvertPortTestCase.test_empty_port() 0 5 1
A ConvertPortTestCase.test_invalid_char_port() 0 5 1
A ConvertPortTestCase.test_not_spec_type_ports() 0 8 2
A ConvertPortTestCase.test_tcp_ports() 0 10 2
A ConvertPortTestCase.test_malformed_port_string() 0 21 1
A ConvertPortTestCase.test_both_ports_udp_first() 0 11 3
1
# Copyright (C) 2018 Greenbone Networks GmbH
2
#
3
# SPDX-License-Identifier: GPL-2.0-or-later
4
#
5
# This program is free software; you can redistribute it and/or
6
# modify it under the terms of the GNU General Public License
7
# as published by the Free Software Foundation; either version 2
8
# of the License, or (at your option) any later version.
9
#
10
# This program is distributed in the hope that it will be useful,
11
# but WITHOUT ANY WARRANTY; without even the implied warranty of
12
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
# GNU General Public License for more details.
14
#
15
# You should have received a copy of the GNU General Public License
16
# along with this program; if not, write to the Free Software
17
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18
19
""" Test suites for Port manipulation.
20
"""
21
22
from __future__ import print_function
23
24
import unittest
25
26
from ospd.misc import ports_as_list
27
from ospd.misc import get_udp_port_list
28
from ospd.misc import get_tcp_port_list
29
from ospd.misc import port_list_compress
30
31
32
class ConvertPortTestCase(unittest.TestCase):
33
    def test_tcp_ports(self):
34
        """ Test only tcp ports."""
35
        tports, uports = ports_as_list('T:1-10,30,31')
36
        self.assertFalse(tports is None)
37
        self.assertEqual(len(uports), 0)
38
        self.assertEqual(len(tports), 12)
39
        for i in range(1, 10):
40
            self.assertTrue(i in tports)
41
        self.assertTrue(30 in tports)
42
        self.assertTrue(31 in tports)
43
44
    def test_udp_ports(self):
45
        """ Test only udp ports."""
46
        tports, uports = ports_as_list('U:1-10')
47
        self.assertFalse(uports is None)
48
        self.assertEqual(len(tports), 0)
49
        self.assertEqual(len(uports), 10)
50
        for i in range(1, 10):
51
            self.assertTrue(i in uports)
52
53
    def test_both_ports(self):
54
        """ Test tcp und udp ports."""
55
        tports, uports = ports_as_list('T:1-10, U:1-10')
56
        self.assertFalse(tports is None)
57
        self.assertFalse(uports is None)
58
        self.assertEqual(len(tports), 10)
59
        self.assertEqual(len(uports), 10)
60
        for i in range(1, 10):
61
            self.assertTrue(i in tports)
62
            self.assertTrue(i in uports)
63
        self.assertFalse(0 in uports)
64
65
    def test_both_ports_udp_first(self):
66
        """ Test tcp und udp ports, but udp listed first."""
67
        tports, uports = ports_as_list('U:20-30, T:1-10')
68
        self.assertFalse(tports is None)
69
        self.assertFalse(uports is None)
70
        self.assertEqual(len(tports), 10)
71
        self.assertEqual(len(uports), 11)
72
        for i in range(1, 10):
73
            self.assertTrue(i in tports)
74
        for i in range(20, 30):
75
            self.assertTrue(i in uports)
76
77
    def test_not_spec_type_ports(self):
78
        """ Test port list without specific type. """
79
        tports, uports = ports_as_list('51-60')
80
        self.assertFalse(tports is None)
81
        self.assertEqual(len(uports), 0)
82
        self.assertEqual(len(tports), 10)
83
        for i in range(51, 60):
84
            self.assertTrue(i in tports)
85
86
    def test_invalid_char_port(self):
87
        """ Test list with a false char. """
88
        tports, uports = ports_as_list('R:51-60')
89
        self.assertTrue(tports is None)
90
        self.assertTrue(uports is None)
91
92
    def test_empty_port(self):
93
        """ Test an empty port list. """
94
        tports, uports = ports_as_list('')
95
        self.assertTrue(tports is None)
96
        self.assertTrue(uports is None)
97
98
    def test_get_spec_type_ports(self):
99
        """ Test get specific type ports."""
100
        uports = get_udp_port_list('U:9392,9393T:22')
101
        self.assertEqual(len(uports), 2)
102
        self.assertTrue(9392 in uports)
103
        tports = get_tcp_port_list('U:9392T:80,22,443')
104
        self.assertEqual(len(tports), 3)
105
        self.assertTrue(22 in tports)
106
        self.assertTrue(80 in tports)
107
        self.assertTrue(443 in tports)
108
109
    def test_malformed_port_string(self):
110
        """ Test different malformed port list. """
111
        tports, uports = ports_as_list('TU:1-2')
112
        self.assertTrue(tports is None)
113
        self.assertTrue(uports is None)
114
115
        tports, uports = ports_as_list('U1-2')
116
        self.assertTrue(tports is None)
117
        self.assertTrue(uports is None)
118
119
        tports, uports = ports_as_list('U:1-2t:22')
120
        self.assertTrue(tports is None)
121
        self.assertTrue(uports is None)
122
123
        tports, uports = ports_as_list('U1-2,T22')
124
        self.assertTrue(tports is None)
125
        self.assertTrue(uports is None)
126
127
        tports, uports = ports_as_list('U:1-2,U:22')
128
        self.assertTrue(tports is None)
129
        self.assertTrue(uports is None)
130
131
    def test_compress_list(self):
132
        """ Test different malformed port list. """
133
        port_list = [1, 2, 3, 4, 5, 8, 9, 10, 22, 24, 29, 30]
134
        string = port_list_compress(port_list)
135
        self.assertEqual(string, '1-5,8-10,22,24,29-30')
136