Detlef Riekenberg : advapi32/tests: Add tests for CredIsMarshaledCredential .

Alexandre Julliard julliard at winehq.org
Thu Jul 12 18:00:34 CDT 2012


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

Author: Detlef Riekenberg <wine.dev at web.de>
Date:   Sat Jul  7 00:36:28 2012 +0200

advapi32/tests: Add tests for CredIsMarshaledCredential.

---

 dlls/advapi32/tests/cred.c |   64 ++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 64 insertions(+), 0 deletions(-)

diff --git a/dlls/advapi32/tests/cred.c b/dlls/advapi32/tests/cred.c
index 3aaae4c..5762f1b 100644
--- a/dlls/advapi32/tests/cred.c
+++ b/dlls/advapi32/tests/cred.c
@@ -37,6 +37,7 @@ static BOOL (WINAPI *pCredWriteA)(PCREDENTIALA,DWORD);
 static BOOL (WINAPI *pCredReadDomainCredentialsA)(PCREDENTIAL_TARGET_INFORMATIONA,DWORD,DWORD*,PCREDENTIALA**);
 static BOOL (WINAPI *pCredMarshalCredentialA)(CRED_MARSHAL_TYPE,PVOID,LPSTR *);
 static BOOL (WINAPI *pCredUnmarshalCredentialA)(LPCSTR,PCRED_MARSHAL_TYPE,PVOID);
+static BOOL (WINAPI *pCredIsMarshaledCredentialA)(LPCSTR);
 
 #define TEST_TARGET_NAME  "credtest.winehq.org"
 #define TEST_TARGET_NAME2 "credtest2.winehq.org"
@@ -630,6 +631,67 @@ static void test_CredUnmarshalCredentialA(void)
     pCredFree( username );
 }
 
+static void test_CredIsMarshaledCredentialA(void)
+{
+    int i;
+    BOOL res;
+    BOOL expected = TRUE;
+
+    const char * ptr[] = {
+        /* CertCredential */
+        "@@BXlmblBAAAAAAAAAAAAAAAAAAAAA",   /* hash for 'W','i','n','e' */
+        "@@BAAAAAAAAAAAAAAAAAAAAAAAAAAA",   /* hash for all 0 */
+
+        /* UsernameTargetCredential */
+        "@@CCAAAAA0BA",                     /* "t" */
+        "@@CIAAAAA0BQZAMHA0BA",             /* "test" */
+
+        /* todo: BinaryBlobCredential */
+
+        /* not marshaled names return always FALSE */
+        "winetest",
+        "",
+        "@@",
+        "@@A",
+        "@@AA",
+        "@@AAA",
+        "@@B",
+        "@@BB",
+        "@@BBB",
+
+        /* CertCredential */
+        "@@BAAAAAAAAAAAAAAAAAAAAAAAAAAAA",  /* to long */
+        "@@BAAAAAAAAAAAAAAAAAAAAAAAAAA",    /* to short */
+        "@@BAAAAAAAAAAAAAAAAAAAAAAAAAA+",   /* bad char */
+        "@@BAAAAAAAAAAAAAAAAAAAAAAAAAA:",
+        "@@BAAAAAAAAAAAAAAAAAAAAAAAAAA>",
+        "@@BAAAAAAAAAAAAAAAAAAAAAAAAAA<",
+
+        "@@C",
+        "@@CC",
+        "@@CCC",
+        "@@D",
+        "@@DD",
+        "@@DDD",
+        NULL};
+
+    for (i = 0; ptr[i]; i++)
+    {
+        if (*ptr[i] != '@')
+            expected = FALSE;
+
+        SetLastError(0xdeadbeef);
+        res = pCredIsMarshaledCredentialA(ptr[i]);
+        if (expected)
+            ok(res != FALSE, "%d: got %d and %u for %s (expected TRUE)\n", i, res, GetLastError(), ptr[i]);
+        else
+        {
+            /* Windows returns ERROR_INVALID_PARAMETER here, but that's not documented */
+            ok(!res, "%d: got %d and %u for %s (expected FALSE)\n", i, res, GetLastError(), ptr[i]);
+        }
+    }
+}
+
 START_TEST(cred)
 {
     DWORD persists[CRED_TYPE_MAXIMUM];
@@ -644,6 +706,7 @@ START_TEST(cred)
     pCredReadDomainCredentialsA = (void *)GetProcAddress(GetModuleHandle("advapi32.dll"), "CredReadDomainCredentialsA");
     pCredMarshalCredentialA = (void *)GetProcAddress(GetModuleHandle("advapi32.dll"), "CredMarshalCredentialA");
     pCredUnmarshalCredentialA = (void *)GetProcAddress(GetModuleHandle("advapi32.dll"), "CredUnmarshalCredentialA");
+    pCredIsMarshaledCredentialA = (void *)GetProcAddress(GetModuleHandle("advapi32.dll"), "CredIsMarshaledCredentialA");
 
     if (!pCredEnumerateA || !pCredFree || !pCredWriteA || !pCredDeleteA || !pCredReadA)
     {
@@ -690,4 +753,5 @@ START_TEST(cred)
 
     test_CredMarshalCredentialA();
     test_CredUnmarshalCredentialA();
+    test_CredIsMarshaledCredentialA();
 }




More information about the wine-cvs mailing list