summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrl1987 <rl1987@sdf.lonestar.org>2015-10-08 21:47:52 +0300
committerrl1987 <rl1987@sdf.lonestar.org>2015-10-24 14:30:50 +0300
commit1096f7638e883f9a6dfc86b9804090f090afb68f (patch)
treeb2a14e29e16ae358c4aae1555c443c887d1d7d93
parent2fc841aacbfdb0e824ab3bed9e06db8d9c793747 (diff)
downloadtor-1096f7638e883f9a6dfc86b9804090f090afb68f.tar.gz
tor-1096f7638e883f9a6dfc86b9804090f090afb68f.zip
A second test case for dns_resolve_impl.
-rw-r--r--src/or/router.c4
-rw-r--r--src/or/router.h2
-rw-r--r--src/test/test_dns.c29
3 files changed, 31 insertions, 4 deletions
diff --git a/src/or/router.c b/src/or/router.c
index 9c6204c729..1790416cf6 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 2e8c02537b..85f43d804d 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 f1b11a88e8..88a2f4a74b 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;
}