def test_get_object(self): api = self.get_api() with mock.patch.object(api, 'list_objects') as mock_list: mock_list.return_value = [ { 'id': '1', 'title': 'urpoint' }, { 'id': '2', 'title': 'mypoint' }, ] # Get in JSON format obj = api.get_object('waypoint', 'mypoint') self.assertEqual(self.requests.get.return_value.json.return_value, obj) self.requests.get.assert_called_once_with( apiclient.gurl('api', 'objects', 'waypoint', '2')) self.requests.get.reset_mock() # Get in GPX format obj = api.get_object('waypoint', 'mypoint', fmt='gpx') self.assertEqual(self.requests.get.return_value.content, obj) self.requests.get.assert_called_once_with( apiclient.gurl('api', 'objects', 'waypoint', '2.gpx'))
def test_remove_object_from_folder(self): api = self.get_api() with mock.patch.object(api, 'list_objects') as mock_list: self.requests.put.return_value.status_code = 201 mock_list.return_value = [ {'id': 'folder1', 'name': 'My Folder', 'waypoints': ['2'], 'children': ['folder2']}, {'id': 'folder2', 'name': 'Other Folder'}, ] # Remove a waypoint folder = api.remove_object_from_folder('folder1', 'waypoint', '2') self.assertEqual(self.requests.put.return_value.json.return_value, folder) self.requests.put.assert_called_once_with( apiclient.gurl('api', 'objects', 'folder', 'folder1'), json={'id': 'folder1', 'name': 'My Folder', 'children': ['folder2'], 'waypoints': []}) self.requests.put.reset_mock() # Remove a folder folder = api.remove_object_from_folder( 'folder1', 'folder', 'folder2') self.assertEqual(self.requests.put.return_value.json.return_value, folder) self.requests.put.assert_called_once_with( apiclient.gurl('api', 'objects', 'folder', 'folder1'), json={'id': 'folder1', 'name': 'My Folder', 'children': [], 'waypoints': []})
def test_delete_object(self): api = self.get_api() r = api.delete_object('waypoint', '1') self.assertIsNone(r) self.requests.delete.assert_called_once_with( apiclient.gurl('api', 'objects', 'waypoint', '1'))
def test_login(self, mock_test_auth): mock_test_auth.return_value = False self.requests.post.return_value.status_code = 200 self.requests.post.return_value.url = '/something' apiclient.GaiaClient('foo', 'bar') self.requests.post.assert_called_once_with( apiclient.gurl('login'), data={'username': '******', 'password': '******', 'next': '/'})
def test_create_object(self): api = self.get_api() obj = api.create_object('waypoint', {'name': 'foo'}) self.assertEqual(self.requests.post.return_value.json.return_value, obj) self.requests.post.assert_called_once_with(apiclient.gurl( 'api', 'objects', 'waypoint'), json={'name': 'foo'})
def test_set_objects_archive(self): api = self.get_api() self.requests.put.return_value.status_code = 200 r = api.set_objects_archive('waypoint', ['1', '2'], False) self.assertTrue(r) self.requests.put.assert_called_once_with( apiclient.gurl('api', 'objects', 'waypoint'), json={'deleted': False, 'waypoint': ['1', '2']}) self.requests.put.reset_mock() self.requests.put.return_value.status_code = 400 r = api.set_objects_archive('waypoint', ['1', '2'], True) self.assertFalse(r) self.requests.put.assert_called_once_with( apiclient.gurl('api', 'objects', 'waypoint'), json={'deleted': True, 'waypoint': ['1', '2']})
def test_login(self, mock_test_auth): mock_test_auth.return_value = False self.requests.post.return_value.status_code = 200 self.requests.post.return_value.url = '/something' apiclient.GaiaClient('foo', 'bar') self.requests.post.assert_called_once_with( apiclient.gurl('register/addDevice'), data={ 'email': 'foo', 'password': '******' })
def test_list_objects(self): api = self.get_api() expected_params = { 'count': '5000', 'page': '1', 'routepoints': 'false', 'show_archived': 'true', 'show_filed': 'true', 'sort_direction': 'desc', 'sort_field': 'create_date', } api.list_objects('waypoint') self.requests.get.assert_called_once_with( apiclient.gurl('api', 'objects', 'waypoint'), params=expected_params) self.requests.get.reset_mock() expected_params['show_archived'] = 'false' api.list_objects('waypoint', archived=False) self.requests.get.assert_called_once_with( apiclient.gurl('api', 'objects', 'waypoint'), params=expected_params)
def test_upload(self, mock_open): api = self.get_api() self.requests.post.return_value.url = '/foo/newfolderid/' with mock.patch.object(api, 'get_object') as mock_get: folder = api.upload_file('path/to/foo.gpx') self.assertEqual(mock_get.return_value, folder) mock_get.assert_called_once_with('folder', id_='newfolderid') self.requests.post.assert_called_once_with( apiclient.gurl('upload'), files={'files': mock_open.return_value}, data={'name': 'foo.gpx'}, allow_redirects=True) mock_open.assert_called_once_with('path/to/foo.gpx', 'rb')
def default(self, args): method = getattr(self.client.s, args.method.lower()) r = method(apiclient.gurl(*args.path.split('/')), params=dict(x.split('=', 1) for x in args.args)) if not args.quiet: print('HTTP %i %s' % (r.status_code, r.reason)) for h in r.headers: print('%s: %s' % (h, r.headers[h])) print() if 'json' in r.headers.get('Content-Type', ''): pprint.pprint(r.json()) else: print(r.content)
def test_put_object(self): api = self.get_api() self.requests.put.return_value.status_code = 201 obj = api.put_object('waypoint', {'name': 'foo', 'id': '1'}) self.assertEqual(self.requests.put.return_value.json.return_value, obj) self.requests.put.assert_called_once_with( apiclient.gurl('api', 'objects', 'waypoint', '1'), json={'name': 'foo', 'id': '1'}) self.requests.put.return_value.status_code = 202 obj = api.put_object('waypoint', {'name': 'foo', 'id': '1'}) self.assertTrue(obj) self.requests.put.return_value.status_code = 400 obj = api.put_object('waypoint', {'name': 'foo', 'id': '1'}) self.assertIsNone(obj)
def test_gurl(self): self.assertEqual('https://www.gaiagps.com/a/b/', apiclient.gurl('a', 'b')) self.assertEqual('https://www.gaiagps.com/a/b/c/', apiclient.gurl('a/', '/b', '/c/'))