mirror of
https://github.com/quay/quay.git
synced 2025-04-19 21:42:17 +03:00
* chore: drop deprecated tables and remove unused code * isort imports * migration: check for table existence before drop
185 lines
5.8 KiB
Python
185 lines
5.8 KiB
Python
from datetime import datetime
|
|
|
|
from github import GithubException
|
|
from mock import Mock
|
|
|
|
from buildtrigger.githubhandler import GithubBuildTrigger
|
|
from util.morecollections import AttrDict
|
|
|
|
|
|
def get_github_trigger(dockerfile_path=""):
|
|
trigger_obj = AttrDict(dict(auth_token="foobar", id="sometrigger"))
|
|
trigger = GithubBuildTrigger(
|
|
trigger_obj, {"build_source": "foo", "dockerfile_path": dockerfile_path}
|
|
)
|
|
trigger._get_client = get_mock_github
|
|
return trigger
|
|
|
|
|
|
def get_mock_github():
|
|
def get_commit_mock(commit_sha):
|
|
if commit_sha == "aaaaaaa":
|
|
commit_mock = Mock()
|
|
commit_mock.sha = commit_sha
|
|
commit_mock.html_url = "http://url/to/commit"
|
|
commit_mock.last_modified = "now"
|
|
|
|
commit_mock.commit = Mock()
|
|
commit_mock.commit.message = "some cool message"
|
|
|
|
commit_mock.committer = Mock()
|
|
commit_mock.committer.login = "someuser"
|
|
commit_mock.committer.avatar_url = "avatarurl"
|
|
commit_mock.committer.html_url = "htmlurl"
|
|
|
|
commit_mock.author = Mock()
|
|
commit_mock.author.login = "someuser"
|
|
commit_mock.author.avatar_url = "avatarurl"
|
|
commit_mock.author.html_url = "htmlurl"
|
|
return commit_mock
|
|
|
|
raise GithubException(None, None)
|
|
|
|
def get_branch_mock(branch_name):
|
|
if branch_name == "master":
|
|
branch_mock = Mock()
|
|
branch_mock.commit = Mock()
|
|
branch_mock.commit.sha = "aaaaaaa"
|
|
return branch_mock
|
|
|
|
raise GithubException(None, None)
|
|
|
|
def get_repo_mock(namespace, name):
|
|
repo_mock = Mock()
|
|
repo_mock.owner = Mock()
|
|
repo_mock.owner.login = namespace
|
|
|
|
repo_mock.full_name = "%s/%s" % (namespace, name)
|
|
repo_mock.name = name
|
|
repo_mock.description = "some %s repo" % (name)
|
|
|
|
if name != "anotherrepo":
|
|
repo_mock.pushed_at = datetime.utcfromtimestamp(0)
|
|
else:
|
|
repo_mock.pushed_at = None
|
|
|
|
repo_mock.html_url = "https://bitbucket.org/%s/%s" % (namespace, name)
|
|
repo_mock.private = name == "somerepo"
|
|
repo_mock.permissions = Mock()
|
|
repo_mock.permissions.admin = namespace == "knownuser"
|
|
return repo_mock
|
|
|
|
def get_user_repos_mock(type="all", sort="created"):
|
|
return [get_repo_mock("knownuser", "somerepo")]
|
|
|
|
def get_org_repos_mock(type="all"):
|
|
return [get_repo_mock("someorg", "somerepo"), get_repo_mock("someorg", "anotherrepo")]
|
|
|
|
def get_orgs_mock():
|
|
return [get_org_mock("someorg")]
|
|
|
|
def get_user_mock(username="knownuser"):
|
|
if username == "knownuser":
|
|
user_mock = Mock()
|
|
user_mock.name = username
|
|
user_mock.plan = Mock()
|
|
user_mock.plan.private_repos = 1
|
|
user_mock.login = username
|
|
user_mock.html_url = "https://bitbucket.org/%s" % (username)
|
|
user_mock.avatar_url = "avatarurl"
|
|
user_mock.get_repos = Mock(side_effect=get_user_repos_mock)
|
|
user_mock.get_orgs = Mock(side_effect=get_orgs_mock)
|
|
return user_mock
|
|
|
|
raise GithubException(None, None)
|
|
|
|
def get_org_mock(namespace):
|
|
if namespace == "someorg":
|
|
org_mock = Mock()
|
|
org_mock.get_repos = Mock(side_effect=get_org_repos_mock)
|
|
org_mock.login = namespace
|
|
org_mock.html_url = "https://bitbucket.org/%s" % (namespace)
|
|
org_mock.avatar_url = "avatarurl"
|
|
org_mock.name = namespace
|
|
org_mock.plan = Mock()
|
|
org_mock.plan.private_repos = 2
|
|
return org_mock
|
|
|
|
raise GithubException(None, None)
|
|
|
|
def get_tags_mock():
|
|
sometag = Mock()
|
|
sometag.name = "sometag"
|
|
sometag.commit = get_commit_mock("aaaaaaa")
|
|
|
|
someothertag = Mock()
|
|
someothertag.name = "someothertag"
|
|
someothertag.commit = get_commit_mock("aaaaaaa")
|
|
return [sometag, someothertag]
|
|
|
|
def get_branches_mock():
|
|
master = Mock()
|
|
master.name = "master"
|
|
master.commit = get_commit_mock("aaaaaaa")
|
|
|
|
otherbranch = Mock()
|
|
otherbranch.name = "otherbranch"
|
|
otherbranch.commit = get_commit_mock("aaaaaaa")
|
|
return [master, otherbranch]
|
|
|
|
def get_contents_mock(filepath):
|
|
if filepath == "Dockerfile":
|
|
m = Mock()
|
|
m.content = "hello world"
|
|
return m
|
|
|
|
if filepath == "somesubdir/Dockerfile":
|
|
m = Mock()
|
|
m.content = "hi universe"
|
|
return m
|
|
|
|
raise GithubException(None, None)
|
|
|
|
def get_git_tree_mock(commit_sha, recursive=False):
|
|
first_file = Mock()
|
|
first_file.type = "blob"
|
|
first_file.path = "Dockerfile"
|
|
|
|
second_file = Mock()
|
|
second_file.type = "other"
|
|
second_file.path = "/some/Dockerfile"
|
|
|
|
third_file = Mock()
|
|
third_file.type = "blob"
|
|
third_file.path = "somesubdir/Dockerfile"
|
|
|
|
t = Mock()
|
|
|
|
if commit_sha == "aaaaaaa":
|
|
t.tree = [
|
|
first_file,
|
|
second_file,
|
|
third_file,
|
|
]
|
|
else:
|
|
t.tree = []
|
|
|
|
return t
|
|
|
|
repo_mock = Mock()
|
|
repo_mock.default_branch = "master"
|
|
repo_mock.ssh_url = "ssh_url"
|
|
|
|
repo_mock.get_branch = Mock(side_effect=get_branch_mock)
|
|
repo_mock.get_tags = Mock(side_effect=get_tags_mock)
|
|
repo_mock.get_branches = Mock(side_effect=get_branches_mock)
|
|
repo_mock.get_commit = Mock(side_effect=get_commit_mock)
|
|
repo_mock.get_contents = Mock(side_effect=get_contents_mock)
|
|
repo_mock.get_git_tree = Mock(side_effect=get_git_tree_mock)
|
|
|
|
gh_mock = Mock()
|
|
gh_mock.get_repo = Mock(return_value=repo_mock)
|
|
gh_mock.get_user = Mock(side_effect=get_user_mock)
|
|
gh_mock.get_organization = Mock(side_effect=get_org_mock)
|
|
return gh_mock
|