gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[libmicrohttpd] 03/03: test_basicauth: added two additional tests for th


From: gnunet
Subject: [libmicrohttpd] 03/03: test_basicauth: added two additional tests for the new API
Date: Wed, 08 Jun 2022 15:54:12 +0200

This is an automated email from the git hooks/post-receive script.

karlson2k pushed a commit to branch master
in repository libmicrohttpd.

commit c8b7b8fed96c513c82b2da9037206daccf3eb492
Author: Evgeny Grin (Karlson2k) <k2k@narod.ru>
AuthorDate: Tue Jun 7 19:30:19 2022 +0300

    test_basicauth: added two additional tests for the new API
---
 src/testcurl/.gitignore       |   2 +
 src/testcurl/Makefile.am      |   9 ++-
 src/testcurl/test_basicauth.c | 156 ++++++++++++++++++++++++++++++++----------
 3 files changed, 130 insertions(+), 37 deletions(-)

diff --git a/src/testcurl/.gitignore b/src/testcurl/.gitignore
index cf6a4bc3..f3ffee14 100644
--- a/src/testcurl/.gitignore
+++ b/src/testcurl/.gitignore
@@ -153,3 +153,5 @@ core
 /test_basicauth
 /test_parse_cookies_invalid
 /test_basicauth_preauth
+/test_basicauth_oldapi
+/test_basicauth_preauth_oldapi
\ No newline at end of file
diff --git a/src/testcurl/Makefile.am b/src/testcurl/Makefile.am
index aeeabb6b..3bf81e7d 100644
--- a/src/testcurl/Makefile.am
+++ b/src/testcurl/Makefile.am
@@ -153,7 +153,8 @@ endif
 
 if ENABLE_BAUTH
 check_PROGRAMS += \
-  test_basicauth test_basicauth_preauth
+  test_basicauth test_basicauth_preauth \
+  test_basicauth_oldapi test_basicauth_preauth_oldapi
 endif
 
 if HAVE_POSTPROCESSOR
@@ -239,6 +240,12 @@ test_basicauth_SOURCES = \
 test_basicauth_preauth_SOURCES = \
   test_basicauth.c
 
+test_basicauth_oldapi_SOURCES = \
+  test_basicauth.c
+
+test_basicauth_preauth_oldapi_SOURCES = \
+  test_basicauth.c
+
 test_digestauth_SOURCES = \
   test_digestauth.c
 test_digestauth_LDADD = \
diff --git a/src/testcurl/test_basicauth.c b/src/testcurl/test_basicauth.c
index c7f1df84..e95047dd 100644
--- a/src/testcurl/test_basicauth.c
+++ b/src/testcurl/test_basicauth.c
@@ -251,6 +251,7 @@ struct CBC
 
 static int verbose;
 static int preauth;
+static int oldapi;
 
 static size_t
 copyBuffer (void *ptr,
@@ -279,8 +280,6 @@ ahc_echo (void *cls,
           void **req_cls)
 {
   struct MHD_Response *response;
-  char *username;
-  char *password;
   enum MHD_Result ret;
   static int already_called_marker;
   (void) cls; (void) url;         /* Unused. Silent compiler warning. */
@@ -298,46 +297,129 @@ ahc_echo (void *cls,
     mhdErrorExitDesc ("Unexpected HTTP method");
 
   /* require: USERNAME with password PASSWORD */
-  password = NULL;
-  username = MHD_basic_auth_get_username_password (connection,
-                                                   &password);
-  if (NULL != username)
+  if (! oldapi)
   {
-    if (0 != strcmp (username, USERNAME))
+    struct MHD_BasicAuthInfo *creds;
+
+    creds = MHD_basic_auth_get_username_password3 (connection);
+    if (NULL != creds)
+    {
+      if (NULL == creds->username)
+        mhdErrorExitDesc ("'username' is NULL");
+      else if (MHD_STATICSTR_LEN_ (USERNAME) != creds->username_len)
+      {
+        fprintf (stderr, "'username_len' does not match.\n"
+                 "Expected: %u\tRecieved: %u. ",
+                 (unsigned) MHD_STATICSTR_LEN_ (USERNAME),
+                 (unsigned) creds->username_len);
+        mhdErrorExitDesc ("Wrong 'username_len'");
+      }
+      else if (0 != memcmp (creds->username, USERNAME, creds->username_len))
+      {
+        fprintf (stderr, "'username' does not match.\n"
+                 "Expected: '%s'\tRecieved: '%.*s'. ",
+                 USERNAME,
+                 (int) creds->username_len,
+                 creds->username);
+        mhdErrorExitDesc ("Wrong 'username'");
+      }
+      else if (0 != creds->username[creds->username_len])
+        mhdErrorExitDesc ("'username' is not zero-terminated");
+      else if (NULL == creds->password)
+        mhdErrorExitDesc ("'password' is NULL");
+      else if (MHD_STATICSTR_LEN_ (PASSWORD) != creds->password_len)
+      {
+        fprintf (stderr, "'password_len' does not match.\n"
+                 "Expected: %u\tRecieved: %u. ",
+                 (unsigned) MHD_STATICSTR_LEN_ (PASSWORD),
+                 (unsigned) creds->password_len);
+        mhdErrorExitDesc ("Wrong 'password_len'");
+      }
+      else if (0 != memcmp (creds->password, PASSWORD, creds->password_len))
+      {
+        fprintf (stderr, "'password' does not match.\n"
+                 "Expected: '%s'\tRecieved: '%.*s'. ",
+                 PASSWORD,
+                 (int) creds->password_len,
+                 creds->password);
+        mhdErrorExitDesc ("Wrong 'username'");
+      }
+      else if (0 != creds->password[creds->password_len])
+        mhdErrorExitDesc ("'password' is not zero-terminated");
+
+      MHD_free (creds);
+
+      response =
+        MHD_create_response_from_buffer_static (MHD_STATICSTR_LEN_ (PAGE),
+                                                (const void *) PAGE);
+      if (NULL == response)
+        mhdErrorExitDesc ("Response creation failed");
+      ret = MHD_queue_response (connection, MHD_HTTP_OK, response);
+      if (MHD_YES != ret)
+        mhdErrorExitDesc ("'MHD_queue_response()' failed");
+    }
+    else
     {
-      fprintf (stderr, "'username' does not match.\n"
-               "Expected: '%s'\tRecieved: '%s'. ", USERNAME, username);
-      mhdErrorExitDesc ("Wrong 'username'");
+      response =
+        MHD_create_response_from_buffer_static (MHD_STATICSTR_LEN_ (DENIED),
+                                                (const void *) DENIED);
+      if (NULL == response)
+        mhdErrorExitDesc ("Response creation failed");
+      ret = MHD_queue_basic_auth_fail_response3 (connection, REALM, 1,
+                                                 response);
+      if (MHD_YES != ret)
+        mhdErrorExitDesc ("'MHD_queue_basic_auth_fail_response3()' failed");
     }
-    if (NULL == password)
-      mhdErrorExitDesc ("The password pointer is NULL");
-    if (0 != strcmp (password, PASSWORD))
-      fprintf (stderr, "'password' does not match.\n"
-               "Expected: '%s'\tRecieved: '%s'. ", PASSWORD, password);
-    response =
-      MHD_create_response_from_buffer_static (MHD_STATICSTR_LEN_ (PAGE),
-                                              (const void *) PAGE);
-    if (NULL == response)
-      mhdErrorExitDesc ("Response creation failed");
-    ret = MHD_queue_response (connection, MHD_HTTP_OK, response);
-    if (MHD_YES != ret)
-      mhdErrorExitDesc ("'MHD_queue_response()' failed");
   }
   else
   {
+    char *username;
+    char *password;
+
+    password = NULL;
+    username = MHD_basic_auth_get_username_password (connection,
+                                                     &password);
+    if (NULL != username)
+    {
+      if (0 != strcmp (username, USERNAME))
+      {
+        fprintf (stderr, "'username' does not match.\n"
+                 "Expected: '%s'\tRecieved: '%s'. ", USERNAME, username);
+        mhdErrorExitDesc ("Wrong 'username'");
+      }
+      if (NULL == password)
+        mhdErrorExitDesc ("The password pointer is NULL");
+      if (0 != strcmp (password, PASSWORD))
+        fprintf (stderr, "'password' does not match.\n"
+                 "Expected: '%s'\tRecieved: '%s'. ", PASSWORD, password);
+      response =
+        MHD_create_response_from_buffer_static (MHD_STATICSTR_LEN_ (PAGE),
+                                                (const void *) PAGE);
+      if (NULL == response)
+        mhdErrorExitDesc ("Response creation failed");
+      ret = MHD_queue_response (connection, MHD_HTTP_OK, response);
+      if (MHD_YES != ret)
+        mhdErrorExitDesc ("'MHD_queue_response()' failed");
+    }
+    else
+    {
+      if (NULL != password)
+        mhdErrorExitDesc ("The password pointer is NOT NULL");
+      response =
+        MHD_create_response_from_buffer_static (MHD_STATICSTR_LEN_ (DENIED),
+                                                (const void *) DENIED);
+      if (NULL == response)
+        mhdErrorExitDesc ("Response creation failed");
+      ret = MHD_queue_basic_auth_fail_response (connection, REALM, response);
+      if (MHD_YES != ret)
+        mhdErrorExitDesc ("'MHD_queue_basic_auth_fail_response()' failed");
+    }
+    if (NULL != username)
+      MHD_free (username);
     if (NULL != password)
-      mhdErrorExitDesc ("The password pointer is NOT NULL");
-    response =
-      MHD_create_response_from_buffer_static (MHD_STATICSTR_LEN_ (DENIED),
-                                              (const void *) DENIED);
-    ret = MHD_queue_basic_auth_fail_response (connection, REALM,
-                                              response);
+      MHD_free (password);
   }
 
-  if (NULL != username)
-    MHD_free (username);
-  if (NULL != password)
-    MHD_free (password);
   MHD_destroy_response (response);
   return ret;
 }
@@ -376,6 +458,7 @@ setupCURL (void *cbc, int port, char *errbuf)
                                      ((long) TIMEOUTS_VAL))) ||
       (CURLE_OK != curl_easy_setopt (c, CURLOPT_HTTP_VERSION,
                                      CURL_HTTP_VERSION_1_1)) ||
+      /* (CURLE_OK != curl_easy_setopt (c, CURLOPT_VERBOSE, 1L)) || */
       (CURLE_OK != curl_easy_setopt (c, CURLOPT_FAILONERROR, 1L)) ||
 #if CURL_AT_LEAST_VERSION (7, 19, 4)
       (CURLE_OK != curl_easy_setopt (c, CURLOPT_PROTOCOLS, CURLPROTO_HTTP)) ||
@@ -386,10 +469,10 @@ setupCURL (void *cbc, int port, char *errbuf)
       (CURLE_OK != curl_easy_setopt (c, CURLOPT_PORT, ((long) port))) ||
       (CURLE_OK != curl_easy_setopt (c, CURLOPT_URL, url)))
     libcurlErrorExitDesc ("curl_easy_setopt() failed");
-#if CURL_AT_LEAST_VERSION(7,21,3)
+#if CURL_AT_LEAST_VERSION (7,21,3)
   if ((CURLE_OK != curl_easy_setopt (c, CURLOPT_HTTPAUTH,
-                                     CURLAUTH_BASIC |
-                                     (preauth ? 0 : CURLAUTH_ONLY))) ||
+                                     CURLAUTH_BASIC
+                                     | (preauth ? 0 : CURLAUTH_ONLY))) ||
       (CURLE_OK != curl_easy_setopt (c, CURLOPT_USERPWD,
                                      USERNAME ":" PASSWORD)))
     libcurlErrorExitDesc ("curl_easy_setopt() authorization options failed");
@@ -646,6 +729,7 @@ main (int argc, char *const *argv)
 #endif
 #endif
 #endif /* MHD_HTTPS_REQUIRE_GRYPT */
+  oldapi = has_in_name (argv[0], "_oldapi");
   if (0 != curl_global_init (CURL_GLOBAL_WIN32))
     return 2;
   errorCount += testBasicAuth ();

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]