2016-09-14 20:48:17 +00:00
|
|
|
import unittest
|
|
|
|
|
2016-09-21 18:37:23 +00:00
|
|
|
from endpoints.notificationevent import BuildSuccessEvent, NotificationEvent
|
2016-09-14 20:48:17 +00:00
|
|
|
from util.morecollections import AttrDict
|
|
|
|
|
2016-09-21 18:37:23 +00:00
|
|
|
class TestCreate(unittest.TestCase):
|
|
|
|
def test_create_notifications(self):
|
|
|
|
self.assertIsNotNone(NotificationEvent.get_event('repo_push'))
|
|
|
|
self.assertIsNotNone(NotificationEvent.get_event('build_queued'))
|
|
|
|
self.assertIsNotNone(NotificationEvent.get_event('build_success'))
|
|
|
|
self.assertIsNotNone(NotificationEvent.get_event('build_failure'))
|
|
|
|
self.assertIsNotNone(NotificationEvent.get_event('build_start'))
|
|
|
|
|
|
|
|
|
2016-09-14 20:48:17 +00:00
|
|
|
class TestShouldPerform(unittest.TestCase):
|
2016-09-21 18:59:01 +00:00
|
|
|
def test_build_emptyjson(self):
|
|
|
|
notification_data = AttrDict({
|
|
|
|
'event_config_json': None,
|
|
|
|
})
|
|
|
|
|
|
|
|
# No build data at all.
|
|
|
|
self.assertTrue(BuildSuccessEvent().should_perform({}, notification_data))
|
|
|
|
|
2016-09-14 20:48:17 +00:00
|
|
|
def test_build_nofilter(self):
|
|
|
|
notification_data = AttrDict({
|
|
|
|
'event_config_json': '{}',
|
|
|
|
})
|
|
|
|
|
|
|
|
# No build data at all.
|
|
|
|
self.assertTrue(BuildSuccessEvent().should_perform({}, notification_data))
|
|
|
|
|
|
|
|
# With trigger metadata but no ref.
|
|
|
|
self.assertTrue(BuildSuccessEvent().should_perform({
|
|
|
|
'trigger_metadata': {},
|
|
|
|
}, notification_data))
|
|
|
|
|
|
|
|
# With trigger metadata and a ref.
|
|
|
|
self.assertTrue(BuildSuccessEvent().should_perform({
|
|
|
|
'trigger_metadata': {
|
|
|
|
'ref': 'refs/heads/somebranch',
|
|
|
|
},
|
|
|
|
}, notification_data))
|
|
|
|
|
|
|
|
|
|
|
|
def test_build_emptyfilter(self):
|
|
|
|
notification_data = AttrDict({
|
|
|
|
'event_config_json': '{"ref-regex": ""}',
|
|
|
|
})
|
|
|
|
|
|
|
|
# No build data at all.
|
|
|
|
self.assertTrue(BuildSuccessEvent().should_perform({}, notification_data))
|
|
|
|
|
|
|
|
# With trigger metadata but no ref.
|
|
|
|
self.assertTrue(BuildSuccessEvent().should_perform({
|
|
|
|
'trigger_metadata': {},
|
|
|
|
}, notification_data))
|
|
|
|
|
|
|
|
# With trigger metadata and a ref.
|
|
|
|
self.assertTrue(BuildSuccessEvent().should_perform({
|
|
|
|
'trigger_metadata': {
|
|
|
|
'ref': 'refs/heads/somebranch',
|
|
|
|
},
|
|
|
|
}, notification_data))
|
|
|
|
|
|
|
|
|
|
|
|
def test_build_invalidfilter(self):
|
|
|
|
notification_data = AttrDict({
|
|
|
|
'event_config_json': '{"ref-regex": "]["}',
|
|
|
|
})
|
|
|
|
|
|
|
|
# No build data at all.
|
|
|
|
self.assertFalse(BuildSuccessEvent().should_perform({}, notification_data))
|
|
|
|
|
|
|
|
# With trigger metadata but no ref.
|
|
|
|
self.assertFalse(BuildSuccessEvent().should_perform({
|
|
|
|
'trigger_metadata': {},
|
|
|
|
}, notification_data))
|
|
|
|
|
|
|
|
# With trigger metadata and a ref.
|
|
|
|
self.assertFalse(BuildSuccessEvent().should_perform({
|
|
|
|
'trigger_metadata': {
|
|
|
|
'ref': 'refs/heads/somebranch',
|
|
|
|
},
|
|
|
|
}, notification_data))
|
|
|
|
|
|
|
|
|
|
|
|
def test_build_withfilter(self):
|
|
|
|
notification_data = AttrDict({
|
|
|
|
'event_config_json': '{"ref-regex": "refs/heads/master"}',
|
|
|
|
})
|
|
|
|
|
|
|
|
# No build data at all.
|
|
|
|
self.assertFalse(BuildSuccessEvent().should_perform({}, notification_data))
|
|
|
|
|
|
|
|
# With trigger metadata but no ref.
|
|
|
|
self.assertFalse(BuildSuccessEvent().should_perform({
|
|
|
|
'trigger_metadata': {},
|
|
|
|
}, notification_data))
|
|
|
|
|
|
|
|
# With trigger metadata and a not-matching ref.
|
|
|
|
self.assertFalse(BuildSuccessEvent().should_perform({
|
|
|
|
'trigger_metadata': {
|
|
|
|
'ref': 'refs/heads/somebranch',
|
|
|
|
},
|
|
|
|
}, notification_data))
|
|
|
|
|
|
|
|
# With trigger metadata and a matching ref.
|
|
|
|
self.assertTrue(BuildSuccessEvent().should_perform({
|
|
|
|
'trigger_metadata': {
|
|
|
|
'ref': 'refs/heads/master',
|
|
|
|
},
|
|
|
|
}, notification_data))
|
|
|
|
|
|
|
|
|
|
|
|
def test_build_withwildcardfilter(self):
|
|
|
|
notification_data = AttrDict({
|
|
|
|
'event_config_json': '{"ref-regex": "refs/heads/.+"}',
|
|
|
|
})
|
|
|
|
|
|
|
|
# No build data at all.
|
|
|
|
self.assertFalse(BuildSuccessEvent().should_perform({}, notification_data))
|
|
|
|
|
|
|
|
# With trigger metadata but no ref.
|
|
|
|
self.assertFalse(BuildSuccessEvent().should_perform({
|
|
|
|
'trigger_metadata': {},
|
|
|
|
}, notification_data))
|
|
|
|
|
|
|
|
# With trigger metadata and a not-matching ref.
|
|
|
|
self.assertFalse(BuildSuccessEvent().should_perform({
|
|
|
|
'trigger_metadata': {
|
|
|
|
'ref': 'refs/tags/sometag',
|
|
|
|
},
|
|
|
|
}, notification_data))
|
|
|
|
|
|
|
|
# With trigger metadata and a matching ref.
|
|
|
|
self.assertTrue(BuildSuccessEvent().should_perform({
|
|
|
|
'trigger_metadata': {
|
|
|
|
'ref': 'refs/heads/master',
|
|
|
|
},
|
|
|
|
}, notification_data))
|
|
|
|
|
|
|
|
# With trigger metadata and another matching ref.
|
|
|
|
self.assertTrue(BuildSuccessEvent().should_perform({
|
|
|
|
'trigger_metadata': {
|
|
|
|
'ref': 'refs/heads/somebranch',
|
|
|
|
},
|
|
|
|
}, notification_data))
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
unittest.main()
|
|
|
|
|