mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-24 12:23:32 +01:00
test: Add test_hs_circ.c for HS circuit testing
For now, only tests HS circuit repurpose function. Part of #29034 Signed-off-by: David Goulet <dgoulet@torproject.org>
This commit is contained in:
parent
3789f22bcb
commit
41b94722e5
@ -132,6 +132,7 @@ src_test_test_SOURCES += \
|
||||
src/test/test_hs_common.c \
|
||||
src/test/test_hs_config.c \
|
||||
src/test/test_hs_cell.c \
|
||||
src/test/test_hs_circ.c \
|
||||
src/test/test_hs_ntor.c \
|
||||
src/test/test_hs_service.c \
|
||||
src/test/test_hs_client.c \
|
||||
|
@ -877,6 +877,7 @@ struct testgroup_t testgroups[] = {
|
||||
{ "legacy_hs/", hs_tests },
|
||||
{ "hs_cache/", hs_cache },
|
||||
{ "hs_cell/", hs_cell_tests },
|
||||
{ "hs_circ/", hs_circ_tests },
|
||||
{ "hs_common/", hs_common_tests },
|
||||
{ "hs_config/", hs_config_tests },
|
||||
{ "hs_control/", hs_control_tests },
|
||||
|
@ -216,6 +216,7 @@ extern struct testcase_t geoip_tests[];
|
||||
extern struct testcase_t hs_tests[];
|
||||
extern struct testcase_t hs_cache[];
|
||||
extern struct testcase_t hs_cell_tests[];
|
||||
extern struct testcase_t hs_circ_tests[];
|
||||
extern struct testcase_t hs_common_tests[];
|
||||
extern struct testcase_t hs_config_tests[];
|
||||
extern struct testcase_t hs_control_tests[];
|
||||
|
70
src/test/test_hs_circ.c
Normal file
70
src/test/test_hs_circ.c
Normal file
@ -0,0 +1,70 @@
|
||||
/* Copyright (c) 2017-2019, The Tor Project, Inc. */
|
||||
/* See LICENSE for licensing information */
|
||||
|
||||
/**
|
||||
* \file test_hs_circ.c
|
||||
* \brief Test hidden service circuit functionality.
|
||||
*/
|
||||
|
||||
#define CIRCUITLIST_PRIVATE
|
||||
|
||||
#include "test/test.h"
|
||||
#include "test/test_helpers.h"
|
||||
#include "test/log_test_helpers.h"
|
||||
|
||||
#include "core/or/circuitbuild.h"
|
||||
#include "core/or/circuitlist.h"
|
||||
#include "core/or/circuituse.h"
|
||||
#include "core/or/origin_circuit_st.h"
|
||||
|
||||
#include "feature/hs/hs_circuit.h"
|
||||
#include "feature/hs/hs_circuitmap.h"
|
||||
|
||||
static void
|
||||
test_circuit_repurpose(void *arg)
|
||||
{
|
||||
origin_circuit_t *intro_circ = NULL;
|
||||
const origin_circuit_t *search;
|
||||
ed25519_keypair_t kp;
|
||||
|
||||
(void) arg;
|
||||
|
||||
hs_init();
|
||||
|
||||
intro_circ = origin_circuit_init(CIRCUIT_PURPOSE_S_ESTABLISH_INTRO, 0);
|
||||
tt_assert(intro_circ);
|
||||
ed25519_keypair_generate(&kp, 0);
|
||||
|
||||
/* Register circuit in global map and make sure it is actually there. */
|
||||
hs_circuitmap_register_intro_circ_v3_service_side(intro_circ,
|
||||
&kp.pubkey);
|
||||
tt_assert(TO_CIRCUIT(intro_circ)->hs_token);
|
||||
search = hs_circuitmap_get_intro_circ_v3_service_side(&kp.pubkey);
|
||||
tt_mem_op(search, OP_EQ, intro_circ, sizeof(origin_circuit_t));
|
||||
|
||||
/* Setup circuit HS ident. We don't care about the service pubkey. */
|
||||
intro_circ->hs_ident = hs_ident_circuit_new(&kp.pubkey,
|
||||
HS_IDENT_CIRCUIT_INTRO);
|
||||
tt_assert(intro_circ->hs_ident);
|
||||
|
||||
/* Trigger a repurpose. State should be cleaned up. */
|
||||
hs_circ_repurpose(TO_CIRCUIT(intro_circ));
|
||||
|
||||
/* Removed from map. */
|
||||
search = hs_circuitmap_get_intro_circ_v3_service_side(&kp.pubkey);
|
||||
tt_assert(!search);
|
||||
/* HS identifier has been removed. */
|
||||
tt_assert(!intro_circ->hs_ident);
|
||||
|
||||
done:
|
||||
circuit_free_(TO_CIRCUIT(intro_circ));
|
||||
hs_free_all();
|
||||
}
|
||||
|
||||
struct testcase_t hs_circ_tests[] = {
|
||||
{ "repurpose", test_circuit_repurpose, TT_FORK,
|
||||
NULL, NULL },
|
||||
|
||||
END_OF_TESTCASES
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user