Skip to content

Commit

Permalink
tests: add very simple AWS HTTP v4 Signature test
Browse files Browse the repository at this point in the history
Signed-off-by: Matthias Gatto <matthias.gatto@outscale.com>
  • Loading branch information
outscale-mgo committed Aug 10, 2020
1 parent 26851c3 commit abdda3f
Show file tree
Hide file tree
Showing 4 changed files with 132 additions and 2 deletions.
2 changes: 1 addition & 1 deletion tests/data/Makefile.inc
Expand Up @@ -207,7 +207,7 @@ test1700 test1701 test1702 \
test1800 test1801 \
\
test1900 test1901 test1902 test1903 test1904 test1905 test1906 test1907 \
test1908 test1909 test1910 \
test1908 test1909 test1910 test1913 \
\
test2000 test2001 test2002 test2003 test2004 test2005 test2006 test2007 \
test2008 test2009 test2010 test2011 test2012 test2013 test2014 test2015 \
Expand Down
65 changes: 65 additions & 0 deletions tests/data/test1913
@@ -0,0 +1,65 @@
<testcase>
<info>
<keywords>
HTTP
HTTP Basic
CURLOPT_V4_SIGNATURE
</keywords>
</info>

# Server-side
<reply>
<data nocheck="yes">
HTTP/1.1 302 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
Content-Length: 0
Location: /19130002

</data>
<data2>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake
Content-Type: text/html
Content-Length: 4

hej
</data>
</reply>

# Client-side
<client>
<server>
http
</server>

<name>
HTTP credentials with newline and redirect
</name>
<tool>
lib1913
</tool>

<command>
http://%HOSTIP:%HTTPPORT/1913/testapi/test
</command>
</client>

# Verify data after the test has been "shot"
<verify>
<strip>
^User-Agent:.*
^Content-Type:.*
^Accept:.*
</strip>
<protocol>
GET /1913/testapi/test HTTP/1.1
Host: %HOSTIP:%HTTPPORT
X-yyy-Date: 19700101T000000Z
Authorization: XXX4-HMAC-SHA256 Credential=xxx/19700101/0/127/xxx4_request, SignedHeaders=content-type;host;x-yyy-date, Signature=b3582ec5911c0568c0a16188341608e58fce4e15644e2779a2ccbb4eae5d0aaf

</protocol>
</verify>
</testcase>
6 changes: 5 additions & 1 deletion tests/libtest/Makefile.inc
Expand Up @@ -58,7 +58,7 @@ noinst_PROGRAMS = chkhostname libauthretry libntlmconnect \
lib1550 lib1551 lib1552 lib1553 lib1554 lib1555 lib1556 lib1557 \
lib1558 lib1559 lib1560 lib1564 lib1565 lib1567 \
lib1591 lib1592 lib1593 lib1594 lib1596 \
lib1900 lib1905 lib1906 lib1907 lib1908 lib1910 \
lib1900 lib1905 lib1906 lib1907 lib1908 lib1910 lib1913 \
lib2033 lib3010

chkdecimalpoint_SOURCES = chkdecimalpoint.c ../../lib/mprintf.c \
Expand Down Expand Up @@ -649,6 +649,10 @@ lib1910_SOURCES = lib1910.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib1910_LDADD = $(TESTUTIL_LIBS)
lib1910_CPPFLAGS = $(AM_CPPFLAGS)

lib1913_SOURCES = lib1913.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib1913_LDADD = $(TESTUTIL_LIBS)
lib1913_CPPFLAGS = $(AM_CPPFLAGS)

lib2033_SOURCES = libntlmconnect.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib2033_LDADD = $(TESTUTIL_LIBS)
lib2033_CPPFLAGS = $(AM_CPPFLAGS) -DUSE_PIPELINING
Expand Down
61 changes: 61 additions & 0 deletions tests/libtest/lib1913.c
@@ -0,0 +1,61 @@
/***************************************************************************
* _ _ ____ _
* Project ___| | | | _ \| |
* / __| | | | |_) | |
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
* Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
* are also available at https://curl.haxx.se/docs/copyright.html.
*
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
* copies of the Software, and permit persons to whom the Software is
* furnished to do so, under the terms of the COPYING file.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
***************************************************************************/
#include "test.h"

#include "memdebug.h"

int test(char *URL)
{
CURL *curl;
CURLcode res = TEST_ERR_MAJOR_BAD;
struct curl_slist *list = NULL;

if(curl_global_init(CURL_GLOBAL_ALL) != CURLE_OK) {
fprintf(stderr, "curl_global_init() failed\n");
return TEST_ERR_MAJOR_BAD;
}

curl = curl_easy_init();
if(!curl) {
fprintf(stderr, "curl_easy_init() failed\n");
curl_global_cleanup();
return TEST_ERR_MAJOR_BAD;
}

test_setopt(curl, CURLOPT_VERBOSE, 1L);
test_setopt(curl, CURLOPT_V4_SIGNATURE, "xxx:yyy");
test_setopt(curl, CURLOPT_USERPWD, "xxx:yyy");
test_setopt(curl, CURLOPT_HEADER, 0L);
test_setopt(curl, CURLOPT_URL, URL);
list = curl_slist_append(list, "Content-Type: application/json");
test_setopt(curl, CURLOPT_HTTPHEADER, list);

res = curl_easy_perform(curl);

test_cleanup:

curl_slist_free_all(list);
curl_easy_cleanup(curl);
curl_global_cleanup();

return res;
}

0 comments on commit abdda3f

Please sign in to comment.