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
88 lines
2.3 KiB
6 years ago
|
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()
|