obj_test.py
1 """Tests for letsencrypt_apache.obj.""" 2 import unittest 3 4 5 class VirtualHostTest(unittest.TestCase): 6 """Test the VirtualHost class.""" 7 8 def setUp(self): 9 from letsencrypt_apache.obj import Addr 10 from letsencrypt_apache.obj import VirtualHost 11 12 self.addr1 = Addr.fromstring("127.0.0.1") 13 self.addr2 = Addr.fromstring("127.0.0.1:443") 14 self.addr_default = Addr.fromstring("_default_:443") 15 16 self.vhost1 = VirtualHost( 17 "filep", "vh_path", set([self.addr1]), False, False, "localhost") 18 19 self.vhost1b = VirtualHost( 20 "filep", "vh_path", set([self.addr1]), False, False, "localhost") 21 22 self.vhost2 = VirtualHost( 23 "fp", "vhp", set([self.addr2]), False, False, "localhost") 24 25 def test_eq(self): 26 self.assertTrue(self.vhost1b == self.vhost1) 27 self.assertFalse(self.vhost1 == self.vhost2) 28 self.assertEqual(str(self.vhost1b), str(self.vhost1)) 29 self.assertFalse(self.vhost1b == 1234) 30 31 def test_ne(self): 32 self.assertTrue(self.vhost1 != self.vhost2) 33 self.assertFalse(self.vhost1 != self.vhost1b) 34 35 def test_conflicts(self): 36 from letsencrypt_apache.obj import Addr 37 from letsencrypt_apache.obj import VirtualHost 38 39 complex_vh = VirtualHost( 40 "fp", "vhp", 41 set([Addr.fromstring("*:443"), Addr.fromstring("1.2.3.4:443")]), 42 False, False) 43 self.assertTrue(complex_vh.conflicts([self.addr1])) 44 self.assertTrue(complex_vh.conflicts([self.addr2])) 45 self.assertFalse(complex_vh.conflicts([self.addr_default])) 46 47 self.assertTrue(self.vhost1.conflicts([self.addr2])) 48 self.assertFalse(self.vhost1.conflicts([self.addr_default])) 49 50 self.assertFalse(self.vhost2.conflicts([self.addr1, self.addr_default])) 51 52 def test_same_server(self): 53 from letsencrypt_apache.obj import VirtualHost 54 no_name1 = VirtualHost( 55 "fp", "vhp", set([self.addr1]), False, False, None) 56 no_name2 = VirtualHost( 57 "fp", "vhp", set([self.addr2]), False, False, None) 58 no_name3 = VirtualHost( 59 "fp", "vhp", set([self.addr_default]), 60 False, False, None) 61 no_name4 = VirtualHost( 62 "fp", "vhp", set([self.addr2, self.addr_default]), 63 False, False, None) 64 65 self.assertTrue(self.vhost1.same_server(self.vhost2)) 66 self.assertTrue(no_name1.same_server(no_name2)) 67 68 self.assertFalse(self.vhost1.same_server(no_name1)) 69 self.assertFalse(no_name1.same_server(no_name3)) 70 self.assertFalse(no_name1.same_server(no_name4)) 71 72 73 class AddrTest(unittest.TestCase): 74 """Test obj.Addr.""" 75 def setUp(self): 76 from letsencrypt_apache.obj import Addr 77 self.addr = Addr.fromstring("*:443") 78 79 self.addr1 = Addr.fromstring("127.0.0.1") 80 self.addr2 = Addr.fromstring("127.0.0.1:*") 81 82 self.addr_defined = Addr.fromstring("127.0.0.1:443") 83 self.addr_default = Addr.fromstring("_default_:443") 84 85 def test_wildcard(self): 86 self.assertFalse(self.addr.is_wildcard()) 87 self.assertTrue(self.addr1.is_wildcard()) 88 self.assertTrue(self.addr2.is_wildcard()) 89 90 def test_get_sni_addr(self): 91 from letsencrypt_apache.obj import Addr 92 self.assertEqual( 93 self.addr.get_sni_addr("443"), Addr.fromstring("*:443")) 94 self.assertEqual( 95 self.addr.get_sni_addr("225"), Addr.fromstring("*:225")) 96 self.assertEqual( 97 self.addr1.get_sni_addr("443"), Addr.fromstring("127.0.0.1")) 98 99 def test_conflicts(self): 100 # Note: Defined IP is more important than defined port in match 101 self.assertTrue(self.addr.conflicts(self.addr1)) 102 self.assertTrue(self.addr.conflicts(self.addr2)) 103 self.assertTrue(self.addr.conflicts(self.addr_defined)) 104 self.assertFalse(self.addr.conflicts(self.addr_default)) 105 106 self.assertFalse(self.addr1.conflicts(self.addr)) 107 self.assertTrue(self.addr1.conflicts(self.addr_defined)) 108 self.assertFalse(self.addr1.conflicts(self.addr_default)) 109 110 self.assertFalse(self.addr_defined.conflicts(self.addr1)) 111 self.assertFalse(self.addr_defined.conflicts(self.addr2)) 112 self.assertFalse(self.addr_defined.conflicts(self.addr)) 113 self.assertFalse(self.addr_defined.conflicts(self.addr_default)) 114 115 self.assertTrue(self.addr_default.conflicts(self.addr)) 116 self.assertTrue(self.addr_default.conflicts(self.addr1)) 117 self.assertTrue(self.addr_default.conflicts(self.addr_defined)) 118 119 # Self test 120 self.assertTrue(self.addr.conflicts(self.addr)) 121 self.assertTrue(self.addr1.conflicts(self.addr1)) 122 # This is a tricky one... 123 self.assertTrue(self.addr1.conflicts(self.addr2)) 124 125 def test_equal(self): 126 self.assertTrue(self.addr1 == self.addr2) 127 self.assertFalse(self.addr == self.addr1) 128 self.assertFalse(self.addr == 123) 129 130 def test_not_equal(self): 131 self.assertFalse(self.addr1 != self.addr2) 132 self.assertTrue(self.addr != self.addr1) 133 134 135 if __name__ == "__main__": 136 unittest.main() # pragma: no cover