def test_download_file__if_buffer_size_explicitly_set__should_call_sdk_once( self, buffer_size): file_data = b'a' * buffer_size self.sdk.get_device_file_data.return_value = file_data obj = ZKAccess(connstr=self.connstr, device_model=ZK400) res = obj.download_file('test_file.dat', buffer_size) assert isinstance(res, io.BytesIO) assert res.getvalue() == file_data self.sdk.get_device_file_data.assert_called_once_with( 'test_file.dat', buffer_size)
def test_download_file__should_download_file_with_default_buffer_size( self): file_data = b'file_data!' self.sdk.get_device_file_data.return_value = file_data obj = ZKAccess(connstr=self.connstr, device_model=ZK400) res = obj.download_file('test_file.dat') assert isinstance(res, io.BytesIO) assert res.getvalue() == file_data self.sdk.get_device_file_data.assert_called_once_with( 'test_file.dat', 1 * 1024 * 1024)
def test_download_file__if_buffer_got_overflowed__should_repeat_with_double_buffer_size( self, data_size): def se(*a, **kw): return file_data[:a[1]] file_data = b'a' * data_size self.sdk.get_device_file_data.side_effect = se obj = ZKAccess(connstr=self.connstr, device_model=ZK400) expect_calls = [ call('test_file.dat', 1 * 1024 * 1024), call('test_file.dat', 2 * 1024 * 1024) ] res = obj.download_file('test_file.dat') self.sdk.get_device_file_data.assert_has_calls(expect_calls) assert isinstance(res, io.BytesIO) assert res.tell() == 0 assert len(res.getvalue()) == len(file_data)