aboutsummaryrefslogtreecommitdiff
path: root/src/sp/transport/ws
diff options
context:
space:
mode:
authorGarrett D'Amore <garrett@damore.org>2024-11-30 18:07:55 -0500
committerGarrett D'Amore <garrett@damore.org>2024-11-30 18:07:55 -0500
commit8ad70f13f41f6ca7123e48747ee78a33d7b91970 (patch)
tree576743fe8b576a8d0b50ddf8e5d18e860aeb117e /src/sp/transport/ws
parent743be540b8d7689868e638abb6b20587833b25e2 (diff)
downloadnng-8ad70f13f41f6ca7123e48747ee78a33d7b91970.tar.gz
nng-8ad70f13f41f6ca7123e48747ee78a33d7b91970.tar.bz2
nng-8ad70f13f41f6ca7123e48747ee78a33d7b91970.zip
tests: convert ws transport test to NUTS
Diffstat (limited to 'src/sp/transport/ws')
-rw-r--r--src/sp/transport/ws/ws_test.c54
1 files changed, 54 insertions, 0 deletions
diff --git a/src/sp/transport/ws/ws_test.c b/src/sp/transport/ws/ws_test.c
index 514a2d3f..2e1300b3 100644
--- a/src/sp/transport/ws/ws_test.c
+++ b/src/sp/transport/ws/ws_test.c
@@ -195,6 +195,57 @@ test_ws_no_tls(void)
NUTS_CLOSE(s0);
}
+static void
+check_props_v4(nng_msg *msg)
+{
+ nng_pipe p;
+ size_t z;
+ nng_sockaddr la;
+ nng_sockaddr ra;
+ bool b;
+
+ p = nng_msg_get_pipe(msg);
+ NUTS_TRUE(nng_pipe_id(p) > 0);
+ NUTS_PASS(nng_pipe_get_addr(p, NNG_OPT_LOCADDR, &la));
+ NUTS_FAIL(nng_pipe_get_size(p, NNG_OPT_LOCADDR, &z), NNG_EBADTYPE);
+ NUTS_TRUE(la.s_family == NNG_AF_INET);
+ NUTS_TRUE(la.s_in.sa_port != 0);
+ NUTS_TRUE(la.s_in.sa_addr == htonl(0x7f000001));
+
+ NUTS_PASS(nng_pipe_get_addr(p, NNG_OPT_REMADDR, &ra));
+ NUTS_TRUE(ra.s_family == NNG_AF_INET);
+ NUTS_TRUE(ra.s_in.sa_port != 0);
+ NUTS_TRUE(ra.s_in.sa_addr == htonl(0x7f000001));
+ NUTS_TRUE(ra.s_in.sa_port != la.s_in.sa_port);
+ NUTS_FAIL(nng_pipe_get_size(p, NNG_OPT_REMADDR, &z), NNG_EBADTYPE);
+
+ NUTS_PASS(nng_pipe_get_bool(p, NNG_OPT_TCP_KEEPALIVE, &b));
+ NUTS_TRUE(b == false); // default
+
+ NUTS_PASS(nng_pipe_get_bool(p, NNG_OPT_TCP_NODELAY, &b));
+ NUTS_TRUE(b); // default
+
+ // Request Header
+ char *buf = NULL;
+ NUTS_PASS(nng_pipe_get_string(p, NNG_OPT_WS_REQUEST_HEADERS, &buf));
+ NUTS_TRUE(strstr(buf, "Sec-WebSocket-Key") != NULL);
+ nng_strfree(buf);
+
+ // Response Header
+ NUTS_PASS(nng_pipe_get_string(p, NNG_OPT_WS_RESPONSE_HEADERS, &buf));
+ NUTS_TRUE(strstr(buf, "Sec-WebSocket-Accept") != NULL);
+ nng_strfree(buf);
+}
+
+void
+test_ws_props_v4(void)
+{
+ nuts_tran_msg_props("ws", check_props_v4);
+}
+
+NUTS_DECLARE_TRAN_TESTS(ws)
+NUTS_DECLARE_TRAN_TESTS(ws6)
+
TEST_LIST = {
{ "ws url path filters", test_ws_url_path_filters },
{ "ws wild card port", test_wild_card_port },
@@ -202,5 +253,8 @@ TEST_LIST = {
{ "ws empty host", test_empty_host },
{ "ws recv max", test_ws_recv_max },
{ "ws no tls", test_ws_no_tls },
+ NUTS_INSERT_TRAN_TESTS(ws),
+ { "ws msg props", test_ws_props_v4 },
+ NUTS_INSERT_TRAN_TESTS(ws6),
{ NULL, NULL },
};