commit 1096f7638e883f9a6dfc86b9804090f090afb68f Author: rl1987 rl1987@sdf.lonestar.org Date: Thu Oct 8 21:47:52 2015 +0300
A second test case for dns_resolve_impl. --- src/or/router.c | 4 ++-- src/or/router.h | 2 +- src/test/test_dns.c | 29 ++++++++++++++++++++++++++++- 3 files changed, 31 insertions(+), 4 deletions(-)
diff --git a/src/or/router.c b/src/or/router.c index 9c6204c..1790416 100644 --- a/src/or/router.c +++ b/src/or/router.c @@ -1714,8 +1714,8 @@ router_compare_to_my_exit_policy(const tor_addr_t *addr, uint16_t port)
/** Return true iff my exit policy is reject *:*. Return -1 if we don't * have a descriptor */ -int -router_my_exit_policy_is_reject_star(void) +MOCK_IMPL(int, +router_my_exit_policy_is_reject_star,(void)) { if (!router_get_my_routerinfo()) /* make sure desc_routerinfo exists */ return -1; diff --git a/src/or/router.h b/src/or/router.h index 2e8c025..85f43d8 100644 --- a/src/or/router.h +++ b/src/or/router.h @@ -80,7 +80,7 @@ void check_descriptor_ipaddress_changed(time_t now); void router_new_address_suggestion(const char *suggestion, const dir_connection_t *d_conn); int router_compare_to_my_exit_policy(const tor_addr_t *addr, uint16_t port); -int router_my_exit_policy_is_reject_star(void); +MOCK_DECL(int, router_my_exit_policy_is_reject_star,(void)); MOCK_DECL(const routerinfo_t *, router_get_my_routerinfo, (void)); extrainfo_t *router_get_my_extrainfo(void); const char *router_get_my_descriptor(void); diff --git a/src/test/test_dns.c b/src/test/test_dns.c index f1b11a8..88a2f4a 100644 --- a/src/test/test_dns.c +++ b/src/test/test_dns.c @@ -5,6 +5,7 @@
#include "dns.h" #include "connection.h" +#include "router.h"
#define NS_MODULE dns
@@ -382,12 +383,38 @@ NS(test_main)(void *arg)
#define NS_SUBMODULE ASPECT(resolve_impl, non_exit)
+/** Given that Tor instance is not configured as an exit node, we want + * dns_resolve_impl() to fail with return value -1. + */ +static int +NS(router_my_exit_policy_is_reject_star)(void) +{ + return 1; +} + static void NS(test_main)(void *arg) { - tt_skip(); + int retval; + int made_pending; + + edge_connection_t *exitconn = create_valid_exitconn(); + or_circuit_t *on_circ = tor_malloc_zero(sizeof(or_circuit_t)); + + TO_CONN(exitconn)->address = tor_strdup("torproject.org"); + + NS_MOCK(router_my_exit_policy_is_reject_star); + + retval = dns_resolve_impl(exitconn, 1, on_circ, NULL, &made_pending, + NULL); + + tt_int_op(retval,==,-1);
done: + tor_free(TO_CONN(exitconn)->address); + tor_free(exitconn); + tor_free(on_circ); + NS_UNMOCK(router_my_exit_policy_is_reject_star); return; }