Пример #1
0
    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'))
Пример #2
0
    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': []})
Пример #3
0
    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'))
Пример #4
0
 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': '/'})
Пример #5
0
    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'})
Пример #6
0
    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']})
Пример #7
0
 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': '******'
         })
Пример #8
0
    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)
Пример #9
0
    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')
Пример #10
0
    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)
Пример #11
0
    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)
Пример #12
0
 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/'))