This repository has been archived on 2020-03-24. You can view files and clone it, but cannot push or open issues or pull requests.
quay/buildtrigger/test/test_githosthandler.py

126 lines
3.8 KiB
Python
Raw Normal View History

import pytest
from buildtrigger.triggerutil import TriggerStartException
from buildtrigger.test.githubmock import get_github_trigger
from endpoints.building import PreparedBuild
def github_trigger():
return get_github_trigger()
@pytest.fixture(params=[github_trigger()])
def githost_trigger(request):
return request.param
@pytest.mark.parametrize('run_parameters, expected_error, expected_message', [
# No branch or tag specified: use the commit of the default branch.
({}, None, None),
# Invalid branch.
({'refs': {'kind': 'branch', 'name': 'invalid'}}, TriggerStartException,
'Could not find branch in repository'),
# Invalid tag.
({'refs': {'kind': 'tag', 'name': 'invalid'}}, TriggerStartException,
'Could not find tag in repository'),
# Valid branch.
({'refs': {'kind': 'branch', 'name': 'master'}}, None, None),
# Valid tag.
({'refs': {'kind': 'tag', 'name': 'sometag'}}, None, None),
])
def test_manual_start(run_parameters, expected_error, expected_message, githost_trigger):
if expected_error is not None:
with pytest.raises(expected_error) as ipe:
githost_trigger.manual_start(run_parameters)
assert ipe.value.message == expected_message
else:
assert isinstance(githost_trigger.manual_start(run_parameters), PreparedBuild)
@pytest.mark.parametrize('username, expected_response', [
('unknownuser', None),
('knownuser', {'html_url': 'htmlurl', 'avatar_url': 'avatarurl'}),
])
def test_lookup_user(username, expected_response, githost_trigger):
assert githost_trigger.lookup_user(username) == expected_response
@pytest.mark.parametrize('name, expected', [
('refs', [
{'kind': 'branch', 'name': 'master'},
{'kind': 'branch', 'name': 'otherbranch'},
{'kind': 'tag', 'name': 'sometag'},
{'kind': 'tag', 'name': 'someothertag'},
]),
('tag_name', ['sometag', 'someothertag']),
('branch_name', ['master', 'otherbranch']),
('invalid', None)
])
def test_list_field_values(name, expected, githost_trigger):
assert githost_trigger.list_field_values(name) == expected
def test_list_build_subdirs(githost_trigger):
assert githost_trigger.list_build_subdirs() == ['', 'somesubdir']
def test_list_build_source_namespaces(githost_trigger):
namespaces_expected = [
{
'personal': True,
'score': 1,
'avatar_url': 'avatarurl',
'id': 'knownuser',
'title': 'knownuser'
},
{
'score': 2,
'title': 'someorg',
'personal': False,
'url': 'htmlurl',
'avatar_url': 'avatarurl',
'id': 'someorg'
}
]
assert githost_trigger.list_build_source_namespaces() == namespaces_expected
@pytest.mark.parametrize('namespace, expected', [
('', []),
('unknown', []),
('knownuser', [
{
'last_updated': 0, 'name': 'somerepo', 'url': 'http://some/url', 'private': True,
'full_name': 'knownuser/somerepo', 'has_admin_permissions': True,
'description': 'some somerepo repo'
}]),
('someorg', [
{
'last_updated': 0, 'name': 'somerepo', 'url': 'http://some/url',
'private': True, 'full_name': 'someorg/somerepo', 'has_admin_permissions': False,
'description': 'some somerepo repo'
},
{
'last_updated': 0, 'name': 'anotherrepo', 'url': 'http://some/url',
'private': False, 'full_name': 'someorg/anotherrepo', 'has_admin_permissions': False,
'description': 'some anotherrepo repo'
}]),
])
def test_list_build_sources_for_namespace(namespace, expected, githost_trigger):
# TODO: schema validation on the resulting namespaces.
assert githost_trigger.list_build_sources_for_namespace(namespace) == expected
def test_activate(githost_trigger):
config, private_key = githost_trigger.activate('http://some/url')
assert 'deploy_key_id' in config
assert 'hook_id' in config
assert 'private_key' in private_key
def test_deactivate(githost_trigger):
githost_trigger.deactivate()