Add unit testing of github trigger handler

This commit is contained in:
Joseph Schorr 2017-02-13 13:23:07 -05:00
parent cfe231f618
commit c4f873ae96
2 changed files with 392 additions and 13 deletions

View file

@ -261,13 +261,14 @@ class GithubBuildTrigger(BuildTriggerHandler):
raise TriggerDeactivationException(msg)
# Remove the webhook.
try:
hook = repo.get_hook(config['hook_id'])
hook.delete()
except GithubException as ghe:
default_msg = 'Unable to remove hook: %s' % config['hook_id']
msg = GithubBuildTrigger._get_error_message(ghe, default_msg)
raise TriggerDeactivationException(msg)
if 'hook_id' in config:
try:
hook = repo.get_hook(config['hook_id'])
hook.delete()
except GithubException as ghe:
default_msg = 'Unable to remove hook: %s' % config['hook_id']
msg = GithubBuildTrigger._get_error_message(ghe, default_msg)
raise TriggerDeactivationException(msg)
config.pop('hook_id', None)
self.config = config
@ -315,12 +316,14 @@ class GithubBuildTrigger(BuildTriggerHandler):
gh_client = self._get_client()
usr = gh_client.get_user()
if namespace == usr.login:
return [repo_view(repo) for repo in usr.get_repos() if repo.owner.login == namespace]
org = gh_client.get_organization(namespace)
if org is None:
try:
org = gh_client.get_organization(namespace)
if org is None:
return []
except GithubException:
return []
return [repo_view(repo) for repo in org.get_repos(type='member')]
@ -479,8 +482,11 @@ class GithubBuildTrigger(BuildTriggerHandler):
raise TriggerStartException(msg)
def get_branch_sha(branch_name):
branch = repo.get_branch(branch_name)
return branch.commit.sha
try:
branch = repo.get_branch(branch_name)
return branch.commit.sha
except GithubException:
raise TriggerStartException('Could not find branch in repository')
def get_tag_sha(tag_name):
tags = {tag.name: tag for tag in repo.get_tags()}
@ -515,9 +521,21 @@ class GithubBuildTrigger(BuildTriggerHandler):
# This is for GitHub's probing/testing.
if 'zen' in payload:
raise ValidationRequestException()
raise SkipRequestException()
# Lookup the default branch for the repository.
if 'repository' not in payload:
raise ValidationRequestException("Missing 'repository' on request")
if 'owner' not in payload['repository']:
raise ValidationRequestException("Missing 'owner' on repository")
if 'name' not in payload['repository']['owner']:
raise ValidationRequestException("Missing owner 'name' on repository")
if 'name' not in payload['repository']:
raise ValidationRequestException("Missing 'name' on repository")
default_branch = None
lookup_user = None
try: