##// END OF EJS Templates
tests: Adapt sv_support tests to recent changes....
Martin Bornhold -
r862:6119c53c stable
parent child Browse files
Show More
@@ -19,6 +19,7 b''
19 19 # and proprietary license terms, please see https://rhodecode.com/licenses/
20 20
21 21
22 import codecs
22 23 import mock
23 24 import re
24 25 import shutil
@@ -30,6 +31,7 b' from rhodecode.svn_support import config'
30 31
31 32
32 33 class TestModDavSvnConfig(object):
34
33 35 @classmethod
34 36 def setup_class(cls):
35 37 # Make mako renderer available in tests.
@@ -39,8 +41,9 b' class TestModDavSvnConfig(object):'
39 41 # Temporary directory holding the generated config files.
40 42 cls.tempdir = tempfile.mkdtemp(suffix='pytest-mod-dav-svn')
41 43
42 cls.location_root = '/location/root'
43 cls.parent_path_root = '/parent/path/root'
44 cls.location_root = u'/location/root/ç¡Àâ'
45 cls.parent_path_root = u'/parent/path/ç¡Àâ'
46 cls._dummy_realm = u'Dummy Realm (Àâüç¡)'
44 47
45 48 @classmethod
46 49 def teardown_class(cls):
@@ -54,7 +57,6 b' class TestModDavSvnConfig(object):'
54 57 return {
55 58 config_keys.config_file_path: config_file_path,
56 59 config_keys.location_root: cls.location_root,
57 config_keys.parent_path_root: cls.parent_path_root,
58 60 config_keys.list_parent_path: True,
59 61 }
60 62
@@ -62,7 +64,7 b' class TestModDavSvnConfig(object):'
62 64 def get_repo_groups(cls, count=1):
63 65 repo_groups = []
64 66 for num in range(0, count):
65 full_path = '/path/to/RepoGroup{}'.format(num)
67 full_path = u'/path/to/RepâGrâúp-°¡ {}'.format(num)
66 68 repo_group_mock = mock.MagicMock()
67 69 repo_group_mock.full_path = full_path
68 70 repo_group_mock.full_path_splitted = full_path.split('/')
@@ -70,27 +72,33 b' class TestModDavSvnConfig(object):'
70 72 return repo_groups
71 73
72 74 def assert_root_location_directive(self, config):
73 pattern = '<Location {location}>'.format(location=self.location_root)
75 pattern = u'<Location "{location}">'.format(
76 location=self.location_root)
74 77 assert len(re.findall(pattern, config)) == 1
75 78
76 79 def assert_group_location_directive(self, config, group_path):
77 pattern = '<Location {location}{group_path}>'.format(
80 pattern = u'<Location "{location}{group_path}">'.format(
78 81 location=self.location_root, group_path=group_path)
79 82 assert len(re.findall(pattern, config)) == 1
80 83
84 @mock.patch('rhodecode.svn_support.utils.get_rhodecode_realm')
81 85 @mock.patch('rhodecode.svn_support.utils.RepoGroup')
82 def test_generate_mod_dav_svn_config(self, RepoGroupMock):
86 def test_generate_mod_dav_svn_config(self, RepoGroupMock, GetRealmMock):
87 # Setup mock objects.
88 GetRealmMock.return_value = self._dummy_realm
83 89 num_groups = 3
84 90 RepoGroupMock.get_all_repo_groups.return_value = self.get_repo_groups(
85 91 count=num_groups)
86 92
87 93 # Execute the method under test.
88 94 settings = self.get_settings()
89 utils.generate_mod_dav_svn_config(settings)
95 utils.generate_mod_dav_svn_config(
96 settings=settings, parent_path_root=self.parent_path_root)
90 97
91 98 # Read generated file.
92 with open(settings[config_keys.config_file_path], 'r') as file_:
93 content = file_.read()
99 path = settings[config_keys.config_file_path]
100 with codecs.open(path, 'r', encoding='utf-8') as f:
101 content = f.read()
94 102
95 103 # Assert that one location directive exists for each repository group.
96 104 for group in self.get_repo_groups(count=num_groups):
@@ -99,31 +107,40 b' class TestModDavSvnConfig(object):'
99 107 # Assert that the root location directive exists.
100 108 self.assert_root_location_directive(content)
101 109
110 @mock.patch('rhodecode.svn_support.utils.get_rhodecode_realm')
102 111 @mock.patch('rhodecode.svn_support.utils.RepoGroup')
103 def test_list_parent_path_on(self, RepoGroupMock):
112 def test_list_parent_path_on(self, RepoGroupMock, GetRealmMock):
113 # Setup mock objects.
114 GetRealmMock.return_value = self._dummy_realm
104 115 RepoGroupMock.get_all_repo_groups.return_value = self.get_repo_groups()
105 116
106 117 # Execute the method under test.
107 118 settings = self.get_settings()
108 119 settings[config_keys.list_parent_path] = True
109 utils.generate_mod_dav_svn_config(settings)
120 utils.generate_mod_dav_svn_config(
121 settings=settings, parent_path_root=self.parent_path_root)
110 122
111 123 # Read generated file.
112 with open(settings[config_keys.config_file_path], 'r') as file_:
113 content = file_.read()
124 path = settings[config_keys.config_file_path]
125 with codecs.open(path, 'r', encoding='utf-8') as f:
126 content = f.read()
114 127
115 128 # Make assertions.
116 129 assert not re.search('SVNListParentPath\s+Off', content)
117 130 assert re.search('SVNListParentPath\s+On', content)
118 131
132 @mock.patch('rhodecode.svn_support.utils.get_rhodecode_realm')
119 133 @mock.patch('rhodecode.svn_support.utils.RepoGroup')
120 def test_list_parent_path_off(self, RepoGroupMock):
134 def test_list_parent_path_off(self, RepoGroupMock, GetRealmMock):
135 # Setup mock objects.
136 GetRealmMock.return_value = self._dummy_realm
121 137 RepoGroupMock.get_all_repo_groups.return_value = self.get_repo_groups()
122 138
123 139 # Execute the method under test.
124 140 settings = self.get_settings()
125 141 settings[config_keys.list_parent_path] = False
126 utils.generate_mod_dav_svn_config(settings)
142 utils.generate_mod_dav_svn_config(
143 settings=settings, parent_path_root=self.parent_path_root)
127 144
128 145 # Read generated file.
129 146 with open(settings[config_keys.config_file_path], 'r') as file_:
@@ -132,15 +149,3 b' class TestModDavSvnConfig(object):'
132 149 # Make assertions.
133 150 assert re.search('SVNListParentPath\s+Off', content)
134 151 assert not re.search('SVNListParentPath\s+On', content)
135
136 @mock.patch('rhodecode.svn_support.utils.log')
137 def test_write_does_not_raise_on_error(self, LogMock):
138 """
139 Writing the configuration to file should never raise exceptions.
140 If e.g. path points to a place without write permissions.
141 """
142 utils._write_mod_dav_svn_config(
143 'content', '/dev/null/not/existing/path')
144
145 # Assert that we log the exception.
146 assert LogMock.exception.called
General Comments 0
You need to be logged in to leave comments. Login now