Added tests

Added tests for channel_matches_target_addr_for_extend().
Ticket #33919.
This commit is contained in:
MrSquanchee 2020-04-21 18:23:42 +05:30 committed by Nick Mathewson
parent b119c55776
commit c84ce716dc
2 changed files with 59 additions and 0 deletions

3
changes/ticket33919 Normal file
View File

@ -0,0 +1,3 @@
o Minor features (testing):
- Added unit tests for channel_matches_target_addr_for_extend().
Closes Ticket 33919. Patch by MrSquanchee.

View File

@ -16,6 +16,10 @@
/* For packed_cell stuff */
#define RELAY_PRIVATE
#include "core/or/relay.h"
/* For channel_tls_t object and private functions. */
#define CHANNEL_OBJECT_PRIVATE
#define CHANNELTLS_PRIVATE
#include "core/or/channeltls.h"
/* For init/free stuff */
#include "core/or/scheduler.h"
#include "feature/nodelist/networkstatus.h"
@ -25,6 +29,8 @@
#include "core/or/origin_circuit_st.h"
#include "feature/nodelist/routerstatus_st.h"
#include "core/or/var_cell_st.h"
#include "core/or/or_connection_st.h"
#include "lib/net/inaddr.h"
/* Test suite stuff */
#include "test/log_test_helpers.h"
@ -1537,6 +1543,54 @@ test_channel_listener(void *arg)
channel_free_all();
}
#define TEST_SETUP_MATCHES_ADDR(orcon, addr, src, rv) STMT_BEGIN \
rv = tor_inet_pton(addr.family, src, &addr.addr); \
tt_int_op(rv, OP_EQ, 1); \
orcon->real_addr = addr; \
STMT_END;
#define TEST_MATCHES_ADDR(chan, addr, rv, exp) STMT_BEGIN \
rv = channel_matches_target_addr_for_extend(chan, &addr); \
tt_int_op(rv, OP_EQ, exp); \
STMT_END;
static void
test_channel_matches_target_addr_for_extend(void *arg)
{
(void) arg;
channel_tls_t *tlschan = tor_malloc_zero(sizeof(*tlschan));
or_connection_t *orcon = tor_malloc_zero(sizeof(*orcon));
channel_t *chan = &(tlschan->base_);
tor_addr_t addr;
int rv;
tlschan->conn = orcon;
channel_tls_common_init(tlschan);
/* Test for IPv4 addresses. */
addr.family = AF_INET;
TEST_SETUP_MATCHES_ADDR(orcon, addr, "1.2.3.4", rv);
TEST_MATCHES_ADDR(chan, addr, rv, 1);
tor_inet_pton(addr.family, "2.5.3.4", &addr.addr);
TEST_MATCHES_ADDR(chan, addr, rv, 0);
/* Test for IPv6 addresses. */
addr.family = AF_INET6;
TEST_SETUP_MATCHES_ADDR(orcon, addr, "3:4:7:1:9:8:09:10", rv);
TEST_MATCHES_ADDR(chan, addr, rv, 1);
tor_inet_pton(addr.family, "::", &addr.addr);
TEST_MATCHES_ADDR(chan, addr, rv, 0);
done:
circuitmux_clear_policy(chan->cmux);
circuitmux_free(chan->cmux);
tor_free(orcon);
tor_free(tlschan);
}
struct testcase_t channel_tests[] = {
{ "inbound_cell", test_channel_inbound_cell, TT_FORK,
NULL, NULL },
@ -1558,5 +1612,7 @@ struct testcase_t channel_tests[] = {
NULL, NULL },
{ "listener", test_channel_listener, TT_FORK,
NULL, NULL },
{ "matches_target", test_channel_matches_target_addr_for_extend, TT_FORK,
NULL, NULL },
END_OF_TESTCASES
};