Added unittest for SVN push hook

This commit is contained in:
2016-11-01 12:22:31 +01:00
parent bc58b6d5ac
commit e249f3d062
4 changed files with 47 additions and 3 deletions

View File

@@ -43,4 +43,5 @@ def create_svner_account(email, project_url):
log.error('Unable to find project url=%s', project_url)
return 1
create_service_account(email, [u'svner'], {'svner': {'project': proj['_id']}})
account, token = create_service_account(email, [u'svner'], {'svner': {'project': proj['_id']}})
return account, token

View File

@@ -50,7 +50,8 @@ def obtain(server_location):
@attr.s
class CommitLogObserver(object):
svn_client = attr.ib(default=None,
validator=attr.validators.instance_of(svn.remote.RemoteClient))
validator=attr.validators.optional(
attr.validators.instance_of(svn.remote.RemoteClient)))
last_seen_revision = attr.ib(default=0, validator=attr.validators.instance_of(int))
_log = attrs_extra.log('%s.CommitLogObserver' % __name__)

View File

@@ -84,7 +84,7 @@ def subversion_log(project_url):
return 'Not set up for Attract', 400
svn_server_url = attract_props['svn_url']
log.info('Re-examining SVN server %s', svn_server_url)
log.debug('Receiving commit from SVN server %s', svn_server_url)
log_entry = subversion.create_log_entry(revision=revision,
msg=commit_message,
author=commit_author,

View File

@@ -13,8 +13,11 @@ from dateutil.tz import tzutc
import mock
import svn.common
from pillar.tests import common_test_data as ctd
import logging_config
from attract import subversion
from abstract_attract_test import AbstractAttractTest
SVN_SERVER_URL = 'svn://biserver/agent327'
@@ -187,3 +190,42 @@ class TestCommitLogObserver(unittest.TestCase):
u'børk',
None
))
class PushCommitTest(AbstractAttractTest):
def setUp(self, **kwargs):
AbstractAttractTest.setUp(self, **kwargs)
self.mngr = self.app.pillar_extensions['attract'].task_manager
self.proj_id, self.project = self.ensure_project_exists()
def test_push_happy(self):
from attract import cli
with self.app.test_request_context():
_, token = cli.create_svner_account('svner@example.com', self.project['url'])
blinks = []
def record_blink(sender, **kwargs):
blinks.append(kwargs)
subversion.task_logged.connect(record_blink)
push_data = {
'repo': u'strange-repo™',
'revision': '4',
'msg': u'မြန်မာဘာသာ is beautiful.\n\nThis solves task [T431134]',
'author': 'Haha',
'date': '2016-10-21 17:40:17 +0200',
}
self.post('/attract/api/%s/subversion/log' % self.project['url'],
json=push_data,
auth_token=token['token'])
self.assertEqual(1, len(blinks))
self.assertEqual(u'မြန်မာဘာသာ is beautiful.\n\nThis solves task [T431134]',
blinks[0]['log_entry'].msg)
self.assertEqual(datetime.datetime(2016, 10, 21, 15, 40, 17, 0, tzinfo=tzutc()),
blinks[0]['log_entry'].date)