mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-12-06 19:41:15 +01:00
Merge remote-tracking branch 'rl1987/bug25852_take2'
This commit is contained in:
+64
-2
@@ -1496,9 +1496,21 @@ test_dump_exit_policy_to_string(void *arg)
|
||||
}
|
||||
|
||||
static routerinfo_t *mock_desc_routerinfo = NULL;
|
||||
static int routerinfo_err;
|
||||
|
||||
static const routerinfo_t *
|
||||
mock_router_get_my_routerinfo(void)
|
||||
mock_router_get_my_routerinfo_with_err(int *err)
|
||||
{
|
||||
if (routerinfo_err) {
|
||||
if (err)
|
||||
*err = routerinfo_err;
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (err)
|
||||
*err = 0;
|
||||
|
||||
return mock_desc_routerinfo;
|
||||
}
|
||||
|
||||
@@ -1541,7 +1553,8 @@ test_policies_getinfo_helper_policies(void *arg)
|
||||
tor_free(answer);
|
||||
|
||||
memset(&mock_my_routerinfo, 0, sizeof(routerinfo_t));
|
||||
MOCK(router_get_my_routerinfo, mock_router_get_my_routerinfo);
|
||||
MOCK(router_get_my_routerinfo_with_err,
|
||||
mock_router_get_my_routerinfo_with_err);
|
||||
mock_my_routerinfo.exit_policy = smartlist_new();
|
||||
mock_desc_routerinfo = &mock_my_routerinfo;
|
||||
|
||||
@@ -1658,6 +1671,55 @@ test_policies_getinfo_helper_policies(void *arg)
|
||||
tt_assert(strlen(answer) == ipv4_len + ipv6_len + 1);
|
||||
tor_free(answer);
|
||||
|
||||
routerinfo_err = TOR_ROUTERINFO_ERROR_NO_EXT_ADDR;
|
||||
rv = getinfo_helper_policies(NULL, "exit-policy/full", &answer,
|
||||
&errmsg);
|
||||
tt_int_op(rv, OP_EQ, -1);
|
||||
tt_ptr_op(answer, OP_EQ, NULL);
|
||||
tt_ptr_op(errmsg, OP_NE, NULL);
|
||||
tt_str_op(errmsg, OP_EQ, "No known exit address yet");
|
||||
|
||||
routerinfo_err = TOR_ROUTERINFO_ERROR_CANNOT_PARSE;
|
||||
rv = getinfo_helper_policies(NULL, "exit-policy/full", &answer,
|
||||
&errmsg);
|
||||
tt_int_op(rv, OP_EQ, -1);
|
||||
tt_ptr_op(answer, OP_EQ, NULL);
|
||||
tt_ptr_op(errmsg, OP_NE, NULL);
|
||||
tt_str_op(errmsg, OP_EQ, "Cannot parse descriptor");
|
||||
|
||||
routerinfo_err = TOR_ROUTERINFO_ERROR_NOT_A_SERVER;
|
||||
rv = getinfo_helper_policies(NULL, "exit-policy/full", &answer,
|
||||
&errmsg);
|
||||
tt_int_op(rv, OP_EQ, 0);
|
||||
tt_ptr_op(answer, OP_EQ, NULL);
|
||||
tt_ptr_op(errmsg, OP_NE, NULL);
|
||||
tt_str_op(errmsg, OP_EQ, "Not running in server mode");
|
||||
|
||||
routerinfo_err = TOR_ROUTERINFO_ERROR_DIGEST_FAILED;
|
||||
rv = getinfo_helper_policies(NULL, "exit-policy/full", &answer,
|
||||
&errmsg);
|
||||
|
||||
tt_int_op(rv, OP_EQ, 0);
|
||||
tt_ptr_op(answer, OP_EQ, NULL);
|
||||
tt_ptr_op(errmsg, OP_NE, NULL);
|
||||
tt_str_op(errmsg, OP_EQ, "Key digest failed");
|
||||
|
||||
routerinfo_err = TOR_ROUTERINFO_ERROR_CANNOT_GENERATE;
|
||||
rv = getinfo_helper_policies(NULL, "exit-policy/full", &answer,
|
||||
&errmsg);
|
||||
tt_int_op(rv, OP_EQ, -1);
|
||||
tt_ptr_op(answer, OP_EQ, NULL);
|
||||
tt_ptr_op(errmsg, OP_NE, NULL);
|
||||
tt_str_op(errmsg, OP_EQ, "Cannot generate descriptor");
|
||||
|
||||
routerinfo_err = TOR_ROUTERINFO_ERROR_DESC_REBUILDING;
|
||||
rv = getinfo_helper_policies(NULL, "exit-policy/full", &answer,
|
||||
&errmsg);
|
||||
tt_int_op(rv, OP_EQ, -1);
|
||||
tt_ptr_op(answer, OP_EQ, NULL);
|
||||
tt_ptr_op(errmsg, OP_NE, NULL);
|
||||
tt_str_op(errmsg, OP_EQ, "Descriptor still rebuilding - not ready yet");
|
||||
|
||||
done:
|
||||
tor_free(answer);
|
||||
UNMOCK(get_options);
|
||||
|
||||
Reference in New Issue
Block a user