You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

88 lines
2.3 KiB

import unittest
from utils import WebhookTestCaseBase
class WebhookTestCase(WebhookTestCaseBase):
test_case = None
test_name = None
def set_test_case(self, test_case, test_name):
self.test_case = test_case
self.test_name = test_name
def shortDescription(self):
return self.test_name[:-15]
def runTest(self):
import requests
import json
# GAD configuration for this test case
config = {
'http-port': 0,
'https-enabled': False,
'wss-enabled': False,
'web-ui-require-https': False,
'intercept-stdout': False,
'log-level': 'ERROR',
'repositories': []
}
if 'url' in self.test_case['config']:
config['repositories'].append(self.test_case['config'])
# Start GAD instance
self.start_gad(config)
# Send webhook request
session = requests.session()
response = requests.post('http://localhost:%s/' % self.gad_port(), data=json.dumps(self.test_case['payload']), headers=self.test_case['headers'])
# Verify response status
self.assertEqual(response.status_code, self.test_case['expected']['status'])
# Compare results
#if 'data' in self.test_case['expected']:
# actual = json.dumps(response.json())
# expected = json.dumps(self.test_case['expected']['data'])
# self.assertEqual(actual, expected)
# Wait for GAD to handle the request
self.await_gad()
def suite():
import os
import json
suite = unittest.TestSuite()
# Look for test cases in samples dir
samples_dir = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'samples')
for item in os.listdir(samples_dir):
if not item[-15:] == '.test-case.json':
continue
file = open(os.path.join(samples_dir, item), 'r')
test_case = json.loads(file.read())
t = WebhookTestCase()
t.set_test_case(test_case, item)
suite.addTest(t)
return suite
def main():
from unittest import TestResult
#result = TestResult()
#suite().run(result)
#unittest.main()
#print result
s = suite()
result = unittest.TextTestRunner(verbosity=2).run(s)
if __name__ == '__main__':
main()