##// END OF EJS Templates
svn: make hooks safe and fully backward compatible....
svn: make hooks safe and fully backward compatible. - fixes problem with older protocol hooks that doesn't support given methods. - in cases of older SVN we should simply skip, and not fail.

File last commit:

r352:b25f7b7c default
r436:74eb96f2 stable
Show More
test_main_http.py
57 lines | 2.1 KiB | text/x-python | PythonLexer
core: finished removal of pyro4....
r213 # RhodeCode VCSServer provides access to different vcs backends via network.
core: udpate copyright string to 2018
r352 # Copyright (C) 2014-2018 RhodeCode GmbH
core: finished removal of pyro4....
r213 #
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software Foundation,
# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
import mock
import pytest
from vcsserver import http_main
from vcsserver.base import obfuscate_qs
@mock.patch('vcsserver.http_main.VCS', mock.Mock())
@mock.patch('vcsserver.hgpatches.patch_largefiles_capabilities')
def test_applies_largefiles_patch(patch_largefiles_capabilities):
http_main.main([])
patch_largefiles_capabilities.assert_called_once_with()
@mock.patch('vcsserver.http_main.VCS', mock.Mock())
@mock.patch('vcsserver.http_main.MercurialFactory', None)
@mock.patch(
'vcsserver.hgpatches.patch_largefiles_capabilities',
mock.Mock(side_effect=Exception("Must not be called")))
def test_applies_largefiles_patch_only_if_mercurial_is_available():
http_main.main([])
@pytest.mark.parametrize('given, expected', [
('bad', 'bad'),
('query&foo=bar', 'query&foo=bar'),
('equery&auth_token=bar', 'equery&auth_token=*****'),
('a;b;c;query&foo=bar&auth_token=secret',
'a&b&c&query&foo=bar&auth_token=*****'),
('', ''),
(None, None),
('foo=bar', 'foo=bar'),
('auth_token=secret', 'auth_token=*****'),
('auth_token=secret&api_key=secret2',
'auth_token=*****&api_key=*****'),
('auth_token=secret&api_key=secret2&param=value',
'auth_token=*****&api_key=*****&param=value'),
])
def test_obfuscate_qs(given, expected):
assert expected == obfuscate_qs(given)