1 /* Copyright (c) 2007-2015, The Tor Project, Inc. */
2 /* See LICENSE for licensing information */
5 * \file test_nodelist.c
6 * \brief Unit tests for nodelist related functions.
13 /** Test the case when node_get_by_id() returns NULL,
14 * node_get_verbose_nickname_by_id should return the base 16 encoding
18 test_nodelist_node_get_verbose_nickname_by_id_null_node(void *arg
)
20 char vname
[MAX_VERBOSE_NICKNAME_LEN
+1];
21 const char ID
[] = "\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA"
22 "\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA";
25 /* make sure node_get_by_id returns NULL */
26 tt_assert(!node_get_by_id(ID
));
27 node_get_verbose_nickname_by_id(ID
, vname
);
28 tt_str_op(vname
,OP_EQ
, "$AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA");
33 /** For routers without named flag, get_verbose_nickname should return
34 * "Fingerprint~Nickname"
37 test_nodelist_node_get_verbose_nickname_not_named(void *arg
)
40 routerstatus_t mock_rs
;
42 char vname
[MAX_VERBOSE_NICKNAME_LEN
+1];
46 memset(&mock_node
, 0, sizeof(node_t
));
47 memset(&mock_rs
, 0, sizeof(routerstatus_t
));
49 /* verbose nickname should use ~ instead of = for unnamed routers */
50 strlcpy(mock_rs
.nickname
, "TestOR", sizeof(mock_rs
.nickname
));
51 mock_node
.rs
= &mock_rs
;
52 memcpy(mock_node
.identity
,
53 "\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA"
54 "\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA",
56 node_get_verbose_nickname(&mock_node
, vname
);
57 tt_str_op(vname
,OP_EQ
, "$AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA~TestOR");
63 #define NODE(name, flags) \
64 { #name, test_nodelist_##name, (flags), NULL, NULL }
66 struct testcase_t nodelist_tests
[] = {
67 NODE(node_get_verbose_nickname_by_id_null_node
, TT_FORK
),
68 NODE(node_get_verbose_nickname_not_named
, TT_FORK
),