##// END OF EJS Templates
fix(caching): fixed problems with Cache query for users....
fix(caching): fixed problems with Cache query for users. The old way of querying caused the user get query to be always cached, and returning old results even in 2fa forms. The new limited query doesn't cache the user object resolving issues

File last commit:

r5088:8f6d1ed6 default
r5365:ae8a165b default
Show More
test_vcs_operations_special.py
274 lines | 11.6 KiB | text/x-python | PythonLexer
/ rhodecode / tests / vcs_operations / test_vcs_operations_special.py
tests: move vcs_operations into its own module.
r2456
copyrights: updated for 2023
r5088 # Copyright (C) 2010-2023 RhodeCode GmbH
tests: move vcs_operations into its own module.
r2456 #
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License, version 3
# (only), as published by the Free Software Foundation.
#
# 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 Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
# This program is dual-licensed. If you wish to learn more about the
# RhodeCode Enterprise Edition, including its added features, Support services,
# and proprietary license terms, please see https://rhodecode.com/licenses/
import os
import pytest
from rhodecode.lib.vcs.backends.git.repository import GitRepository
from rhodecode.lib.vcs.backends.hg.repository import MercurialRepository
from rhodecode.lib.vcs.nodes import FileNode
repositories: added option to archive repositories instead of deleting them....
r3090 from rhodecode.model.db import Repository
tests: move vcs_operations into its own module.
r2456 from rhodecode.model.meta import Session
from rhodecode.tests.vcs_operations import (
repositories: added option to archive repositories instead of deleting them....
r3090 Command, _check_proper_clone, _check_proper_git_push, _check_proper_hg_push,
_add_files_and_push)
tests: move vcs_operations into its own module.
r2456
@pytest.mark.usefixtures("disable_locking")
class TestVCSOperationsSpecial(object):
def test_git_sets_default_branch_if_not_master(
self, backend_git, tmpdir, rc_web_server):
empty_repo = backend_git.create_repo()
clone_url = rc_web_server.repo_clone_url(empty_repo.repo_name)
cmd = Command(tmpdir.strpath)
cmd.execute('git clone', clone_url)
repo = GitRepository(os.path.join(tmpdir.strpath, empty_repo.repo_name))
tests: further test fixes
r3778 repo._checkout('test', create=True)
tests: fixed all tests for python3 BIG changes
r5087 repo.in_memory_commit.add(FileNode(b'file', content=b'some-content'))
tests: move vcs_operations into its own module.
r2456 repo.in_memory_commit.commit(
message='Commit on branch test',
tests: fixed author for commit messages to be in a proper format.
r3840 author='Automatic test <automatic@rhodecode.com>',
tests: move vcs_operations into its own module.
r2456 branch='test')
repo_cmd = Command(repo.path)
stdout, stderr = repo_cmd.execute('git push --verbose origin test')
_check_proper_git_push(
stdout, stderr, branch='test', should_set_default_branch=True)
stdout, stderr = cmd.execute(
'git clone', clone_url, empty_repo.repo_name + '-clone')
_check_proper_clone(stdout, stderr, 'git')
# Doing an explicit commit in order to get latest user logs on MySQL
Session().commit()
tests: rewrote code for running vcs_operations. Now it starts it's own...
r2457 def test_git_fetches_from_remote_repository_with_annotated_tags(
self, backend_git, rc_web_server):
# Note: This is a test specific to the git backend. It checks the
# integration of fetching from a remote repository which contains
# annotated tags.
# Dulwich shows this specific behavior only when
# operating against a remote repository.
source_repo = backend_git['annotated-tag']
target_vcs_repo = backend_git.create_repo().scm_instance()
target_vcs_repo.fetch(rc_web_server.repo_clone_url(source_repo.repo_name))
tests: move vcs_operations into its own module.
r2456
def test_git_push_shows_pull_request_refs(self, backend_git, rc_web_server, tmpdir):
"""
test if remote info about refs is visible
"""
empty_repo = backend_git.create_repo()
clone_url = rc_web_server.repo_clone_url(empty_repo.repo_name)
cmd = Command(tmpdir.strpath)
cmd.execute('git clone', clone_url)
repo = GitRepository(os.path.join(tmpdir.strpath, empty_repo.repo_name))
tests: fixed all tests for python3 BIG changes
r5087 repo.in_memory_commit.add(FileNode(b'readme.md', content=b'## Hello'))
tests: move vcs_operations into its own module.
r2456 repo.in_memory_commit.commit(
message='Commit on branch Master',
tests: fixed author for commit messages to be in a proper format.
r3840 author='Automatic test <automatic@rhodecode.com>',
tests: move vcs_operations into its own module.
r2456 branch='master')
repo_cmd = Command(repo.path)
stdout, stderr = repo_cmd.execute('git push --verbose origin master')
_check_proper_git_push(stdout, stderr, branch='master')
tests: fixed all tests for python3 BIG changes
r5087 ref = f'{rc_web_server.host_url()}/{empty_repo.repo_name}/pull-request/new?branch=master'
assert f'remote: RhodeCode: open pull request link: {ref}' in stderr
tests: move vcs_operations into its own module.
r2456 assert 'remote: RhodeCode: push completed' in stderr
# push on the same branch
repo = GitRepository(os.path.join(tmpdir.strpath, empty_repo.repo_name))
tests: fixed all tests for python3 BIG changes
r5087 repo.in_memory_commit.add(FileNode(b'setup.py', content=b'print\n'))
tests: move vcs_operations into its own module.
r2456 repo.in_memory_commit.commit(
message='Commit2 on branch Master',
tests: fixed author for commit messages to be in a proper format.
r3840 author='Automatic test2 <automatic@rhodecode.com>',
tests: move vcs_operations into its own module.
r2456 branch='master')
repo_cmd = Command(repo.path)
stdout, stderr = repo_cmd.execute('git push --verbose origin master')
_check_proper_git_push(stdout, stderr, branch='master')
tests: fixed all tests for python3 BIG changes
r5087 assert f'remote: RhodeCode: open pull request link: {ref}' in stderr
tests: move vcs_operations into its own module.
r2456 assert 'remote: RhodeCode: push completed' in stderr
# new Branch
repo = GitRepository(os.path.join(tmpdir.strpath, empty_repo.repo_name))
tests: fixed all tests for python3 BIG changes
r5087 repo._create_branch('feature', repo.commit_ids[1])
repo.in_memory_commit.add(FileNode(b'feature1.py', content=b'## Hello world'))
tests: move vcs_operations into its own module.
r2456 repo.in_memory_commit.commit(
message='Commit on branch feature',
tests: fixed author for commit messages to be in a proper format.
r3840 author='Automatic test <automatic@rhodecode.com>',
tests: move vcs_operations into its own module.
r2456 branch='feature')
repo_cmd = Command(repo.path)
stdout, stderr = repo_cmd.execute('git push --verbose origin feature')
_check_proper_git_push(stdout, stderr, branch='feature')
tests: fixed all tests for python3 BIG changes
r5087 ref = f'{rc_web_server.host_url()}/{empty_repo.repo_name}/pull-request/new?branch=feature'
assert f'remote: RhodeCode: open pull request link: {ref}' in stderr
tests: move vcs_operations into its own module.
r2456 assert 'remote: RhodeCode: push completed' in stderr
def test_hg_push_shows_pull_request_refs(self, backend_hg, rc_web_server, tmpdir):
empty_repo = backend_hg.create_repo()
clone_url = rc_web_server.repo_clone_url(empty_repo.repo_name)
cmd = Command(tmpdir.strpath)
cmd.execute('hg clone', clone_url)
repo = MercurialRepository(os.path.join(tmpdir.strpath, empty_repo.repo_name))
tests: fixed all tests for python3 BIG changes
r5087 repo.in_memory_commit.add(FileNode(b'readme.md', content=b'## Hello'))
tests: move vcs_operations into its own module.
r2456 repo.in_memory_commit.commit(
message=u'Commit on branch default',
author=u'Automatic test',
branch='default')
repo_cmd = Command(repo.path)
repo_cmd.execute('hg checkout default')
stdout, stderr = repo_cmd.execute('hg push --verbose', clone_url)
_check_proper_hg_push(stdout, stderr, branch='default')
tests: fixed all tests for python3 BIG changes
r5087 ref = f'{rc_web_server.host_url()}/{empty_repo.repo_name}/pull-request/new?branch=default'
assert f'remote: RhodeCode: open pull request link: {ref}' in stdout
tests: move vcs_operations into its own module.
r2456 assert 'remote: RhodeCode: push completed' in stdout
# push on the same branch
repo = MercurialRepository(os.path.join(tmpdir.strpath, empty_repo.repo_name))
tests: fixed all tests for python3 BIG changes
r5087 repo.in_memory_commit.add(FileNode(b'setup.py', content=b'print\n'))
tests: move vcs_operations into its own module.
r2456 repo.in_memory_commit.commit(
message=u'Commit2 on branch default',
author=u'Automatic test2',
branch=u'default')
repo_cmd = Command(repo.path)
repo_cmd.execute('hg checkout default')
stdout, stderr = repo_cmd.execute('hg push --verbose', clone_url)
_check_proper_hg_push(stdout, stderr, branch='default')
tests: fixed all tests for python3 BIG changes
r5087 assert f'remote: RhodeCode: open pull request link: {ref}' in stdout
tests: move vcs_operations into its own module.
r2456 assert 'remote: RhodeCode: push completed' in stdout
# new Branch
repo = MercurialRepository(os.path.join(tmpdir.strpath, empty_repo.repo_name))
tests: fixed all tests for python3 BIG changes
r5087 repo.in_memory_commit.add(FileNode(b'feature1.py', content=b'## Hello world'))
tests: move vcs_operations into its own module.
r2456 repo.in_memory_commit.commit(
message=u'Commit on branch feature',
author=u'Automatic test',
branch=u'feature')
repo_cmd = Command(repo.path)
repo_cmd.execute('hg checkout feature')
stdout, stderr = repo_cmd.execute('hg push --new-branch --verbose', clone_url)
_check_proper_hg_push(stdout, stderr, branch='feature')
tests: fixed all tests for python3 BIG changes
r5087 ref = f'{rc_web_server.host_url()}/{empty_repo.repo_name}/pull-request/new?branch=feature'
assert f'remote: RhodeCode: open pull request link: {ref}' in stdout
tests: move vcs_operations into its own module.
r2456 assert 'remote: RhodeCode: push completed' in stdout
def test_hg_push_shows_pull_request_refs_book(self, backend_hg, rc_web_server, tmpdir):
empty_repo = backend_hg.create_repo()
clone_url = rc_web_server.repo_clone_url(empty_repo.repo_name)
cmd = Command(tmpdir.strpath)
cmd.execute('hg clone', clone_url)
repo = MercurialRepository(os.path.join(tmpdir.strpath, empty_repo.repo_name))
tests: fixed all tests for python3 BIG changes
r5087 repo.in_memory_commit.add(FileNode(b'readme.md', content=b'## Hello'))
tests: move vcs_operations into its own module.
r2456 repo.in_memory_commit.commit(
message=u'Commit on branch default',
author=u'Automatic test',
branch='default')
repo_cmd = Command(repo.path)
repo_cmd.execute('hg checkout default')
stdout, stderr = repo_cmd.execute('hg push --verbose', clone_url)
_check_proper_hg_push(stdout, stderr, branch='default')
tests: fixed all tests for python3 BIG changes
r5087 ref = f'{rc_web_server.host_url()}/{empty_repo.repo_name}/pull-request/new?branch=default'
assert f'remote: RhodeCode: open pull request link: {ref}' in stdout
tests: move vcs_operations into its own module.
r2456 assert 'remote: RhodeCode: push completed' in stdout
# add bookmark
repo = MercurialRepository(os.path.join(tmpdir.strpath, empty_repo.repo_name))
tests: fixed all tests for python3 BIG changes
r5087 repo.in_memory_commit.add(FileNode(b'setup.py', content=b'print\n'))
tests: move vcs_operations into its own module.
r2456 repo.in_memory_commit.commit(
message=u'Commit2 on branch default',
author=u'Automatic test2',
branch=u'default')
repo_cmd = Command(repo.path)
repo_cmd.execute('hg checkout default')
repo_cmd.execute('hg bookmark feature2')
stdout, stderr = repo_cmd.execute('hg push -B feature2 --verbose', clone_url)
_check_proper_hg_push(stdout, stderr, branch='default')
tests: fixed all tests for python3 BIG changes
r5087 ref = f'{rc_web_server.host_url()}/{empty_repo.repo_name}/pull-request/new?branch=default'
assert f'remote: RhodeCode: open pull request link: {ref}' in stdout
ref = f'{rc_web_server.host_url()}/{empty_repo.repo_name}/pull-request/new?bookmark=feature2'
assert f'remote: RhodeCode: open pull request link: {ref}' in stdout
tests: move vcs_operations into its own module.
r2456 assert 'remote: RhodeCode: push completed' in stdout
assert 'exporting bookmark feature2' in stdout
repositories: added option to archive repositories instead of deleting them....
r3090
def test_push_is_forbidden_on_archived_repo_hg(self, backend_hg, rc_web_server, tmpdir):
empty_repo = backend_hg.create_repo()
repo_name = empty_repo.repo_name
repo = Repository.get_by_repo_name(repo_name)
repo.archived = True
Session().commit()
clone_url = rc_web_server.repo_clone_url(repo_name)
stdout, stderr = Command('/tmp').execute(
'hg clone', clone_url, tmpdir.strpath)
stdout, stderr = _add_files_and_push(
'hg', tmpdir.strpath, clone_url=clone_url)
assert 'abort: HTTP Error 403: Forbidden' in stderr
def test_push_is_forbidden_on_archived_repo_git(self, backend_git, rc_web_server, tmpdir):
empty_repo = backend_git.create_repo()
repo_name = empty_repo.repo_name
repo = Repository.get_by_repo_name(repo_name)
repo.archived = True
Session().commit()
clone_url = rc_web_server.repo_clone_url(repo_name)
stdout, stderr = Command('/tmp').execute(
'git clone', clone_url, tmpdir.strpath)
stdout, stderr = _add_files_and_push(
'git', tmpdir.strpath, clone_url=clone_url)
assert "The requested URL returned error: 403" in stderr