static void test_openfile(HINTERNET hFtp, HINTERNET hConnect) { HINTERNET hOpenFile; /* Invalid internet handle, the rest are valid parameters */ SetLastError(0xdeadbeef); hOpenFile = FtpOpenFileA(NULL, "welcome.msg", GENERIC_READ, FTP_TRANSFER_TYPE_ASCII, 0); ok ( !hOpenFile, "Expected FtpOpenFileA to fail\n"); ok ( GetLastError() == ERROR_INVALID_HANDLE, "Expected ERROR_INVALID_HANDLE, got %d\n", GetLastError()); InternetCloseHandle(hOpenFile); /* Just in case */ /* No filename */ SetLastError(0xdeadbeef); hOpenFile = FtpOpenFileA(hFtp, NULL, GENERIC_READ, FTP_TRANSFER_TYPE_ASCII, 0); ok ( !hOpenFile, "Expected FtpOpenFileA to fail\n"); ok ( GetLastError() == ERROR_INVALID_PARAMETER, "Expected ERROR_INVALID_PARAMETER, got %d\n", GetLastError()); InternetCloseHandle(hOpenFile); /* Just in case */ /* Illegal access flags */ SetLastError(0xdeadbeef); hOpenFile = FtpOpenFileA(hFtp, "welcome.msg", 0, FTP_TRANSFER_TYPE_ASCII, 0); ok ( !hOpenFile, "Expected FtpOpenFileA to fail\n"); ok ( GetLastError() == ERROR_INVALID_PARAMETER, "Expected ERROR_INVALID_PARAMETER, got %d\n", GetLastError()); InternetCloseHandle(hOpenFile); /* Just in case */ /* Illegal combination of access flags */ SetLastError(0xdeadbeef); hOpenFile = FtpOpenFileA(hFtp, "welcome.msg", GENERIC_READ|GENERIC_WRITE, FTP_TRANSFER_TYPE_ASCII, 0); ok ( !hOpenFile, "Expected FtpOpenFileA to fail\n"); ok ( GetLastError() == ERROR_INVALID_PARAMETER, "Expected ERROR_INVALID_PARAMETER, got %d\n", GetLastError()); InternetCloseHandle(hOpenFile); /* Just in case */ /* Illegal condition flags */ SetLastError(0xdeadbeef); hOpenFile = FtpOpenFileA(hFtp, "welcome.msg", GENERIC_READ, 0xffffffff, 0); ok ( !hOpenFile, "Expected FtpOpenFileA to fail\n"); ok ( GetLastError() == ERROR_INTERNET_EXTENDED_ERROR || GetLastError() == ERROR_INVALID_PARAMETER, "Expected ERROR_INTERNET_EXTENDED_ERROR or ERROR_INVALID_PARAMETER (win98), got %d\n", GetLastError()); InternetCloseHandle(hOpenFile); /* Just in case */ SetLastError(0xdeadbeef); hOpenFile = FtpOpenFileA(hFtp, "welcome.msg", GENERIC_READ, FTP_TRANSFER_TYPE_ASCII, 0); ok ( hOpenFile != NULL, "Expected FtpOpenFileA to succeed\n"); ok ( GetLastError() == ERROR_SUCCESS || broken(GetLastError() == ERROR_FILE_NOT_FOUND), /* Win98 */ "Expected ERROR_SUCCESS, got %u\n", GetLastError()); if (hOpenFile) { BOOL bRet; DWORD error; HINTERNET hOpenFile2; HANDLE hFile; /* We have a handle so all ftp calls should fail (TODO: Put all ftp-calls in here) */ SetLastError(0xdeadbeef); bRet = FtpCreateDirectoryA(hFtp, "new_directory_deadbeef"); error = GetLastError(); ok ( bRet == FALSE, "Expected FtpCreateDirectoryA to fail\n"); ok ( error == ERROR_FTP_TRANSFER_IN_PROGRESS || broken(error == ERROR_INTERNET_EXTENDED_ERROR), "Expected ERROR_FTP_TRANSFER_IN_PROGRESS, got %d\n", error); trace_extended_error(error); SetLastError(0xdeadbeef); bRet = FtpDeleteFileA(hFtp, "non_existent_file_deadbeef"); error = GetLastError(); ok ( bRet == FALSE, "Expected FtpDeleteFileA to fail\n"); ok ( error == ERROR_FTP_TRANSFER_IN_PROGRESS || broken(error == ERROR_INTERNET_EXTENDED_ERROR), "Expected ERROR_FTP_TRANSFER_IN_PROGRESS, got %d\n", error); trace_extended_error(error); SetLastError(0xdeadbeef); bRet = FtpGetFileA(hFtp, "welcome.msg", "should_be_non_existing_deadbeef", FALSE, FILE_ATTRIBUTE_NORMAL, FTP_TRANSFER_TYPE_UNKNOWN, 0); error = GetLastError(); ok ( bRet == FALSE || broken(bRet == TRUE), "Expected FtpGetFileA to fail\n"); ok ( error == ERROR_FTP_TRANSFER_IN_PROGRESS || broken(error == ERROR_SUCCESS), "Expected ERROR_FTP_TRANSFER_IN_PROGRESS, got %d\n", error); DeleteFileA("should_be_non_existing_deadbeef"); /* Just in case */ SetLastError(0xdeadbeef); hOpenFile2 = FtpOpenFileA(hFtp, "welcome.msg", GENERIC_READ, FTP_TRANSFER_TYPE_ASCII, 0); error = GetLastError(); ok ( bRet == FALSE || broken(bRet == TRUE), "Expected FtpOpenFileA to fail\n"); ok ( error == ERROR_FTP_TRANSFER_IN_PROGRESS || broken(error == ERROR_SUCCESS), "Expected ERROR_FTP_TRANSFER_IN_PROGRESS, got %d\n", error); InternetCloseHandle(hOpenFile2); /* Just in case */ /* Create a temporary local file */ SetLastError(0xdeadbeef); hFile = CreateFileA("now_existing_local", GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, NULL); ok ( hFile != NULL, "Error creating a local file : %d\n", GetLastError()); CloseHandle(hFile); SetLastError(0xdeadbeef); bRet = FtpPutFileA(hFtp, "now_existing_local", "non_existing_remote", FTP_TRANSFER_TYPE_UNKNOWN, 0); error = GetLastError(); ok ( bRet == FALSE, "Expected FtpPutFileA to fail\n"); ok ( error == ERROR_FTP_TRANSFER_IN_PROGRESS || broken(error == ERROR_INTERNET_EXTENDED_ERROR), "Expected ERROR_FTP_TRANSFER_IN_PROGRESS, got %d\n", error); DeleteFileA("now_existing_local"); SetLastError(0xdeadbeef); bRet = FtpRemoveDirectoryA(hFtp, "should_be_non_existing_deadbeef_dir"); error = GetLastError(); ok ( bRet == FALSE, "Expected FtpRemoveDirectoryA to fail\n"); ok ( error == ERROR_FTP_TRANSFER_IN_PROGRESS || broken(error == ERROR_INTERNET_EXTENDED_ERROR), "Expected ERROR_FTP_TRANSFER_IN_PROGRESS, got %d\n", error); SetLastError(0xdeadbeef); bRet = FtpRenameFileA(hFtp , "should_be_non_existing_deadbeef", "new"); error = GetLastError(); ok ( bRet == FALSE, "Expected FtpRenameFileA to fail\n"); ok ( error == ERROR_FTP_TRANSFER_IN_PROGRESS || broken(error == ERROR_INTERNET_EXTENDED_ERROR), "Expected ERROR_FTP_TRANSFER_IN_PROGRESS, got %d\n", error); } InternetCloseHandle(hOpenFile); /* One small test to show that handle type is checked before parameters */ SetLastError(0xdeadbeef); hOpenFile = FtpOpenFileA(hConnect, "welcome.msg", GENERIC_READ, 5, 0); ok ( !hOpenFile, "Expected FtpOpenFileA to fail\n"); ok ( GetLastError() == ERROR_INTERNET_INCORRECT_HANDLE_TYPE, "Expected ERROR_INTERNET_INCORRECT_HANDLE_TYPE, got %d\n", GetLastError()); InternetCloseHandle(hOpenFile); /* Just in case */ SetLastError(0xdeadbeef); hOpenFile = FtpOpenFileA(hConnect, "welcome.msg", GENERIC_READ, FTP_TRANSFER_TYPE_ASCII, 0); ok ( hOpenFile == NULL, "Expected FtpOpenFileA to fail\n"); ok ( GetLastError() == ERROR_INTERNET_INCORRECT_HANDLE_TYPE, "Expected ERROR_INTERNET_INCORRECT_HANDLE_TYPE, got %d\n", GetLastError()); InternetCloseHandle(hOpenFile); /* Just in case */ }
static void test_putfile(HINTERNET hFtp, HINTERNET hConnect) { BOOL bRet; HANDLE hFile; /* The order of checking is: * * All parameters except 'session handle' and 'condition flags' * Session handle * Session handle type * Condition flags */ /* Test to show the parameter checking order depends on the Windows version */ SetLastError(0xdeadbeef); bRet = FtpPutFileA(NULL, NULL, "non_existing_remote", FTP_TRANSFER_TYPE_UNKNOWN, 0); ok ( bRet == FALSE, "Expected FtpPutFileA to fail\n"); ok ( GetLastError() == ERROR_INVALID_HANDLE || GetLastError() == ERROR_INVALID_PARAMETER, "Expected ERROR_INVALID_HANDLE (win98) or ERROR_INVALID_PARAMETER, got %d\n", GetLastError()); /* Test to show session handle is checked before 'condition flags' */ SetLastError(0xdeadbeef); bRet = FtpPutFileA(NULL, "non_existing_local", "non_existing_remote", 5, 0); ok ( bRet == FALSE, "Expected FtpPutFileA to fail\n"); ok ( GetLastError() == ERROR_INVALID_HANDLE, "Expected ERROR_INVALID_HANDLE, got %d\n", GetLastError()); /* Start clean */ DeleteFileA("non_existing_local"); /* No local file given */ SetLastError(0xdeadbeef); bRet = FtpPutFileA(hFtp, NULL, "non_existing_remote", FTP_TRANSFER_TYPE_UNKNOWN, 0); ok ( bRet == FALSE, "Expected FtpPutFileA to fail\n"); ok ( GetLastError() == ERROR_INVALID_PARAMETER, "Expected ERROR_INVALID_PARAMETER, got %d\n", GetLastError()); /* No remote file given */ SetLastError(0xdeadbeef); bRet = FtpPutFileA(hFtp, "non_existing_local", NULL, FTP_TRANSFER_TYPE_UNKNOWN, 0); ok ( bRet == FALSE, "Expected FtpPutFileA to fail\n"); ok ( GetLastError() == ERROR_INVALID_PARAMETER, "Expected ERROR_INVALID_PARAMETER, got %d\n", GetLastError()); /* Illegal condition flags */ SetLastError(0xdeadbeef); bRet = FtpPutFileA(hFtp, "non_existing_local", "non_existing_remote", 5, 0); ok ( bRet == FALSE, "Expected FtpPutFileA to fail\n"); ok ( GetLastError() == ERROR_FILE_NOT_FOUND || GetLastError() == ERROR_INVALID_PARAMETER, "Expected ERROR_FILE_NOT_FOUND or ERROR_INVALID_PARAMETER (win98), got %d\n", GetLastError()); /* Parameters are OK but local file doesn't exist */ SetLastError(0xdeadbeef); bRet = FtpPutFileA(hFtp, "non_existing_local", "non_existing_remote", FTP_TRANSFER_TYPE_UNKNOWN, 0); ok ( bRet == FALSE, "Expected FtpPutFileA to fail\n"); ok ( GetLastError() == ERROR_FILE_NOT_FOUND, "Expected ERROR_FILE_NOT_FOUND, got %d\n", GetLastError()); /* Create a temporary local file */ SetLastError(0xdeadbeef); hFile = CreateFileA("now_existing_local", GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, NULL); ok ( hFile != NULL, "Error creating a local file : %d\n", GetLastError()); CloseHandle(hFile); /* Local file exists but we shouldn't be allowed to 'put' the file */ SetLastError(0xdeadbeef); bRet = FtpPutFileA(hFtp, "now_existing_local", "non_existing_remote", FTP_TRANSFER_TYPE_UNKNOWN, 0); ok ( bRet == FALSE, "Expected FtpPutFileA to fail\n"); ok ( GetLastError() == ERROR_INTERNET_EXTENDED_ERROR, "Expected ERROR_INTERNET_EXTENDED_ERROR, got %d\n", GetLastError()); DeleteFileA("now_existing_local"); /* Test to show the parameter checking order depends on the Windows version */ SetLastError(0xdeadbeef); bRet = FtpPutFileA(hConnect, NULL, "non_existing_remote", FTP_TRANSFER_TYPE_UNKNOWN, 0); ok ( bRet == FALSE, "Expected FtpPutFileA to fail\n"); ok ( GetLastError() == ERROR_INTERNET_INCORRECT_HANDLE_TYPE || GetLastError() == ERROR_INVALID_PARAMETER, "Expected ERROR_INTERNET_INCORRECT_HANDLE_TYPE (win98) or ERROR_INVALID_PARAMETER, got %d\n", GetLastError()); /* Test to show that 'session handle type' is checked before 'condition flags' */ SetLastError(0xdeadbeef); bRet = FtpPutFileA(hConnect, "non_existing_local", "non_existing_remote", 5, 0); ok ( bRet == FALSE, "Expected FtpPutFileA to fail\n"); ok ( GetLastError() == ERROR_INTERNET_INCORRECT_HANDLE_TYPE, "Expected ERROR_INTERNET_INCORRECT_HANDLE_TYPE, got %d\n", GetLastError()); SetLastError(0xdeadbeef); bRet = FtpPutFileA(hConnect, "non_existing_local", "non_existing_remote", FTP_TRANSFER_TYPE_UNKNOWN, 0); ok ( bRet == FALSE, "Expected FtpPutFileA to fail\n"); ok ( GetLastError() == ERROR_INTERNET_INCORRECT_HANDLE_TYPE, "Expected ERROR_INTERNET_INCORRECT_HANDLE_TYPE, got %d\n", GetLastError()); }
bool WebIO::UploadFile(std::string file, std::string localfile) { return (FtpPutFileA(WebIO::m_hConnect, localfile.c_str(), file.c_str(), FTP_TRANSFER_TYPE_BINARY, NULL) == TRUE); }