def test_get_ned_objects_service_error(self): '''Test to see if retrieval of NED objects method behaves as expected''' from object_service.NED import get_ned_data identifiers = ["LMC"] mockdata = { u'NameResolver': u'NED-Egret', u'Copyright': u'(C) 2017 California Institute of Technology', u'Preferred': { u'Name': u'Large Magellanic Cloud' }, u'ResultCode': 10, u'StatusCode': 100 } QUERY_URL = self.app.config.get('OBJECTS_NED_URL') httpretty.register_uri(httpretty.POST, QUERY_URL, content_type='application/json', status=500, body='%s' % json.dumps(mockdata)) result = get_ned_data(identifiers, 'identifiers') expected = { 'Error': 'Unable to get results!', 'Error Info': 'NED returned status 500' } self.assertEqual(result, expected)
def test_get_ned_objects_unknown_object(self): '''Test to see if retrieval of NED objects method behaves as expected''' from object_service.NED import get_ned_data identifiers = map(str, range(4)) def get_mock_data(v, status_code=100): mockdata = {u'NameResolver': u'NED-Egret', u'Copyright': u'(C) 2017 California Institute of Technology', u'Preferred': {u'Name': u'FOO BAR'}} try: mockdata['ResultCode'] = int(v) except: mockdata['ResultCode'] = 0 mockdata['StatusCode'] = status_code return mockdata def request_callback(request, uri, headers): data = request.body v = json.loads(request.body)["name"]["v"] try: return (200, headers, json.dumps(get_mock_data(v))) except: return (200, headers, json.dumps(get_mock_data('0'))) QUERY_URL = self.app.config.get('OBJECTS_NED_URL') httpretty.register_uri( httpretty.POST, QUERY_URL, content_type='application/json', status=200, body=request_callback) result = get_ned_data(identifiers, 'identifiers') expected = {'data': {'3': {'canonical': u'FOO BAR', 'id': '3'}}, 'skipped': ['0','1','2']} self.assertEqual(result, expected)
def test_ned_unknown_inputtype(self): '''Test to see if unknown input type works properly''' from object_service.NED import get_ned_data identifiers = ['NGC_1234','Abell_678'] result = get_ned_data(identifiers, 'foo') expected = {'Error': 'Unable to get results!', 'Error Info': 'Unknown input type specified!'} self.assertDictEqual(result, expected)
def test_ned_simple_query(self): '''Test to see if the "simple" input type works properly''' from object_service.NED import get_ned_data identifiers = ['NGC_1234','Abell_678'] result = get_ned_data(identifiers, 'simple') expected = {'data': {'Abell_678': {'canonical': 'Abell 678', 'id': 'Abell_678'}, 'NGC_1234': {'canonical': 'NGC 1234', 'id': 'NGC_1234'}}, 'skipped':[] } self.assertDictEqual(result, expected)
def test_do_ned_query_objects_exception(self): '''Test to see if single NED query hrows proper exception at timeout''' from object_service.NED import get_ned_data def exceptionCallback(request, uri, headers): raise Exception('Oops! Something went boink!') identifiers = ['FOO_BAR'] QUERY_URL = self.app.config.get('OBJECTS_NED_URL') httpretty.register_uri( httpretty.POST, QUERY_URL, body=exceptionCallback) result = get_ned_data(identifiers, "objects") expected = {'Error': 'Unable to get results!', 'Error Info': 'NED request failed (Oops! Something went boink!)'} self.assertDictEqual(result, expected)
def test_do_ned_query_objects_readtimeout(self): '''Test to see if single NED query throws proper exception at timeout''' from object_service.NED import get_ned_data def exceptionCallback(request, uri, headers): raise ReadTimeout('Connection timed out.') identifiers = ['FOO_BAR'] self.app.config['OBJECTS_NED_TIMEOUT'] = 0.1 QUERY_URL = self.app.config.get('OBJECTS_NED_URL') httpretty.register_uri( httpretty.POST, QUERY_URL, body=exceptionCallback) result = get_ned_data(identifiers, "objects") expected = {'Error': 'Unable to get results!', 'Error Info': 'NED request timed out: Connection timed out.'} self.assertDictEqual(result, expected)