1 /* Copyright (c) 2019-2021, The Tor Project, Inc. */
2 /* See LICENSE for licensing information */
5 * \file test_proto_haproxy.c
6 * \brief Tests for our HAProxy protocol parser code
9 #define PROTO_HAPROXY_PRIVATE
11 #include "test/test.h"
12 #include "core/proto/proto_haproxy.h"
13 #include "test/log_test_helpers.h"
16 test_format_proxy_header_line(void *arg
)
19 tor_addr_port_t
*addr_port
= NULL
;
25 tor_addr_parse(&addr
, "192.168.1.2");
26 addr_port
= tor_addr_port_new(&addr
, 8000);
27 output
= haproxy_format_proxy_header_line(addr_port
);
29 tt_str_op(output
, OP_EQ
, "PROXY TCP4 0.0.0.0 192.168.1.2 0 8000\r\n");
35 tor_addr_parse(&addr
, "123:45:6789::5005:11");
36 addr_port
= tor_addr_port_new(&addr
, 8000);
37 output
= haproxy_format_proxy_header_line(addr_port
);
39 tt_str_op(output
, OP_EQ
, "PROXY TCP6 :: 123:45:6789::5005:11 0 8000\r\n");
44 /* UNIX socket address. */
45 memset(&addr
, 0, sizeof(addr
));
46 addr
.family
= AF_UNIX
;
47 addr_port
= tor_addr_port_new(&addr
, 8000);
48 output
= haproxy_format_proxy_header_line(addr_port
);
50 /* If it's not an IPv4 or IPv6 address, haproxy_format_proxy_header_line
51 * must return NULL. */
52 tt_ptr_op(output
, OP_EQ
, NULL
);
62 struct testcase_t proto_haproxy_tests
[] = {
63 { "format_proxy_header_line", test_format_proxy_header_line
, 0, NULL
, NULL
},