# HG changeset patch # User Mads Kiilerich # Date 1467211515 -7200 # Node ID 110dcae69d7d97cfc8027a64a2d531aea85368b4 # Parent 6754597990cb95e04a9cb3bcc47e586c92fefde4 protocols: fix assertion error when accessing repositories with "permanent" urls (Issue #202) I am not aware of any good way to test this, so it is tested with a Mercurial only hack. diff -r 6754597990cb -r 110dcae69d7d kallithea/lib/base.py --- a/kallithea/lib/base.py Mon May 30 15:33:19 2016 +0200 +++ b/kallithea/lib/base.py Wed Jun 29 16:45:15 2016 +0200 @@ -201,7 +201,7 @@ from kallithea.lib.utils import get_repo_by_id by_id_match = get_repo_by_id(repo_name) if by_id_match: - data[1] = by_id_match + data[1] = safe_str(by_id_match) return '/'.join(data) diff -r 6754597990cb -r 110dcae69d7d kallithea/lib/middleware/simplehg.py --- a/kallithea/lib/middleware/simplehg.py Mon May 30 15:33:19 2016 +0200 +++ b/kallithea/lib/middleware/simplehg.py Wed Jun 29 16:45:15 2016 +0200 @@ -84,7 +84,7 @@ #====================================================================== try: str_repo_name = environ['REPO_NAME'] = self.__get_repository(environ) - assert isinstance(str_repo_name, str) + assert isinstance(str_repo_name, str), str_repo_name repo_name = safe_unicode(str_repo_name) assert safe_str(repo_name) == str_repo_name, (str_repo_name, repo_name) log.debug('Extracted repo name is %s', repo_name) diff -r 6754597990cb -r 110dcae69d7d kallithea/tests/functional/test_admin_repos.py --- a/kallithea/tests/functional/test_admin_repos.py Mon May 30 15:33:19 2016 +0200 +++ b/kallithea/tests/functional/test_admin_repos.py Wed Jun 29 16:45:15 2016 +0200 @@ -4,6 +4,8 @@ import mock import urllib +import pytest + from kallithea.lib import vcs from kallithea.model.db import Repository, RepoGroup, UserRepoToPerm, User,\ Permission @@ -654,3 +656,8 @@ NEW_REPO = NEW_HG_REPO OTHER_TYPE_REPO = GIT_REPO OTHER_TYPE = 'git' + + def test_permanent_url_protocol_access(self): + with pytest.raises(Exception) as e: + self.app.get(url('summary_home', repo_name='_1'), extra_environ={'HTTP_ACCEPT': 'application/mercurial'}) + assert 'Unable to detect pull/push action' in str(e)