Added unittest for SVN push hook
This commit is contained in:
@@ -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
|
||||
|
@@ -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__)
|
||||
|
||||
|
@@ -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,
|
||||
|
@@ -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)
|
||||
|
Reference in New Issue
Block a user