diff --git a/test/WebService_test.py b/test/WebService_test.py new file mode 100644 index 0000000000000000000000000000000000000000..f72f7f590a32d04c7d20d292edfd67dfff0fa440 --- /dev/null +++ b/test/WebService_test.py @@ -0,0 +1,77 @@ +"""Tests for WebService.py""" + +from nose.tools import assert_equals +import sys +from webtest import TestApp + +from geomagio.edge import EdgeFactory +from geomagio.WebService import WebService + + +app = TestApp(WebService(EdgeFactory())) + + +def test_bad_requests(): + """WebService_test.test_bad_requests() + """ + # Check bad request (values) + bad_values = [ + '/', + '/?id=bad', + '/?id=BOU&starttime=2017-50-50', + '/?id=BOU&starttime=2016-06-06&endtime=2017-50-50', + '/?id=BOU&starttime=2016-06-06&endtime=2016-06-05', + '/?id=BOU&elements=H,E,D,Z,F', + '/?id=BOU&type=bad', + '/?id=BOU&format=bad' + ] + for bad_val in bad_values: + try: + response = app.get(bad_val, expect_errors=True) + assert_equals(response.status_int, 400) + except Exception: + exception = sys.exc_info()[1] + message = exception.args[0] + print('FAIL: ' + message + '\nrequest = ' + bad_val) + # Check bad request (duplicates) + duplicate_values = [ + '/?id=BOU&id=BOU', + '/?id=BOU&starttime=2016-06-06&starttime=2016-06-06', + '/?id=BOU&endtime=2017-50-50&endtime=2017-50-50', + '/?id=BOU&elements=H,E,Z&elements=H,E,Z', + '/?id=BOU&type=variation&type=variation', + '/?id=BOU&format=iaga2002&format=iaga2002' + ] + for duplicate in duplicate_values: + try: + response = app.get(duplicate, expect_errors=True) + assert_equals(response.status_int, 400) + except Exception: + exception = sys.exc_info()[1] + message = exception.args[0] + print('FAIL: ' + message + '\nrequest = ' + duplicate) + +def test_good_requests(): + """WebService_test.test_good_requests() + """ + # Check for upper and lower case + good_requests = [ + '/?id=BOU', + '/?id=bou', + '/?id=bou&starttime=2016-06-06', + '/?id=bou&starttime=2016-06-06&endtime=2016-06-07', + '/?id=bou&elements=H,E,Z,F', + '/?id=bou&elements=h,e,z,f', + '/?id=BOU&type=variation', + '/?id=BOU&type=VARIATION', + '/?id=BOU&format=iaga2002', + '/?id=BOU&format=IAGA2002' + ] + for request in good_requests: + try: + response = app.get(request) + assert_equals(response.status_int, 200) + except Exception: + exception = sys.exc_info()[1] + message = exception.args[0] + print('FAIL: ' + message + '\nrequest = ' + request)