def test_api_send_file(self, mock_url, mock_creds, mock_config, mock_put):
        """Test send_file"""

        _callback = mock.Mock()
        _api = BatchAppsApi(mock_creds, mock_config)
        mock_url.return_value = "https://test.com"

        val = _api.send_file("file")
        self.assertFalse(mock_url.called)
        self.assertFalse(val.success)

        test_file = mock.create_autospec(UserFile)
        test_file.path = "c:\\file.txt"
        val = _api.send_file(test_file)
        self.assertTrue(test_file.create_query_specifier.called)
        spec = {"timestamp": mock.ANY, "originalFilePath": mock.ANY}
        mock_put.assert_called_with(
            mock_creds, "https://test.com", self.headers, test_file, spec, block_size=4096, callback=None
        )
        self.assertTrue(val.success)
        test_file.create_query_specifier.side_effect = FileMissingException("no file")
        val = _api.send_file(test_file)
        self.assertFalse(val.success)
        self.assertEqual(val.result, test_file.create_query_specifier.side_effect)

        test_file.create_query_specifier.side_effect = None
        mock_put.side_effect = RestCallException(None, "test", None)
        val = _api.send_file(test_file, callback=_callback, block=1)
        self.assertFalse(val.success)
        mock_put.assert_called_with(
            mock_creds, "https://test.com", self.headers, test_file, spec, block_size=1, callback=_callback
        )
    def test_api_send_file(self, mock_url, mock_creds, mock_config, mock_put):
        """Test send_file"""

        _callback = mock.Mock()
        _api = BatchAppsApi(mock_creds, mock_config)
        mock_url.return_value = "https://test.com"

        val = _api.send_file("file")
        self.assertFalse(mock_url.called)
        self.assertFalse(val.success)

        test_file = mock.create_autospec(UserFile)
        test_file.path = "c:\\file.txt"
        val = _api.send_file(test_file)
        self.assertTrue(test_file.create_query_specifier.called)
        spec = {"timestamp": mock.ANY, "originalFilePath": mock.ANY}
        mock_put.assert_called_with(mock_creds,
                                    "https://test.com",
                                    self.headers,
                                    test_file,
                                    spec,
                                    block_size=4096,
                                    callback=None)
        self.assertTrue(val.success)
        test_file.create_query_specifier.side_effect = FileMissingException(
            "no file")
        val = _api.send_file(test_file)
        self.assertFalse(val.success)
        self.assertEqual(val.result,
                         test_file.create_query_specifier.side_effect)

        test_file.create_query_specifier.side_effect = None
        mock_put.side_effect = RestCallException(None, "test", None)
        val = _api.send_file(test_file, callback=_callback, block=1)
        self.assertFalse(val.success)
        mock_put.assert_called_with(mock_creds,
                                    "https://test.com",
                                    self.headers,
                                    test_file,
                                    spec,
                                    block_size=1,
                                    callback=_callback)