Hide keyboard shortcuts

Hot-keys on this page

r m x p   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

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

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

"""Tests for certbot.configuration.""" 

import os 

import unittest 

 

import mock 

 

from certbot import compat 

from certbot import constants 

from certbot import errors 

 

from certbot.tests import util as test_util 

 

class NamespaceConfigTest(test_util.ConfigTestCase): 

"""Tests for certbot.configuration.NamespaceConfig.""" 

 

def setUp(self): 

super(NamespaceConfigTest, self).setUp() 

self.config.foo = 'bar' 

self.config.server = 'https://acme-server.org:443/new' 

self.config.tls_sni_01_port = 1234 

self.config.http01_port = 4321 

 

def test_init_same_ports(self): 

self.config.namespace.tls_sni_01_port = 4321 

from certbot.configuration import NamespaceConfig 

self.assertRaises(errors.Error, NamespaceConfig, self.config.namespace) 

 

def test_proxy_getattr(self): 

self.assertEqual(self.config.foo, 'bar') 

self.assertEqual(self.config.work_dir, os.path.join(self.tempdir, 'work')) 

 

def test_server_path(self): 

self.assertEqual(['acme-server.org:443', 'new'], 

self.config.server_path.split(os.path.sep)) 

 

self.config.namespace.server = ('http://user:pass@acme.server:443' 

'/p/a/t/h;parameters?query#fragment') 

self.assertEqual(['user:pass@acme.server:443', 'p', 'a', 't', 'h'], 

self.config.server_path.split(os.path.sep)) 

 

@mock.patch('certbot.configuration.constants') 

def test_dynamic_dirs(self, mock_constants): 

mock_constants.ACCOUNTS_DIR = 'acc' 

mock_constants.BACKUP_DIR = 'backups' 

mock_constants.CSR_DIR = 'csr' 

 

mock_constants.IN_PROGRESS_DIR = '../p' 

mock_constants.KEY_DIR = 'keys' 

mock_constants.TEMP_CHECKPOINT_DIR = 't' 

 

ref_path = compat.underscores_for_unsupported_characters_in_path( 

'acc/acme-server.org:443/new') 

self.assertEqual( 

os.path.normpath(self.config.accounts_dir), 

os.path.normpath(os.path.join(self.config.config_dir, ref_path))) 

self.assertEqual( 

os.path.normpath(self.config.backup_dir), 

os.path.normpath(os.path.join(self.config.work_dir, 'backups'))) 

self.assertEqual( 

os.path.normpath(self.config.csr_dir), 

os.path.normpath(os.path.join(self.config.config_dir, 'csr'))) 

self.assertEqual( 

os.path.normpath(self.config.in_progress_dir), 

os.path.normpath(os.path.join(self.config.work_dir, '../p'))) 

self.assertEqual( 

os.path.normpath(self.config.key_dir), 

os.path.normpath(os.path.join(self.config.config_dir, 'keys'))) 

self.assertEqual( 

os.path.normpath(self.config.temp_checkpoint_dir), 

os.path.normpath(os.path.join(self.config.work_dir, 't'))) 

 

def test_absolute_paths(self): 

from certbot.configuration import NamespaceConfig 

 

config_base = "foo" 

work_base = "bar" 

logs_base = "baz" 

server = "mock.server" 

 

mock_namespace = mock.MagicMock(spec=['config_dir', 'work_dir', 

'logs_dir', 'http01_port', 

'tls_sni_01_port', 

'domains', 'server']) 

mock_namespace.config_dir = config_base 

mock_namespace.work_dir = work_base 

mock_namespace.logs_dir = logs_base 

mock_namespace.server = server 

config = NamespaceConfig(mock_namespace) 

 

self.assertTrue(os.path.isabs(config.config_dir)) 

self.assertEqual(config.config_dir, 

os.path.join(os.getcwd(), config_base)) 

self.assertTrue(os.path.isabs(config.work_dir)) 

self.assertEqual(config.work_dir, 

os.path.join(os.getcwd(), work_base)) 

self.assertTrue(os.path.isabs(config.logs_dir)) 

self.assertEqual(config.logs_dir, 

os.path.join(os.getcwd(), logs_base)) 

self.assertTrue(os.path.isabs(config.accounts_dir)) 

self.assertTrue(os.path.isabs(config.backup_dir)) 

self.assertTrue(os.path.isabs(config.csr_dir)) 

self.assertTrue(os.path.isabs(config.in_progress_dir)) 

self.assertTrue(os.path.isabs(config.key_dir)) 

self.assertTrue(os.path.isabs(config.temp_checkpoint_dir)) 

 

@mock.patch('certbot.configuration.constants') 

def test_renewal_dynamic_dirs(self, mock_constants): 

mock_constants.ARCHIVE_DIR = 'a' 

mock_constants.LIVE_DIR = 'l' 

mock_constants.RENEWAL_CONFIGS_DIR = 'renewal_configs' 

 

self.assertEqual( 

self.config.default_archive_dir, os.path.join(self.config.config_dir, 'a')) 

self.assertEqual( 

self.config.live_dir, os.path.join(self.config.config_dir, 'l')) 

self.assertEqual( 

self.config.renewal_configs_dir, os.path.join( 

self.config.config_dir, 'renewal_configs')) 

 

def test_renewal_absolute_paths(self): 

from certbot.configuration import NamespaceConfig 

 

config_base = "foo" 

work_base = "bar" 

logs_base = "baz" 

 

mock_namespace = mock.MagicMock(spec=['config_dir', 'work_dir', 

'logs_dir', 'http01_port', 

'tls_sni_01_port', 

'domains', 'server']) 

mock_namespace.config_dir = config_base 

mock_namespace.work_dir = work_base 

mock_namespace.logs_dir = logs_base 

config = NamespaceConfig(mock_namespace) 

 

self.assertTrue(os.path.isabs(config.default_archive_dir)) 

self.assertTrue(os.path.isabs(config.live_dir)) 

self.assertTrue(os.path.isabs(config.renewal_configs_dir)) 

 

def test_get_and_set_attr(self): 

self.config.foo = 42 

self.assertEqual(self.config.namespace.foo, 42) 

self.config.namespace.bar = 1337 

self.assertEqual(self.config.bar, 1337) 

 

def test_hook_directories(self): 

self.assertEqual(self.config.renewal_hooks_dir, 

os.path.join(self.config.config_dir, 

constants.RENEWAL_HOOKS_DIR)) 

self.assertEqual(self.config.renewal_pre_hooks_dir, 

os.path.join(self.config.renewal_hooks_dir, 

constants.RENEWAL_PRE_HOOKS_DIR)) 

self.assertEqual(self.config.renewal_deploy_hooks_dir, 

os.path.join(self.config.renewal_hooks_dir, 

constants.RENEWAL_DEPLOY_HOOKS_DIR)) 

self.assertEqual(self.config.renewal_post_hooks_dir, 

os.path.join(self.config.renewal_hooks_dir, 

constants.RENEWAL_POST_HOOKS_DIR)) 

 

 

if __name__ == '__main__': 

unittest.main() # pragma: no cover