test_proto_haproxy.c (1618B)
1 /* Copyright (c) 2019-2021, The Tor Project, Inc. */ 2 /* See LICENSE for licensing information */ 3 4 /** 5 * \file test_proto_haproxy.c 6 * \brief Tests for our HAProxy protocol parser code 7 */ 8 9 #define PROTO_HAPROXY_PRIVATE 10 11 #include "test/test.h" 12 #include "core/proto/proto_haproxy.h" 13 #include "test/log_test_helpers.h" 14 15 static void 16 test_format_proxy_header_line(void *arg) 17 { 18 tor_addr_t addr; 19 tor_addr_port_t *addr_port = NULL; 20 char *output = NULL; 21 22 (void) arg; 23 24 /* IPv4 address. */ 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); 28 29 tt_str_op(output, OP_EQ, "PROXY TCP4 0.0.0.0 192.168.1.2 0 8000\r\n"); 30 31 tor_free(addr_port); 32 tor_free(output); 33 34 /* IPv6 address. */ 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); 38 39 tt_str_op(output, OP_EQ, "PROXY TCP6 :: 123:45:6789::5005:11 0 8000\r\n"); 40 41 tor_free(addr_port); 42 tor_free(output); 43 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); 49 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); 53 54 tor_free(addr_port); 55 tor_free(output); 56 57 done: 58 tor_free(addr_port); 59 tor_free(output); 60 } 61 62 struct testcase_t proto_haproxy_tests[] = { 63 { "format_proxy_header_line", test_format_proxy_header_line, 0, NULL, NULL }, 64 65 END_OF_TESTCASES 66 };