File: obj_test.py

package info (click to toggle)
python-certbot-apache 4.0.0-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 1,468 kB
  • sloc: python: 7,517; sh: 44; makefile: 10
file content (140 lines) | stat: -rw-r--r-- 5,165 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
"""Tests for certbot_apache._internal.obj."""
import sys
import unittest

import pytest


class VirtualHostTest(unittest.TestCase):
    """Test the VirtualHost class."""

    def setUp(self):
        from certbot_apache._internal.obj import Addr
        from certbot_apache._internal.obj import VirtualHost

        self.addr1 = Addr.fromstring("127.0.0.1")
        self.addr2 = Addr.fromstring("127.0.0.1:443")
        self.addr_default = Addr.fromstring("_default_:443")

        self.vhost1 = VirtualHost(
            "filep", "vh_path", {self.addr1}, False, False, "localhost")

        self.vhost1b = VirtualHost(
            "filep", "vh_path", {self.addr1}, False, False, "localhost")

        self.vhost2 = VirtualHost(
            "fp", "vhp", {self.addr2}, False, False, "localhost")

    def test_repr(self):
        assert repr(self.addr2) == \
            "certbot_apache._internal.obj.Addr(('127.0.0.1', '443'))"

    def test_eq(self):
        assert self.vhost1b == self.vhost1
        assert self.vhost1 != self.vhost2
        assert str(self.vhost1b) == str(self.vhost1)
        assert self.vhost1b != 1234

    def test_ne(self):
        assert self.vhost1 != self.vhost2
        assert self.vhost1 == self.vhost1b

    def test_conflicts(self):
        from certbot_apache._internal.obj import Addr
        from certbot_apache._internal.obj import VirtualHost

        complex_vh = VirtualHost(
            "fp", "vhp",
            {Addr.fromstring("*:443"), Addr.fromstring("1.2.3.4:443")},
            False, False)
        assert complex_vh.conflicts([self.addr1]) is True
        assert complex_vh.conflicts([self.addr2]) is True
        assert complex_vh.conflicts([self.addr_default]) is False

        assert self.vhost1.conflicts([self.addr2]) is True
        assert self.vhost1.conflicts([self.addr_default]) is False

        assert self.vhost2.conflicts([self.addr1, self.addr_default]) is False

    def test_same_server(self):
        from certbot_apache._internal.obj import VirtualHost
        no_name1 = VirtualHost(
            "fp", "vhp", {self.addr1}, False, False, None)
        no_name2 = VirtualHost(
            "fp", "vhp", {self.addr2}, False, False, None)
        no_name3 = VirtualHost(
            "fp", "vhp", {self.addr_default},
            False, False, None)
        no_name4 = VirtualHost(
            "fp", "vhp", {self.addr2, self.addr_default},
            False, False, None)

        assert self.vhost1.same_server(self.vhost2) is True
        assert no_name1.same_server(no_name2) is True

        assert self.vhost1.same_server(no_name1) is False
        assert no_name1.same_server(no_name3) is False
        assert no_name1.same_server(no_name4) is False


class AddrTest(unittest.TestCase):
    """Test obj.Addr."""
    def setUp(self):
        from certbot_apache._internal.obj import Addr
        self.addr = Addr.fromstring("*:443")

        self.addr1 = Addr.fromstring("127.0.0.1")
        self.addr2 = Addr.fromstring("127.0.0.1:*")

        self.addr_defined = Addr.fromstring("127.0.0.1:443")
        self.addr_default = Addr.fromstring("_default_:443")

    def test_wildcard(self):
        assert self.addr.is_wildcard() is False
        assert self.addr1.is_wildcard() is True
        assert self.addr2.is_wildcard() is True

    def test_get_sni_addr(self):
        from certbot_apache._internal.obj import Addr
        assert self.addr.get_sni_addr("443") == Addr.fromstring("*:443")
        assert self.addr.get_sni_addr("225") == Addr.fromstring("*:225")
        assert self.addr1.get_sni_addr("443") == Addr.fromstring("127.0.0.1")

    def test_conflicts(self):
        # Note: Defined IP is more important than defined port in match
        assert self.addr.conflicts(self.addr1) is True
        assert self.addr.conflicts(self.addr2) is True
        assert self.addr.conflicts(self.addr_defined) is True
        assert self.addr.conflicts(self.addr_default) is False

        assert self.addr1.conflicts(self.addr) is False
        assert self.addr1.conflicts(self.addr_defined) is True
        assert self.addr1.conflicts(self.addr_default) is False

        assert self.addr_defined.conflicts(self.addr1) is False
        assert self.addr_defined.conflicts(self.addr2) is False
        assert self.addr_defined.conflicts(self.addr) is False
        assert self.addr_defined.conflicts(self.addr_default) is False

        assert self.addr_default.conflicts(self.addr) is True
        assert self.addr_default.conflicts(self.addr1) is True
        assert self.addr_default.conflicts(self.addr_defined) is True

        # Self test
        assert self.addr.conflicts(self.addr) is True
        assert self.addr1.conflicts(self.addr1) is True
        # This is a tricky one...
        assert self.addr1.conflicts(self.addr2) is True

    def test_equal(self):
        assert self.addr1 == self.addr2
        assert self.addr != self.addr1
        assert self.addr != 123

    def test_not_equal(self):
        assert self.addr1 == self.addr2
        assert self.addr != self.addr1


if __name__ == "__main__":
    sys.exit(pytest.main(sys.argv[1:] + [__file__]))  # pragma: no cover