Exemplo n.º 1
0
class DefaultTestCase(unittest.TestCase):
    def setUp(self):
        self.baidupan = BaiduPan()
        self.request_patcher = patch("baidupan.baidupan.BaiduPan._request")
        self.mock_request = self.request_patcher.start()

    def tearDown(self):
        self.request_patcher.stop()

    def test_version(self):
        self.assertIsNotNone(baidupan.__version__, '0.0.1')

    @patch("__builtin__.open")
    def test_upload(self, mock_open):
        mock_open.return_value.read.return_value = "hulahoop"
        self.baidupan.upload({"keyword": "hulahoop"})
        self.assertEqual(self.mock_request.call_args,
                         call(file='hulahoop',
                              filename={'keyword': 'hulahoop'}))

    def test_merge(self):
        self.baidupan.merge('path', 'param', keyword="hulahoop")
        self.assertEqual(self.mock_request.call_args, call(keyword='hulahoop',
                                                           param='param',
                                                           path='path'))

    def test_similar_path_functions(self):
        for method in ('download', 'mkdir', 'meta'):
            getattr(self.baidupan, method)('path', keyword='hulahoop')
            self.assertEqual(self.mock_request.call_args,
                         call(keyword='hulahoop', path='path'))

    def test_similar_param_functions(self):
        for method in ('mmv', 'mmeta'):
            getattr(self.baidupan, method)('param', keyword='hulahoop')
            self.assertEqual(self.mock_request.call_args,
                         call(keyword='hulahoop', param='param'))

    def test_mv_cp(self):
        for method in ('mv', 'cp'):
            getattr(self.baidupan, method)('from_path',
                                           'to_path',
                                           keyword='hulahoop')
            self.assertEqual(self.mock_request.call_args,
                         call(keyword='hulahoop',
                              from_path='from_path',
                              to='to_path'))

    @patch("requests.post")
    @patch("requests.get")
    def test_private_request(self, mock_get, mock_post):
        # Disable the earlier patch on _request to properly test it.
        self.request_patcher.stop()
        baidupan = BaiduPan()
        baidupan.base_url = 'base_url'
        baidupan.urlpath = 'urlpath'
        baidupan.method = 'method'
        baidupan.access_token = 'access_token'
        baidupan._method = "GET"
        mock_get.return_value.content = 'hulahoop'
        result = baidupan._request(headers='headers',
                                   file='file1',
                                   filename='file1',
                                   from_path='from_path',
                                   content_length='content_length',
                                   content_md5='content_md5',
                                   slice_md5='slice_md5',
                                   content_crc32='content_crc32')
        self.assertTrue(mock_get.call_args, call('base_urlurlpath', headers='headers',
                                                 params={'slice-md5': 'slice_md5',
                                                         'content-length': 'content_length',
                                                         'from': 'from_path',
                                                         'access_token': 'access_token',
                                                         'filename': 'file1',
                                                         'content-crc32': 'content_crc32',
                                                         'content-md5': 'content_md5',
                                                         'method': 'method'}))
        self.assertEqual(result, 'hulahoop')
        mock_post.return_value.content = 'hulahoop'
        baidupan._method = "POST"
        result_post = baidupan._request(headers='headers',
                                        file='file1',
                                        filename='file1',
                                        from_path='from_path',
                                        content_length='content_length',
                                        content_md5='content_md5',
                                        slice_md5='slice_md5',
                                        content_crc32='content_crc32')
        self.assertEqual(mock_post.call_args, call('base_urlurlpath', files={'files': ('file1', 'file1')},
                                                   headers='headers',
                                                   params={'slice-md5': 'slice_md5',
                                                           'content-length': 'content_length',
                                                           'from': 'from_path',
                                                           'access_token': 'access_token',
                                                           'filename': 'file1',
                                                           'content-crc32': 'content_crc32',
                                                           'content-md5': 'content_md5',
                                                           'method': 'method'}))
        self.assertEqual(result_post, 'hulahoop')
        baidupan.payload = 'payload'
        baidupan.files = None
        mock_post.reset_mock()
        result_payload = baidupan._request(headers='headers')
        self.assertEqual(mock_post.call_args, call('base_urlurlpath', data='payload',
                                                   headers='headers',
                                                   params={'slice-md5': 'slice_md5',
                                                           'content-length': 'content_length',
                                                           'from': 'from_path',
                                                           'access_token': 'access_token',
                                                           'filename': 'file1',
                                                           'content-crc32': 'content_crc32',
                                                           'content-md5': 'content_md5',
                                                           'method': 'method'}))
        self.assertEqual(result_payload, 'hulahoop')
        baidupan._method = 'not allowed'
        with self.assertRaises(Exception):
            baidupan._request(headers="headers")
        self.request_patcher.start()
Exemplo n.º 2
0
 access_token = ''
 disk = BaiduPan(access_token)
 #quota
 print disk.quota()
 #upload
 print disk.upload('hello', path='/apps/appname/hello.txt')
 #merge
 '''
 def merge(self, path, param, **kw):
     self.urlpath = 'file'
     self.method = 'createsuperfile'
     self._method = 'POST'
     return self._request(path=path, param=param, **kw)
 '''
 param = ''
 print disk.merge('/apps/appname/hello.txt', param=param)
 #download
 print disk.download(path='/apps/appname/hello.txt')
 #mkdir
 print disk.mkdir('/apps/appname/dirname')
 #meta
 print disk.meta('/apps/appname/filename')
 #mmeta
 print disk.mmeta(json.dumps({"list": [{"path": "/apps/appname/"}]}))
 #ls
 print disk.ls("/apps/appname/")
 #mv
 print disk.mv("/apps/appname/hello.txt", "/apps/appname/hello.txt.bak")
 #mmv
 par = {"list": [{"from": "/apps/appname/hello.txt.bak",
                  "to": "/apps/appname/hello.txt.bak.bak"},
Exemplo n.º 3
0
 access_token = ''
 disk = BaiduPan(access_token)
 #quota
 print disk.quota()
 #upload
 print disk.upload('hello', path='/apps/appname/hello.txt')
 #merge
 '''
 def merge(self, path, param, **kw):
     self.urlpath = 'file'
     self.method = 'createsuperfile'
     self._method = 'POST'
     return self._request(path=path, param=param, **kw)
 '''
 param = ''
 print disk.merge('/apps/appname/hello.txt', param=param)
 #download
 print disk.download(path='/apps/appname/hello.txt')
 print disk.download(path='/apps/appname/hello.txt',
                     headers={"Range": "Range: bytes:1-100"})
 #mkdir
 print disk.mkdir('/apps/appname/dirname')
 #meta
 print disk.meta('/apps/appname/filename')
 #mmeta
 print disk.mmeta(json.dumps({"list": [{"path": "/apps/appname/"}]}))
 #ls
 print disk.ls("/apps/appname/")
 #mv
 print disk.mv("/apps/appname/hello.txt", "/apps/appname/hello.txt.bak")
 #mmv
Exemplo n.º 4
0
class DefaultTestCase(unittest.TestCase):
    def setUp(self):
        self.baidupan = BaiduPan()
        self.request_patcher = patch("baidupan.baidupan.BaiduPan._request")
        self.mock_request = self.request_patcher.start()

    def tearDown(self):
        self.request_patcher.stop()

    def test_version(self):
        self.assertIsNotNone(baidupan.__version__, '0.0.1')

    @patch("__builtin__.open")
    def test_upload(self, mock_open):
        mock_open.return_value.read.return_value = "hulahoop"
        self.baidupan.upload({"keyword": "hulahoop"})
        self.assertEqual(
            self.mock_request.call_args,
            call(file='hulahoop', filename={'keyword': 'hulahoop'}))

    def test_merge(self):
        self.baidupan.merge('path', 'param', keyword="hulahoop")
        self.assertEqual(self.mock_request.call_args,
                         call(keyword='hulahoop', param='param', path='path'))

    def test_similar_path_functions(self):
        for method in ('download', 'mkdir', 'meta'):
            getattr(self.baidupan, method)('path', keyword='hulahoop')
            self.assertEqual(self.mock_request.call_args,
                             call(keyword='hulahoop', path='path'))

    def test_similar_param_functions(self):
        for method in ('mmv', 'mmeta'):
            getattr(self.baidupan, method)('param', keyword='hulahoop')
            self.assertEqual(self.mock_request.call_args,
                             call(keyword='hulahoop', param='param'))

    def test_mv_cp(self):
        for method in ('mv', 'cp'):
            getattr(self.baidupan, method)('from_path',
                                           'to_path',
                                           keyword='hulahoop')
            self.assertEqual(
                self.mock_request.call_args,
                call(keyword='hulahoop', from_path='from_path', to='to_path'))

    @patch("requests.post")
    @patch("requests.get")
    def test_private_request(self, mock_get, mock_post):
        # Disable the earlier patch on _request to properly test it.
        self.request_patcher.stop()
        baidupan = BaiduPan()
        baidupan.base_url = 'base_url'
        baidupan.urlpath = 'urlpath'
        baidupan.method = 'method'
        baidupan.access_token = 'access_token'
        baidupan._method = "GET"
        mock_get.return_value.content = 'hulahoop'
        result = baidupan._request(headers='headers',
                                   file='file1',
                                   filename='file1',
                                   from_path='from_path',
                                   content_length='content_length',
                                   content_md5='content_md5',
                                   slice_md5='slice_md5',
                                   content_crc32='content_crc32')
        self.assertTrue(
            mock_get.call_args,
            call('base_urlurlpath',
                 headers='headers',
                 params={
                     'slice-md5': 'slice_md5',
                     'content-length': 'content_length',
                     'from': 'from_path',
                     'access_token': 'access_token',
                     'filename': 'file1',
                     'content-crc32': 'content_crc32',
                     'content-md5': 'content_md5',
                     'method': 'method'
                 }))
        self.assertEqual(result, 'hulahoop')
        mock_post.return_value.content = 'hulahoop'
        baidupan._method = "POST"
        result_post = baidupan._request(headers='headers',
                                        file='file1',
                                        filename='file1',
                                        from_path='from_path',
                                        content_length='content_length',
                                        content_md5='content_md5',
                                        slice_md5='slice_md5',
                                        content_crc32='content_crc32')
        self.assertEqual(
            mock_post.call_args,
            call('base_urlurlpath',
                 files={'files': ('file1', 'file1')},
                 headers='headers',
                 params={
                     'slice-md5': 'slice_md5',
                     'content-length': 'content_length',
                     'from': 'from_path',
                     'access_token': 'access_token',
                     'filename': 'file1',
                     'content-crc32': 'content_crc32',
                     'content-md5': 'content_md5',
                     'method': 'method'
                 }))
        self.assertEqual(result_post, 'hulahoop')
        baidupan.payload = 'payload'
        baidupan.files = None
        mock_post.reset_mock()
        result_payload = baidupan._request(headers='headers')
        self.assertEqual(
            mock_post.call_args,
            call('base_urlurlpath',
                 data='payload',
                 headers='headers',
                 params={
                     'slice-md5': 'slice_md5',
                     'content-length': 'content_length',
                     'from': 'from_path',
                     'access_token': 'access_token',
                     'filename': 'file1',
                     'content-crc32': 'content_crc32',
                     'content-md5': 'content_md5',
                     'method': 'method'
                 }))
        self.assertEqual(result_payload, 'hulahoop')
        baidupan._method = 'not allowed'
        with self.assertRaises(Exception):
            baidupan._request(headers="headers")
        self.request_patcher.start()