aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorGarrett D'Amore <garrett@damore.org>2018-01-22 14:05:10 -0800
committerGarrett D'Amore <garrett@damore.org>2018-01-22 17:11:58 -0800
commit3d075fad7496ec126c5087d1c36ab7a4af73ce16 (patch)
treec5b5d6fe44eaa2996310683b5080de87160b9b41 /tests
parent5b1a3af7be4ae712868ae84b9a7d5a974d272b16 (diff)
downloadnng-3d075fad7496ec126c5087d1c36ab7a4af73ce16.tar.gz
nng-3d075fad7496ec126c5087d1c36ab7a4af73ce16.tar.bz2
nng-3d075fad7496ec126c5087d1c36ab7a4af73ce16.zip
fixes #219 transports should take URL structure instead of string address
This eliminates a bunch of redundant URL parsing, using the common URL logic we already have in place. While here I fixed a problem with the TLS and WSS test suites that was failing on older Ubuntu -- apparently older versions of mbedTLS were unhappy if selecting OPTIONAL verification without a validate certificate chain.
Diffstat (limited to 'tests')
-rw-r--r--tests/httpclient.c5
-rw-r--r--tests/httpserver.c32
-rw-r--r--tests/tls.c61
-rw-r--r--tests/trantest.h5
-rw-r--r--tests/wssfile.c11
5 files changed, 60 insertions, 54 deletions
diff --git a/tests/httpclient.c b/tests/httpclient.c
index 76a3566b..b58dc81f 100644
--- a/tests/httpclient.c
+++ b/tests/httpclient.c
@@ -34,11 +34,13 @@ TestMain("HTTP Client", {
nni_aio * iaio;
nni_http_client *cli;
nni_http * http;
+ nni_url * url;
So(nng_aio_alloc(&aio, NULL, NULL) == 0);
iaio = (nni_aio *) aio;
- So(nni_http_client_init(&cli, "http://httpbin.org") == 0);
+ So(nni_url_parse(&url, "http://httpbin.org") == 0);
+ So(nni_http_client_init(&cli, url) == 0);
nni_http_client_connect(cli, iaio);
nng_aio_wait(aio);
So(nng_aio_result(aio) == 0);
@@ -47,6 +49,7 @@ TestMain("HTTP Client", {
nni_http_client_fini(cli);
nni_http_fini(http);
nng_aio_free(aio);
+ nni_url_free(url);
});
Convey("We can initiate a message", {
diff --git a/tests/httpserver.c b/tests/httpserver.c
index 0d3f3710..f7ab377c 100644
--- a/tests/httpserver.c
+++ b/tests/httpserver.c
@@ -49,7 +49,7 @@ httpget(const char *addr, void **datap, size_t *sizep, uint16_t *statp,
((rv = nni_aio_init(&aio, NULL, NULL)) != 0) ||
((rv = nni_http_req_init(&req)) != 0) ||
((rv = nni_http_res_init(&res)) != 0) ||
- ((rv = nni_http_client_init(&cli, addr)) != 0)) {
+ ((rv = nni_http_client_init(&cli, url)) != 0)) {
goto fail;
}
nni_http_client_connect(cli, aio);
@@ -143,12 +143,15 @@ TestMain("HTTP Client", {
Convey("We can start an HTTP server", {
nni_aio *aio;
char portbuf[16];
- char url[32];
+ char urlstr[32];
+ nni_url *url;
trantest_next_address(portbuf, "%u");
- snprintf(url, sizeof(url), "http://127.0.0.1:%s", portbuf);
+ snprintf(
+ urlstr, sizeof(urlstr), "http://127.0.0.1:%s", portbuf);
+ So(nni_url_parse(&url, urlstr) == 0);
So(nni_aio_init(&aio, NULL, NULL) == 0);
So(nni_http_server_init(&s, url) == 0);
@@ -156,6 +159,7 @@ TestMain("HTTP Client", {
Reset({
nni_aio_fini(aio);
nni_http_server_fini(s);
+ nni_url_free(url);
});
So(nni_http_handler_init_static(&h, "/home.html", doc1,
@@ -247,7 +251,8 @@ TestMain("HTTP Client", {
Convey("Directory serving works", {
nni_aio *aio;
char portbuf[16];
- char url[32];
+ char urlstr[32];
+ nni_url *url;
char * tmpdir;
char * workdir;
char * file1;
@@ -256,10 +261,8 @@ TestMain("HTTP Client", {
char * subdir1;
char * subdir2;
- trantest_next_address(portbuf, "%u");
-
- snprintf(url, sizeof(url), "http://127.0.0.1:%s", portbuf);
-
+ trantest_next_address(urlstr, "http://127.0.0.1:%u");
+ So(nni_url_parse(&url, urlstr) == 0);
So(nni_aio_init(&aio, NULL, NULL) == 0);
So(nni_http_server_init(&s, url) == 0);
So((tmpdir = nni_plat_temp_dir()) != NULL);
@@ -290,6 +293,7 @@ TestMain("HTTP Client", {
nni_strfree(file3);
nni_strfree(subdir1);
nni_strfree(subdir2);
+ nni_url_free(url);
});
So(nni_http_handler_init_directory(&h, "/docs", workdir) == 0);
@@ -305,7 +309,7 @@ TestMain("HTTP Client", {
char * ctype;
snprintf(fullurl, sizeof(fullurl),
- "%s/docs/subdir1/index.html", url);
+ "%s/docs/subdir1/index.html", urlstr);
So(httpget(fullurl, &data, &size, &stat, &ctype) == 0);
So(stat == NNI_HTTP_STATUS_OK);
So(size == strlen(doc1));
@@ -322,8 +326,8 @@ TestMain("HTTP Client", {
uint16_t stat;
char * ctype;
- snprintf(
- fullurl, sizeof(fullurl), "%s/docs/subdir2", url);
+ snprintf(fullurl, sizeof(fullurl), "%s/docs/subdir2",
+ urlstr);
So(httpget(fullurl, &data, &size, &stat, &ctype) == 0);
So(stat == NNI_HTTP_STATUS_OK);
So(size == strlen(doc3));
@@ -340,8 +344,8 @@ TestMain("HTTP Client", {
uint16_t stat;
char * ctype;
- snprintf(
- fullurl, sizeof(fullurl), "%s/docs/file.txt", url);
+ snprintf(fullurl, sizeof(fullurl), "%s/docs/file.txt",
+ urlstr);
So(httpget(fullurl, &data, &size, &stat, &ctype) == 0);
So(stat == NNI_HTTP_STATUS_OK);
So(size == strlen(doc2));
@@ -358,7 +362,7 @@ TestMain("HTTP Client", {
uint16_t stat;
char * ctype;
- snprintf(fullurl, sizeof(fullurl), "%s/docs/", url);
+ snprintf(fullurl, sizeof(fullurl), "%s/docs/", urlstr);
So(httpget(fullurl, &data, &size, &stat, &ctype) == 0);
So(stat == NNI_HTTP_STATUS_NOT_FOUND);
So(size == 0);
diff --git a/tests/tls.c b/tests/tls.c
index 1196aab3..c977d57f 100644
--- a/tests/tls.c
+++ b/tests/tls.c
@@ -29,47 +29,27 @@
//
// Generated using openssl:
//
-// % openssl ecparam -name secp521r1 -noout -genkey -out key.key
-// % openssl req -new -key key.key -out cert.csr
-// % openssl x509 -req -in cert.csr -days 36500 -out cert.crt -signkey key.key
+// % openssl rsa -genkey -out key.key
+// % openssl req -new -key key.key -out cert.csr -sha256
+// % openssl x509 -req -in cert.csr -days 36500 -out cert.crt
+// -signkey key.key -sha256
//
// Relevant metadata:
//
// Certificate:
-// Data:
+// Data:
// Version: 1 (0x0)
-// Serial Number: 9808857926806240008 (0x882010509b8f7b08)
-// Signature Algorithm: ecdsa-with-SHA1
-// Issuer: C=US, ST=CA, L=San Diego, O=nanomsg, CN=127.0.0.1
+// Serial Number: 17127835813110005400 (0xedb24becc3a2be98)
+// Signature Algorithm: sha256WithRSAEncryption
+// Issuer: C=US, ST=CA, L=San Diego, O=nanomsg.org, CN=localhost
// Validity
-// Not Before: Nov 17 20:08:06 2017 GMT
-// Not After : Oct 24 20:08:06 2117 GMT
-// Subject: C=US, ST=CA, L=San Diego, O=nanomsg, CN=127.0.0.1
+// Not Before: Jan 11 22:34:35 2018 GMT
+// Not After : Dec 18 22:34:35 2117 GMT
+// Subject: C=US, ST=CA, L=San Diego, O=nanomsg.org, CN=localhost
+// Subject Public Key Info:
+// Public Key Algorithm: rsaEncryption
+// Public-Key: (2048 bit)
//
-static const char eccert[] =
- "-----BEGIN CERTIFICATE-----\n"
- "MIICIjCCAYMCCQDaC9ARg31kIjAKBggqhkjOPQQDAjBUMQswCQYDVQQGEwJVUzEL\n"
- "MAkGA1UECAwCQ0ExEjAQBgNVBAcMCVNhbiBEaWVnbzEQMA4GA1UECgwHbmFub21z\n"
- "ZzESMBAGA1UEAwwJMTI3LjAuMC4xMCAXDTE3MTExNzIwMjczMloYDzIxMTcxMDI0\n"
- "MjAyNzMyWjBUMQswCQYDVQQGEwJVUzELMAkGA1UECAwCQ0ExEjAQBgNVBAcMCVNh\n"
- "biBEaWVnbzEQMA4GA1UECgwHbmFub21zZzESMBAGA1UEAwwJMTI3LjAuMC4xMIGb\n"
- "MBAGByqGSM49AgEGBSuBBAAjA4GGAAQAN7vDK6GEiSguMsOuhfOvGyiVc37Sog0b\n"
- "UkpaiS6+SagTmXFSN1Rgh9isxKFYJvcCtAko3v0I8rAVQucdhf5B3hEBMQlbBIuM\n"
- "rMKT6ZQJ+eiwyb4O3Scgd7DoL3tc/kOqijwB/5hJ4sZdquDKP5DDFe5fAf4MNtzY\n"
- "4C+iApWlKq/LoXkwCgYIKoZIzj0EAwIDgYwAMIGIAkIBOuJAWmNSdd6Ovmr6Ebg3\n"
- "UF9ZrsNwARd9BfYbBk5OQhUOjCLB6d8aLi49WOm1WoRvOS5PaVvmvSfNhaw8b5nV\n"
- "hnYCQgC+EmJ6C3bEcZrndhfbqvCaOGkc7/SrKhC6fS7mJW4wL90QUV9WjQ2Ll6X5\n"
- "PxkSj7s0SvD6T8j7rju5LDgkdZc35A==\n"
- "-----END CERTIFICATE-----\n";
-
-static const char eckey[] =
- "-----BEGIN EC PRIVATE KEY-----\n"
- "MIHcAgEBBEIB20OHMntU2UJW2yuQn2f+bLsuhTT5KRGorcocnqxatWLvxuF1cfUA\n"
- "TjQxRRS6BIUvFt1fMIklp9qedJF00JHy4qWgBwYFK4EEACOhgYkDgYYABAA3u8Mr\n"
- "oYSJKC4yw66F868bKJVzftKiDRtSSlqJLr5JqBOZcVI3VGCH2KzEoVgm9wK0CSje\n"
- "/QjysBVC5x2F/kHeEQExCVsEi4yswpPplAn56LDJvg7dJyB3sOgve1z+Q6qKPAH/\n"
- "mEnixl2q4Mo/kMMV7l8B/gw23NjgL6IClaUqr8uheQ==\n"
- "-----END EC PRIVATE KEY-----\n";
static const char cert[] =
"-----BEGIN CERTIFICATE-----\n"
@@ -92,6 +72,7 @@ static const char cert[] =
"dFMXOO1rleU0lWAJcXWOWHH3er0fivu2ISL8fRjjikYvhRGxtkwC0kPDa2Ntzgd3\n"
"Hsg=\n"
"-----END CERTIFICATE-----\n";
+
static const char key[] =
"-----BEGIN RSA PRIVATE KEY-----\n"
"MIIEpQIBAAKCAQEAzL6B3RJ3zoZhtz04+mAuas+jeYYJnMH+BGZKK+PkdUOYQziq\n"
@@ -377,6 +358,7 @@ TestMain("TLS Transport", {
nng_msg * msg;
nng_pipe p;
int v;
+ nng_dialer d;
So(nng_pair_open(&s1) == 0);
So(nng_pair_open(&s2) == 0);
@@ -392,11 +374,14 @@ TestMain("TLS Transport", {
// reset port back one
trantest_prev_address(addr, "tls+tcp://127.0.0.1:%u");
- So(nng_setopt_int(s2, NNG_OPT_TLS_AUTH_MODE,
- NNG_TLS_AUTH_MODE_OPTIONAL) == 0);
So(nng_setopt_ms(s2, NNG_OPT_RECVTIMEO, 200) == 0);
- So(nng_dial(s2, addr, NULL, 0) == 0);
- nng_msleep(100);
+ So(nng_dialer_create(&d, s2, addr) == 0);
+ So(init_dialer_tls_file(NULL, d) == 0);
+ So(nng_dialer_setopt_int(d, NNG_OPT_TLS_AUTH_MODE,
+ NNG_TLS_AUTH_MODE_OPTIONAL) == 0);
+ So(nng_dialer_setopt_string(
+ d, NNG_OPT_TLS_SERVER_NAME, "example.com") == 0);
+ So(nng_dialer_start(d, 0) == 0);
So(nng_send(s1, "hello", 6, 0) == 0);
So(nng_recvmsg(s2, &msg, 0) == 0);
diff --git a/tests/trantest.h b/tests/trantest.h
index c85b3429..80f59ff9 100644
--- a/tests/trantest.h
+++ b/tests/trantest.h
@@ -137,7 +137,10 @@ trantest_init(trantest *tt, const char *addr)
So(nng_req_open(&tt->reqsock) == 0);
So(nng_rep_open(&tt->repsock) == 0);
- tt->tran = nni_tran_find(addr);
+ nni_url *url;
+ So(nni_url_parse(&url, tt->addr) == 0);
+ tt->tran = nni_tran_find(url);
+ nni_url_free(url);
So(tt->tran != NULL);
#else
ConveySkip("Missing REQ or REP protocols");
diff --git a/tests/wssfile.c b/tests/wssfile.c
index 28cdf6b6..73bc1cdb 100644
--- a/tests/wssfile.c
+++ b/tests/wssfile.c
@@ -295,6 +295,7 @@ TestMain("WebSocket Secure (TLS) Transport (file based)", {
nng_socket s1;
nng_socket s2;
nng_listener l;
+ nng_dialer d;
char addr[NNG_MAXADDRLEN];
nng_msg * msg;
nng_pipe p;
@@ -314,10 +315,20 @@ TestMain("WebSocket Secure (TLS) Transport (file based)", {
// reset port back one
trantest_prev_address(addr, "wss://127.0.0.1:%u/test");
+ So(nng_setopt_ms(s2, NNG_OPT_RECVTIMEO, 200) == 0);
+ So(nng_dialer_create(&d, s2, addr) == 0);
+ So(init_dialer_wss_file(NULL, d) == 0);
+ So(nng_dialer_setopt_int(d, NNG_OPT_TLS_AUTH_MODE,
+ NNG_TLS_AUTH_MODE_OPTIONAL) == 0);
+ So(nng_dialer_setopt_string(
+ d, NNG_OPT_TLS_SERVER_NAME, "example.com") == 0);
+ So(nng_dialer_start(d, 0) == 0);
+#if 0
So(nng_setopt_int(s2, NNG_OPT_TLS_AUTH_MODE,
NNG_TLS_AUTH_MODE_OPTIONAL) == 0);
So(nng_setopt_ms(s2, NNG_OPT_RECVTIMEO, 200) == 0);
So(nng_dial(s2, addr, NULL, 0) == 0);
+#endif
nng_msleep(100);
So(nng_send(s1, "hello", 6, 0) == 0);