From 27dd2f0593e4a40956bad9e276ad8cba5bbd3d87 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?I=C3=B1aki=20Malerba?= Date: Tue, 28 Nov 2017 21:30:10 -0300 Subject: [PATCH] Add tests to NoradTLESource --- tests/assets/resource.txt | 21 ++++++++++++++ tests/test_sources.py | 58 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 79 insertions(+) create mode 100644 tests/assets/resource.txt diff --git a/tests/assets/resource.txt b/tests/assets/resource.txt new file mode 100644 index 0000000..5c706a2 --- /dev/null +++ b/tests/assets/resource.txt @@ -0,0 +1,21 @@ +SENTINEL-2B +1 42063U 17013A 17331.71087112 .00000039 00000-0 31578-4 0 9999 +2 42063 98.5665 44.2788 0001246 81.9689 278.1635 14.30817052 37994 +ZHUHAI-1 02 (CAS 4B) +1 42759U 17034B 17331.81859828 .00000479 00000-0 43286-4 0 9993 +2 42759 43.0171 108.5919 0009263 289.2526 223.8828 15.09116794 25027 +NUSAT-3 (MILANESAT) +1 42760U 17034C 17332.49069753 .00000991 00000-0 75325-4 0 9998 +2 42760 43.0161 105.1955 0008405 298.8282 137.7431 15.08929193 25132 +ZHUHAI-1 01 (CAS 4A) +1 42761U 17034D 17331.80998697 .00000518 00000-0 45630-4 0 9992 +2 42761 43.0173 108.5355 0009635 290.1227 220.5667 15.09192353 25017 +CARTOSAT-2E +1 42767U 17036C 17331.77194191 .00000774 00000-0 39908-4 0 9998 +2 42767 97.4296 29.1430 0010292 57.9583 302.2650 15.19266595 23928 +SENTINEL-5P +1 42969U 17064A 17331.31970235 -.00000088 00000-0 -20854-4 0 9994 +2 42969 98.7154 268.9294 0000954 60.4649 299.6705 14.19556312 6363 +SKYSAT-C11 +1 42987U 17068A 17331.85574235 .00000855 00000-0 46707-4 0 9992 +2 42987 97.3501 85.2432 0022312 118.6117 241.7364 15.16734296 4089 diff --git a/tests/test_sources.py b/tests/test_sources.py index 4e3fa2d..ad78d25 100644 --- a/tests/test_sources.py +++ b/tests/test_sources.py @@ -25,6 +25,7 @@ import shutil import tempfile import unittest +from requests.exceptions import RequestException from orbit_predictor import sources from orbit_predictor.accuratepredictor import HighAccuracyTLEPredictor @@ -182,3 +183,60 @@ def test_get_last_update(self, mocked_requests): mocked_requests.assert_called_with(url, headers=self.headers) self.assertEqual(tle, self.expected_lines) + +class TestNoradTLESource(unittest.TestCase): + def setUp(self): + self.mock_txt = b'GOKTURK 1A \r\n1 41875U 16073A 17332.47105147 .00000094 00000-0 27523-4 0 9993\r\n2 41875 98.1351 225.1796 0001337 70.3616 289.7724 14.62796168 52313\r\nRESOURCESAT-2A \r\n1 41877U 16074A 17332.46918040 .00000036 00000-0 36250-4 0 9992\r\n2 41877 98.6936 45.7184 0001162 115.7445 244.3855 14.21645136 50623\r\nCARTOSAT-2D \r\n1 41948U 17008A 17331.89174699 .00000681 00000-0 35585-4 0 9995\r\n2 41948 97.4741 31.1262 0007151 20.5044 339.6476 15.19208270 43374\r\nSENTINEL-2B \r\n1 42063U 17013A 17332.41017229 .00000031 00000-0 28432-4 0 9996\r\n2 42063 98.5661 44.9680 0001235 82.8511 277.2813 14.30817061 38090\r\nZHUHAI-1 02 (CAS 4B) \r\n1 42759U 17034B 17332.40391186 .00000468 00000-0 42601-4 0 9995\r\n2 42759 43.0173 105.3798 0009262 292.4612 164.2517 15.09117618 25119\r\nNUSAT-3 (MILANESAT) \r\n1 42760U 17034C 17332.49069753 .00000991 00000-0 75325-4 0 9998\r\n2 42760 43.0161 105.1955 0008405 298.8282 137.7431 15.08929193 25132\r\nZHUHAI-1 01 (CAS 4A) \r\n1 42761U 17034D 17332.46417949 .00000494 00000-0 44138-4 0 9996\r\n2 42761 43.0169 104.9484 0009568 293.2627 175.8187 15.09193142 25115\r\nCARTOSAT-2E \r\n1 42767U 17036C 17331.77194191 .00000774 00000-0 39908-4 0 9998\r\n2 42767 97.4296 29.1430 0010292 57.9583 302.2650 15.19266595 23928\r\nSENTINEL-5P \r\n1 42969U 17064A 17331.88357473 -.00000147 00000-0 -49140-4 0 9994\r\n2 42969 98.7157 269.4842 0000887 63.2664 296.8591 14.19555818 6445\r\nSKYSAT-C11 \r\n1 42987U 17068A 17332.38352858 .00000890 00000-0 48450-4 0 9992\r\n2 42987 97.3501 85.7549 0022336 116.8959 243.4561 15.16735466 4160\r\nSKYSAT-C10 \r\n1 42988U 17068B 17332.38095293 .00000905 00000-0 48925-4 0 9994\r\n2 42988 97.3500 85.7580 0022294 119.1231 241.2238 15.16949729 4163\r\nSKYSAT-C9 \r\n1 42989U 17068C 17332.37848268 .00000930 00000-0 49865-4 0 9994\r\n2 42989 97.3500 85.7610 0022012 121.4467 238.8923 15.17178527 4167\r\nSKYSAT-C8 \r\n1 42990U 17068D 17332.37403557 .00000950 00000-0 50313-4 0 9996\r\n2 42990 97.3500 85.7673 0021907 124.3608 235.9703 15.17567328 4164\r\nSKYSAT-C7 \r\n1 42991U 17068E 17332.37135448 .00000970 00000-0 51078-4 0 9999\r\n2 42991 97.3501 85.7706 0022397 126.9371 233.3919 15.17734630 4165\r\nSKYSAT-C6 \r\n1 42992U 17068F 17332.36747368 .00000986 00000-0 51507-4 0 9993\r\n2 42992 97.3498 85.7743 0022634 128.8620 231.4639 15.17985098 4168\r\n' # NOQA + self.expected_lines = ( + '1 42760U 17034C 17332.49069753 .00000991 00000-0 75325-4 0 9998', + '2 42760 43.0161 105.1955 0008405 298.8282 137.7431 15.08929193 25132' + ) + + self.headers = {'user-agent': 'orbit-predictor', 'Accept': 'text/plain'} + + @patch("requests.get") + def test_load_tle_from_url(self, mocked_requests): + + mocked_response = Mock() + mocked_response.ok = True + mocked_response.content = self.mock_txt + mocked_requests.return_value = mocked_response + + source = sources.NoradTLESource.from_url(url="http://test.none/") + tle = source._get_tle('NUSAT-3', None) + + call_args = mocked_requests.call_args + url = urlparse.urlparse(call_args[0][0]) + url_qs = urlparse.parse_qs(url.query) + + self.assertEqual(call_args[1], {'headers': self.headers}) + self.assertEqual(tle, self.expected_lines) + + @patch("requests.get") + def test_load_tle_from_url_exception(self, mocked_requests): + + mocked_requests.side_effect = RequestException() + self.assertRaises(RequestException, + sources.NoradTLESource.from_url, None) + + def test_load_tle_from_file(self): + test_file = os.path.join( + os.path.dirname(os.path.realpath(__file__)), + "assets", "resource.txt") + + source = sources.NoradTLESource.from_file(filename=test_file) + tle = source._get_tle('NUSAT-3', None) + + self.assertEqual(tle, self.expected_lines) + + def test_get_tle_not_found(self): + test_file = os.path.join( + os.path.dirname(os.path.realpath(__file__)), + "assets", "resource.txt") + + source = sources.NoradTLESource.from_file(filename=test_file) + + self.assertRaises(LookupError, + source._get_tle, 'INEXISTENT-SAT', None) + +