Module: wine Branch: master Commit: 199c5f0ba9e56f8fda5dadfa913ee9eae7d993bb URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=199c5f0ba9e56f8fda5dadfa...
Author: Paul Vriens Paul.Vriens@xs4all.nl Date: Tue Sep 12 13:18:48 2006 +0200
wintrust: Added tests for WintrustAddDefaultForUsage.
---
dlls/wintrust/tests/Makefile.in | 2 - dlls/wintrust/tests/register.c | 108 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 108 insertions(+), 2 deletions(-)
diff --git a/dlls/wintrust/tests/Makefile.in b/dlls/wintrust/tests/Makefile.in index 82fffae..f346f53 100644 --- a/dlls/wintrust/tests/Makefile.in +++ b/dlls/wintrust/tests/Makefile.in @@ -3,7 +3,7 @@ TOPOBJDIR = ../../.. SRCDIR = @srcdir@ VPATH = @srcdir@ TESTDLL = wintrust.dll -IMPORTS = user32 kernel32 +IMPORTS = user32 advapi32 kernel32
CTESTS = \ register.c diff --git a/dlls/wintrust/tests/register.c b/dlls/wintrust/tests/register.c index 3f95962..3640aa4 100644 --- a/dlls/wintrust/tests/register.c +++ b/dlls/wintrust/tests/register.c @@ -24,10 +24,12 @@ #include <stdio.h> #include "windows.h" #include "softpub.h" #include "wintrust.h" +#include "winreg.h"
#include "wine/test.h"
static BOOL (WINAPI * pWintrustAddActionID)(GUID*, DWORD, CRYPT_REGISTER_ACTIONID*); +static BOOL (WINAPI * pWintrustAddDefaultForUsage)(const CHAR*,CRYPT_PROVIDER_REGDEFUSAGE*); static BOOL (WINAPI * pWintrustRemoveActionID)(GUID*);
static HMODULE hWintrust = 0; @@ -51,6 +53,7 @@ static BOOL InitFunctionPtrs(void) }
WINTRUST_GET_PROC(WintrustAddActionID) + WINTRUST_GET_PROC(WintrustAddDefaultForUsage) WINTRUST_GET_PROC(WintrustRemoveActionID)
return TRUE; @@ -60,7 +63,7 @@ static void test_AddRem_ActionID(void) { static WCHAR DummyDllW[] = {'d','e','a','d','b','e','e','f','.','d','l','l',0 }; static WCHAR DummyFunctionW[] = {'d','u','m','m','y','f','u','n','c','t','i','o','n',0 }; - GUID ActionID = { 0xdeadbe, 0xefde, 0xadbe, { 0xef,0xde,0xad,0xbe,0xef,0xde,0xad,0xbe }}; + GUID ActionID = { 0xdeadbeef, 0xdead, 0xbeef, { 0xde,0xad,0xbe,0xef,0xde,0xad,0xbe,0xef }}; CRYPT_REGISTER_ACTIONID ActionIDFunctions; CRYPT_TRUST_REG_ENTRY EmptyProvider = { 0, NULL, NULL }; CRYPT_TRUST_REG_ENTRY DummyProvider = { sizeof(CRYPT_TRUST_REG_ENTRY), DummyDllW, DummyFunctionW }; @@ -158,12 +161,115 @@ static void test_AddRem_ActionID(void) "Expected 0xdeadbeef, got %ld.\n", GetLastError()); }
+static void test_AddDefaultForUsage(void) +{ + BOOL ret; + LONG res; + static GUID ActionID = { 0xdeadbeef, 0xdead, 0xbeef, { 0xde,0xad,0xbe,0xef,0xde,0xad,0xbe,0xef }}; + static WCHAR DummyDllW[] = {'d','e','a','d','b','e','e','f','.','d','l','l',0 }; + static CHAR DummyFunction[] = "dummyfunction"; + static const CHAR oid[] = "1.2.3.4.5.6.7.8.9.10"; + static const CHAR Usages[] = "SOFTWARE\Microsoft\Cryptography\Providers\Trust\Usages\1.2.3.4.5.6.7.8.9.10"; + static CRYPT_PROVIDER_REGDEFUSAGE DefUsage; + + /* All NULL */ + SetLastError(0xdeadbeef); + ret = pWintrustAddDefaultForUsage(NULL, NULL); + ok (!ret, "Expected WintrustAddDefaultForUsage to fail.\n"); + todo_wine + ok (GetLastError() == ERROR_INVALID_PARAMETER, + "Expected ERROR_INVALID_PARAMETER, got %ld.\n", GetLastError()); + + /* NULL defusage */ + SetLastError(0xdeadbeef); + ret = pWintrustAddDefaultForUsage(oid, NULL); + ok (!ret, "Expected WintrustAddDefaultForUsage to fail.\n"); + todo_wine + ok (GetLastError() == ERROR_INVALID_PARAMETER, + "Expected ERROR_INVALID_PARAMETER, got %ld.\n", GetLastError()); + + /* NULL oid and proper defusage */ + memset(&DefUsage, 0 , sizeof(CRYPT_PROVIDER_REGDEFUSAGE)); + DefUsage.cbStruct = sizeof(CRYPT_PROVIDER_REGDEFUSAGE); + DefUsage.pgActionID = &ActionID; + DefUsage.pwszDllName = DummyDllW; + DefUsage.pwszLoadCallbackDataFunctionName = DummyFunction; + DefUsage.pwszFreeCallbackDataFunctionName = DummyFunction; + SetLastError(0xdeadbeef); + ret = pWintrustAddDefaultForUsage(NULL, &DefUsage); + ok (!ret, "Expected WintrustAddDefaultForUsage to fail.\n"); + todo_wine + ok (GetLastError() == ERROR_INVALID_PARAMETER, + "Expected ERROR_INVALID_PARAMETER, got %ld.\n", GetLastError()); + + /* Just the ActionID */ + memset(&DefUsage, 0 , sizeof(CRYPT_PROVIDER_REGDEFUSAGE)); + DefUsage.cbStruct = sizeof(CRYPT_PROVIDER_REGDEFUSAGE); + DefUsage.pgActionID = &ActionID; + SetLastError(0xdeadbeef); + ret = pWintrustAddDefaultForUsage(oid, &DefUsage); + todo_wine + ok ( ret, "Expected WintrustAddDefaultForUsage to succeed\n"); + ok (GetLastError() == 0xdeadbeef, + "Last error should not have been changed: 0x%08lx\n", GetLastError()); + + /* No ActionID */ + memset(&DefUsage, 0 , sizeof(CRYPT_PROVIDER_REGDEFUSAGE)); + DefUsage.cbStruct = sizeof(CRYPT_PROVIDER_REGDEFUSAGE); + DefUsage.pwszDllName = DummyDllW; + DefUsage.pwszLoadCallbackDataFunctionName = DummyFunction; + DefUsage.pwszFreeCallbackDataFunctionName = DummyFunction; + ret = pWintrustAddDefaultForUsage(oid, &DefUsage); + ok (!ret, "Expected WintrustAddDefaultForUsage to fail.\n"); + todo_wine + ok (GetLastError() == ERROR_INVALID_PARAMETER, + "Expected ERROR_INVALID_PARAMETER, got %ld.\n", GetLastError()); + + /* cbStruct set to 0 */ + memset(&DefUsage, 0 , sizeof(CRYPT_PROVIDER_REGDEFUSAGE)); + DefUsage.cbStruct = 0; + DefUsage.pgActionID = &ActionID; + DefUsage.pwszDllName = DummyDllW; + DefUsage.pwszLoadCallbackDataFunctionName = DummyFunction; + DefUsage.pwszFreeCallbackDataFunctionName = DummyFunction; + SetLastError(0xdeadbeef); + ret = pWintrustAddDefaultForUsage(oid, &DefUsage); + ok (!ret, "Expected WintrustAddDefaultForUsage to fail.\n"); + todo_wine + ok (GetLastError() == ERROR_INVALID_PARAMETER, + "Expected ERROR_INVALID_PARAMETER, got %ld.\n", GetLastError()); + + /* All OK */ + memset(&DefUsage, 0 , sizeof(CRYPT_PROVIDER_REGDEFUSAGE)); + DefUsage.cbStruct = sizeof(CRYPT_PROVIDER_REGDEFUSAGE); + DefUsage.pgActionID = &ActionID; + DefUsage.pwszDllName = DummyDllW; + DefUsage.pwszLoadCallbackDataFunctionName = DummyFunction; + DefUsage.pwszFreeCallbackDataFunctionName = DummyFunction; + SetLastError(0xdeadbeef); + ret = pWintrustAddDefaultForUsage(oid, &DefUsage); + todo_wine + ok ( ret, "Expected WintrustAddDefaultForUsage to succeed\n"); + ok (GetLastError() == 0xdeadbeef, + "Last error should not have been changed: 0x%08lx\n", GetLastError()); + + /* There is no corresponding remove for WintrustAddDefaultForUsage + * so we delete the registry key manually. + */ + if (ret) + { + res = RegDeleteKeyA(HKEY_LOCAL_MACHINE, Usages); + ok (res == ERROR_SUCCESS, "Key delete failed : 0x%08lx\n", res); + } +} + START_TEST(register) { if(!InitFunctionPtrs()) return;
test_AddRem_ActionID(); + test_AddDefaultForUsage();
FreeLibrary(hWintrust); }