##// END OF EJS Templates
tests: Adapt sv_support tests to recent changes....
Martin Bornhold -
r858:fe0dec67 default
parent child Browse files
Show More
@@ -1,145 +1,151 b''
1 1 # -*- coding: utf-8 -*-
2 2
3 3 # Copyright (C) 2016-2016 RhodeCode GmbH
4 4 #
5 5 # This program is free software: you can redistribute it and/or modify
6 6 # it under the terms of the GNU Affero General Public License, version 3
7 7 # (only), as published by the Free Software Foundation.
8 8 #
9 9 # This program is distributed in the hope that it will be useful,
10 10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 12 # GNU General Public License for more details.
13 13 #
14 14 # You should have received a copy of the GNU Affero General Public License
15 15 # along with this program. If not, see <http://www.gnu.org/licenses/>.
16 16 #
17 17 # This program is dual-licensed. If you wish to learn more about the
18 18 # RhodeCode Enterprise Edition, including its added features, Support services,
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
25 26 import tempfile
26 27
27 28 from pyramid import testing
28 29
29 30 from rhodecode.svn_support import config_keys, utils
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.
36 38 config = testing.setUp()
37 39 config.include('pyramid_mako')
38 40
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):
47 50 testing.tearDown()
48 51 shutil.rmtree(cls.tempdir, ignore_errors=True)
49 52
50 53 @classmethod
51 54 def get_settings(cls):
52 55 config_file_path = tempfile.mkstemp(
53 56 suffix='mod-dav-svn.conf', dir=cls.tempdir)[1]
54 57 return {
55 58 config_keys.config_file_path: config_file_path,
56 59 config_keys.location_root: cls.location_root,
57 60 config_keys.list_parent_path: True,
58 61 }
59 62
60 63 @classmethod
61 64 def get_repo_groups(cls, count=1):
62 65 repo_groups = []
63 66 for num in range(0, count):
64 full_path = '/path/to/RepoGroup{}'.format(num)
67 full_path = u'/path/to/RepâGrâúp-°¡ {}'.format(num)
65 68 repo_group_mock = mock.MagicMock()
66 69 repo_group_mock.full_path = full_path
67 70 repo_group_mock.full_path_splitted = full_path.split('/')
68 71 repo_groups.append(repo_group_mock)
69 72 return repo_groups
70 73
71 74 def assert_root_location_directive(self, config):
72 pattern = '<Location {location}>'.format(location=self.location_root)
75 pattern = u'<Location "{location}">'.format(
76 location=self.location_root)
73 77 assert len(re.findall(pattern, config)) == 1
74 78
75 79 def assert_group_location_directive(self, config, group_path):
76 pattern = '<Location {location}{group_path}>'.format(
80 pattern = u'<Location "{location}{group_path}">'.format(
77 81 location=self.location_root, group_path=group_path)
78 82 assert len(re.findall(pattern, config)) == 1
79 83
80 84 @mock.patch('rhodecode.svn_support.utils.get_rhodecode_realm')
81 85 @mock.patch('rhodecode.svn_support.utils.RepoGroup')
82 86 def test_generate_mod_dav_svn_config(self, RepoGroupMock, GetRealmMock):
83 87 # Setup mock objects.
84 GetRealmMock.return_value = 'DummyRealm'
88 GetRealmMock.return_value = self._dummy_realm
85 89 num_groups = 3
86 90 RepoGroupMock.get_all_repo_groups.return_value = self.get_repo_groups(
87 91 count=num_groups)
88 92
89 93 # Execute the method under test.
90 94 settings = self.get_settings()
91 95 utils.generate_mod_dav_svn_config(
92 96 settings=settings, parent_path_root=self.parent_path_root)
93 97
94 98 # Read generated file.
95 with open(settings[config_keys.config_file_path], 'r') as file_:
96 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()
97 102
98 103 # Assert that one location directive exists for each repository group.
99 104 for group in self.get_repo_groups(count=num_groups):
100 105 self.assert_group_location_directive(content, group.full_path)
101 106
102 107 # Assert that the root location directive exists.
103 108 self.assert_root_location_directive(content)
104 109
105 110 @mock.patch('rhodecode.svn_support.utils.get_rhodecode_realm')
106 111 @mock.patch('rhodecode.svn_support.utils.RepoGroup')
107 112 def test_list_parent_path_on(self, RepoGroupMock, GetRealmMock):
108 113 # Setup mock objects.
109 GetRealmMock.return_value = 'DummyRealm'
114 GetRealmMock.return_value = self._dummy_realm
110 115 RepoGroupMock.get_all_repo_groups.return_value = self.get_repo_groups()
111 116
112 117 # Execute the method under test.
113 118 settings = self.get_settings()
114 119 settings[config_keys.list_parent_path] = True
115 120 utils.generate_mod_dav_svn_config(
116 121 settings=settings, parent_path_root=self.parent_path_root)
117 122
118 123 # Read generated file.
119 with open(settings[config_keys.config_file_path], 'r') as file_:
120 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()
121 127
122 128 # Make assertions.
123 129 assert not re.search('SVNListParentPath\s+Off', content)
124 130 assert re.search('SVNListParentPath\s+On', content)
125 131
126 132 @mock.patch('rhodecode.svn_support.utils.get_rhodecode_realm')
127 133 @mock.patch('rhodecode.svn_support.utils.RepoGroup')
128 134 def test_list_parent_path_off(self, RepoGroupMock, GetRealmMock):
129 135 # Setup mock objects.
130 GetRealmMock.return_value = 'DummyRealm'
136 GetRealmMock.return_value = self._dummy_realm
131 137 RepoGroupMock.get_all_repo_groups.return_value = self.get_repo_groups()
132 138
133 139 # Execute the method under test.
134 140 settings = self.get_settings()
135 141 settings[config_keys.list_parent_path] = False
136 142 utils.generate_mod_dav_svn_config(
137 143 settings=settings, parent_path_root=self.parent_path_root)
138 144
139 145 # Read generated file.
140 146 with open(settings[config_keys.config_file_path], 'r') as file_:
141 147 content = file_.read()
142 148
143 149 # Make assertions.
144 150 assert re.search('SVNListParentPath\s+Off', content)
145 151 assert not re.search('SVNListParentPath\s+On', content)
General Comments 0
You need to be logged in to leave comments. Login now