Paul Vriens : wintrust/tests: Add a few tests.

Alexandre Julliard julliard at winehq.org
Thu Jan 8 08:31:16 CST 2009


Module: wine
Branch: master
Commit: 5bfed84410ef6c359fb107f3a87c75ddf46abd89
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=5bfed84410ef6c359fb107f3a87c75ddf46abd89

Author: Paul Vriens <Paul.Vriens.Wine at gmail.com>
Date:   Wed Jan  7 22:25:28 2009 +0100

wintrust/tests: Add a few tests.

---

 dlls/wintrust/tests/crypt.c |   62 +++++++++++++++++++++++++++++++++++++-----
 1 files changed, 54 insertions(+), 8 deletions(-)

diff --git a/dlls/wintrust/tests/crypt.c b/dlls/wintrust/tests/crypt.c
index f9a57af..b1b7bc5 100644
--- a/dlls/wintrust/tests/crypt.c
+++ b/dlls/wintrust/tests/crypt.c
@@ -29,6 +29,8 @@
 
 static char selfname[MAX_PATH];
 static CHAR CURR_DIR[MAX_PATH];
+static CHAR catroot[MAX_PATH];
+static CHAR catroot2[MAX_PATH];
 
 /*
  * Minimalistic catalog file. To reconstruct, save text below as winetest.cdf,
@@ -123,7 +125,7 @@ static void test_context(void)
     BOOL ret;
     HCATADMIN hca;
     static GUID unknown = { 0xC689AABA, 0x8E78, 0x11D0, { 0x8C,0x47,0x00,0xC0,0x4F,0xC2,0x95,0xEE }}; /* WINTRUST.DLL */
-    CHAR windir[MAX_PATH], catroot[MAX_PATH], catroot2[MAX_PATH], dummydir[MAX_PATH];
+    CHAR dummydir[MAX_PATH];
     DWORD attrs;
 
     /* When CryptCATAdminAcquireContext is successful it will create
@@ -208,12 +210,6 @@ static void test_context(void)
     ok(ret, "Expected success\n");
     ok(hca != NULL, "Expected a context handle, got NULL\n");
 
-    GetWindowsDirectoryA(windir, MAX_PATH);
-    lstrcpyA(catroot, windir);
-    lstrcatA(catroot, "\\system32\\CatRoot");
-    lstrcpyA(catroot2, windir);
-    lstrcatA(catroot2, "\\system32\\CatRoot2");
-
     attrs = GetFileAttributes(catroot);
     ok(attrs != INVALID_FILE_ATTRIBUTES, "Expected the CatRoot directory to exist\n");
 
@@ -354,14 +350,18 @@ static void test_calchash(void)
 static void test_CryptCATAdminAddRemoveCatalog(void)
 {
     static WCHAR basenameW[] = {'w','i','n','e','t','e','s','t','.','c','a','t',0};
+    static CHAR basename[] = "winetest.cat";
     HCATADMIN hcatadmin;
     HCATINFO hcatinfo;
     CATALOG_INFO info;
     WCHAR tmpfileW[MAX_PATH];
     char tmpfile[MAX_PATH];
+    char catfile[MAX_PATH], catfilepath[MAX_PATH], *p;
+    WCHAR catfileW[MAX_PATH];
     HANDLE file;
     DWORD error, written;
     BOOL ret;
+    DWORD attrs;
 
     if (!pCryptCATAdminRemoveCatalog)
     {
@@ -419,22 +419,61 @@ static void test_CryptCATAdminAddRemoveCatalog(void)
     WriteFile(file, test_catalog, sizeof(test_catalog), &written, NULL);
     CloseHandle(file);
 
+    /* Unique name will be created */
     hcatinfo = pCryptCATAdminAddCatalog(hcatadmin, tmpfileW, NULL, 0);
     todo_wine ok(hcatinfo != NULL, "CryptCATAdminAddCatalog failed %u\n", GetLastError());
 
+    info.cbStruct = sizeof(info);
+    info.wszCatalogFile[0] = 0;
+    ret = pCryptCATCatalogInfoFromContext(hcatinfo, &info, 0);
+    todo_wine
+    {
+    ok(ret, "CryptCATCatalogInfoFromContext failed %u\n", GetLastError());
+    ok(info.wszCatalogFile[0] != 0, "Expected a filename\n");
+    }
+    WideCharToMultiByte(CP_ACP, 0, info.wszCatalogFile, -1, catfile, MAX_PATH, 0, 0);
+    if ((p = strrchr(catfile, '\\'))) p++;
+    MultiByteToWideChar(0, 0, p, -1, catfileW, MAX_PATH);
+
+    /* winetest.cat will be created */
     hcatinfo = pCryptCATAdminAddCatalog(hcatadmin, tmpfileW, basenameW, 0);
     ok(hcatinfo != NULL, "CryptCATAdminAddCatalog failed %u\n", GetLastError());
 
+    lstrcpyA(catfilepath, catroot);
+    lstrcatA(catfilepath, "\\{DEADBEEF-DEAD-BEEF-DEAD-BEEFDEADBEEF}\\winetest.cat");
+    attrs = GetFileAttributes(catfilepath);
+    ok(attrs != INVALID_FILE_ATTRIBUTES, "Expected %s to exist\n", catfilepath);
+
     info.cbStruct = sizeof(info);
     info.wszCatalogFile[0] = 0;
     ret = pCryptCATCatalogInfoFromContext(hcatinfo, &info, 0);
     ok(ret, "CryptCATCatalogInfoFromContext failed %u\n", GetLastError());
+    ok(info.wszCatalogFile[0] != 0, "Expected a filename\n");
+    WideCharToMultiByte(CP_ACP, 0, info.wszCatalogFile, -1, catfile, MAX_PATH, 0, 0);
+    if ((p = strrchr(catfile, '\\'))) p++;
+    ok(!lstrcmpA(basename, p), "Expected %s, got %s\n", basename, p);
 
     ret = pCryptCATAdminReleaseCatalogContext(hcatadmin, hcatinfo, 0);
     ok(ret, "CryptCATAdminReleaseCatalogContext failed %u\n", GetLastError());
 
-    ret = pCryptCATAdminRemoveCatalog(hcatadmin, tmpfileW, 0);
+    /* Remove the catalog file with the unique name */
+    ret = pCryptCATAdminRemoveCatalog(hcatadmin, catfileW, 0);
+    todo_wine
+    ok(ret, "CryptCATAdminRemoveCatalog failed %u\n", GetLastError());
+
+    /* Remove the winetest.cat catalog file, first with the full path. This should not succeed
+     * according to MSDN */
+    ret = pCryptCATAdminRemoveCatalog(hcatadmin, info.wszCatalogFile, 0);
+    ok(ret, "CryptCATAdminRemoveCatalog failed %u\n", GetLastError());
+    /* The call succeeds but the file is not removed */
+    attrs = GetFileAttributes(catfilepath);
+    todo_wine
+    ok(attrs != INVALID_FILE_ATTRIBUTES, "Expected %s to exist\n", catfilepath);
+    ret = pCryptCATAdminRemoveCatalog(hcatadmin, basenameW, 0);
+    todo_wine
     ok(ret, "CryptCATAdminRemoveCatalog failed %u\n", GetLastError());
+    attrs = GetFileAttributes(catfilepath);
+    ok(attrs == INVALID_FILE_ATTRIBUTES, "Expected %s to be removed\n", catfilepath);
 
     ret = pCryptCATAdminReleaseContext(hcatadmin, 0);
     ok(ret, "CryptCATAdminReleaseContext failed %u\n", GetLastError());
@@ -506,6 +545,7 @@ START_TEST(crypt)
 {
     int myARGC;
     char** myARGV;
+    char windir[MAX_PATH];
 
     InitFunctionPtrs();
 
@@ -515,6 +555,12 @@ START_TEST(crypt)
         return;
     }
 
+    GetWindowsDirectoryA(windir, MAX_PATH);
+    lstrcpyA(catroot, windir);
+    lstrcatA(catroot, "\\system32\\CatRoot");
+    lstrcpyA(catroot2, windir);
+    lstrcatA(catroot2, "\\system32\\CatRoot2");
+
     myARGC = winetest_get_mainargs(&myARGV);
     strcpy(selfname, myARGV[0]);
 




More information about the wine-cvs mailing list