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