Paul Vriens : wintrust: Added tests for WintrustAddDefaultForUsage.
Alexandre Julliard
julliard at wine.codeweavers.com
Tue Sep 12 09:35:12 CDT 2006
Module: wine
Branch: master
Commit: 199c5f0ba9e56f8fda5dadfa913ee9eae7d993bb
URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=199c5f0ba9e56f8fda5dadfa913ee9eae7d993bb
Author: Paul Vriens <Paul.Vriens at 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);
}
More information about the wine-cvs
mailing list