/ letsencrypt-apache / letsencrypt_apache / tests / display_ops_test.py
display_ops_test.py
 1  """Test letsencrypt_apache.display_ops."""
 2  import sys
 3  import unittest
 4  
 5  import mock
 6  import zope.component
 7  
 8  from letsencrypt.display import util as display_util
 9  
10  from letsencrypt_apache import obj
11  
12  from letsencrypt_apache.tests import util
13  
14  
15  class SelectVhostTest(unittest.TestCase):
16      """Tests for letsencrypt_apache.display_ops.select_vhost."""
17  
18      def setUp(self):
19          zope.component.provideUtility(display_util.FileDisplay(sys.stdout))
20          self.base_dir = "/example_path"
21          self.vhosts = util.get_vh_truth(
22              self.base_dir, "debian_apache_2_4/two_vhost_80")
23  
24      @classmethod
25      def _call(cls, vhosts):
26          from letsencrypt_apache.display_ops import select_vhost
27          return select_vhost("example.com", vhosts)
28  
29      @mock.patch("letsencrypt_apache.display_ops.zope.component.getUtility")
30      def test_successful_choice(self, mock_util):
31          mock_util().menu.return_value = (display_util.OK, 3)
32          self.assertEqual(self.vhosts[3], self._call(self.vhosts))
33  
34      @mock.patch("letsencrypt_apache.display_ops.zope.component.getUtility")
35      def test_more_info_cancel(self, mock_util):
36          mock_util().menu.side_effect = [
37              (display_util.HELP, 1),
38              (display_util.HELP, 0),
39              (display_util.CANCEL, -1),
40          ]
41  
42          self.assertEqual(None, self._call(self.vhosts))
43          self.assertEqual(mock_util().notification.call_count, 2)
44  
45      def test_no_vhosts(self):
46          self.assertEqual(self._call([]), None)
47  
48      @mock.patch("letsencrypt_apache.display_ops.display_util")
49      @mock.patch("letsencrypt_apache.display_ops.zope.component.getUtility")
50      @mock.patch("letsencrypt_apache.display_ops.logger")
51      def test_small_display(self, mock_logger, mock_util, mock_display_util):
52          mock_display_util.WIDTH = 20
53          mock_util().menu.return_value = (display_util.OK, 0)
54          self._call(self.vhosts)
55  
56          self.assertEqual(mock_logger.debug.call_count, 1)
57  
58      @mock.patch("letsencrypt_apache.display_ops.zope.component.getUtility")
59      def test_multiple_names(self, mock_util):
60          mock_util().menu.return_value = (display_util.OK, 4)
61  
62          self.vhosts.append(
63              obj.VirtualHost(
64                  "path", "aug_path", set([obj.Addr.fromstring("*:80")]),
65                  False, False,
66                  "wildcard.com", set(["*.wildcard.com"])))
67  
68          self.assertEqual(self.vhosts[4], self._call(self.vhosts))
69  
70  
71  if __name__ == "__main__":
72      unittest.main()  # pragma: no cover