reactos/modules/rostests/apitests/localspl/dll/fpSetJob.c
Colin Finck 3b93ba0f31 [LOCALSPL] Fix parameter handling in LocalSetJob and add tests for the few ways we can easily test this function.
Yes, it checks the input handle and doesn't fail if an invalid level is given, because someone may still send a Command.
This also fixes CORE-12794. Thanks for reporting!
2017-12-25 14:30:47 +01:00

65 lines
1.8 KiB
C

/*
* PROJECT: ReactOS Local Spooler API Tests Injected DLL
* LICENSE: GPL-2.0+ (https://spdx.org/licenses/GPL-2.0+)
* PURPOSE: Tests for fpSetJob
* COPYRIGHT: Copyright 2017 Colin Finck (colin@reactos.org)
*/
#include <apitest.h>
#define WIN32_NO_STATUS
#include <windef.h>
#include <winbase.h>
#include <wingdi.h>
#include <winreg.h>
#include <winspool.h>
#include <winsplp.h>
#include "../localspl_apitest.h"
#include <spoolss.h>
extern PWSTR GetDefaultPrinterFromRegistry(VOID);
extern BOOL GetLocalsplFuncs(LPPRINTPROVIDOR pp);
/* From printing/include/spoolss.h */
#define MAX_PRINTER_NAME 220
START_TEST(fpSetJob)
{
HANDLE hPrinter = NULL;
PRINTPROVIDOR pp;
PWSTR pwszDefaultPrinter = NULL;
if (!GetLocalsplFuncs(&pp))
goto Cleanup;
// Verify that fpSetJob returns ERROR_INVALID_HANDLE when nothing is provided.
ok(!pp.fpSetJob(NULL, 0, 0, NULL, 0), "fpSetJob returns TRUE\n");
ok(GetLastError() == ERROR_INVALID_HANDLE, "fpSetJob returns error %lu!\n", GetLastError());
// Get the default printer.
pwszDefaultPrinter = GetDefaultPrinterFromRegistry();
if (!pwszDefaultPrinter)
{
skip("Could not determine the default printer!\n");
goto Cleanup;
}
if (!pp.fpOpenPrinter(pwszDefaultPrinter, &hPrinter, NULL))
{
skip("Could not open a handle to the default printer, last error is %lu!\n", GetLastError());
goto Cleanup;
}
// Verify that fpSetJob returns ERROR_INVALID_PARAMETER if only a printer handle is provided.
ok(!pp.fpSetJob(hPrinter, 0, 0, NULL, 0), "fpSetJob returns TRUE\n");
ok(GetLastError() == ERROR_INVALID_PARAMETER, "fpSetJob returns error %lu!\n", GetLastError());
Cleanup:
if (pwszDefaultPrinter)
HeapFree(GetProcessHeap(), 0, pwszDefaultPrinter);
if (hPrinter)
pp.fpClosePrinter(hPrinter);
}