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)
|
log.error('Unable to find project url=%s', project_url)
|
||||||
return 1
|
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
|
@attr.s
|
||||||
class CommitLogObserver(object):
|
class CommitLogObserver(object):
|
||||||
svn_client = attr.ib(default=None,
|
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))
|
last_seen_revision = attr.ib(default=0, validator=attr.validators.instance_of(int))
|
||||||
_log = attrs_extra.log('%s.CommitLogObserver' % __name__)
|
_log = attrs_extra.log('%s.CommitLogObserver' % __name__)
|
||||||
|
|
||||||
|
@@ -84,7 +84,7 @@ def subversion_log(project_url):
|
|||||||
return 'Not set up for Attract', 400
|
return 'Not set up for Attract', 400
|
||||||
|
|
||||||
svn_server_url = attract_props['svn_url']
|
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,
|
log_entry = subversion.create_log_entry(revision=revision,
|
||||||
msg=commit_message,
|
msg=commit_message,
|
||||||
author=commit_author,
|
author=commit_author,
|
||||||
|
@@ -13,8 +13,11 @@ from dateutil.tz import tzutc
|
|||||||
import mock
|
import mock
|
||||||
import svn.common
|
import svn.common
|
||||||
|
|
||||||
|
from pillar.tests import common_test_data as ctd
|
||||||
|
|
||||||
import logging_config
|
import logging_config
|
||||||
from attract import subversion
|
from attract import subversion
|
||||||
|
from abstract_attract_test import AbstractAttractTest
|
||||||
|
|
||||||
SVN_SERVER_URL = 'svn://biserver/agent327'
|
SVN_SERVER_URL = 'svn://biserver/agent327'
|
||||||
|
|
||||||
@@ -187,3 +190,42 @@ class TestCommitLogObserver(unittest.TestCase):
|
|||||||
u'børk',
|
u'børk',
|
||||||
None
|
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