aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rwxr-xr-xtests/functional_tests/address_book.py6
-rw-r--r--tests/unit_tests/epee_boosted_tcp_server.cpp11
-rw-r--r--tests/unit_tests/net.cpp50
3 files changed, 57 insertions, 10 deletions
diff --git a/tests/functional_tests/address_book.py b/tests/functional_tests/address_book.py
index 396ce505e..a315a1cdc 100755
--- a/tests/functional_tests/address_book.py
+++ b/tests/functional_tests/address_book.py
@@ -98,15 +98,15 @@ class AddressBookTest():
# request (partially) out of range
ok = False
- try: res = wallet.get_address_book[4, 2]
+ try: res = wallet.get_address_book([4, 2])
except: ok = True
assert ok
ok = False
- try: res = wallet.get_address_book[0, 2]
+ try: res = wallet.get_address_book([0, 2])
except: ok = True
assert ok
ok = False
- try: res = wallet.get_address_book[2, 0]
+ try: res = wallet.get_address_book([2, 0])
except: ok = True
assert ok
diff --git a/tests/unit_tests/epee_boosted_tcp_server.cpp b/tests/unit_tests/epee_boosted_tcp_server.cpp
index 6052f7a50..586cc25a5 100644
--- a/tests/unit_tests/epee_boosted_tcp_server.cpp
+++ b/tests/unit_tests/epee_boosted_tcp_server.cpp
@@ -801,14 +801,11 @@ TEST(boosted_tcp_server, shutdown)
server.get_config_object().handshake_received.wait();
}
- // Now stop the server, providing the callback necessary to wait for all connections to shutdown
- const auto close_all_connections = [&]()
- {
- server.get_config_object().close(context.m_connection_id, true/*wait_for_shutdown*/);
- };
-
MINFO("Stopping the server");
- server.send_stop_signal(close_all_connections);
+ server.mark_stop_signal_sent();
+ server.close_server_connections();
+ server.get_config_object().close(context.m_connection_id, true/*wait_for_shutdown*/);
+ server.stop_io_context();
running_server.join();
MINFO("Waiting for handshake to cancel");
diff --git a/tests/unit_tests/net.cpp b/tests/unit_tests/net.cpp
index 30e5f5589..291f1e6ab 100644
--- a/tests/unit_tests/net.cpp
+++ b/tests/unit_tests/net.cpp
@@ -58,6 +58,7 @@
#include "crypto/crypto.h"
#include "net/dandelionpp.h"
#include "net/error.h"
+#include "net/host.h"
#include "net/i2p_address.h"
#include "net/net_utils_base.h"
#include "net/socks.h"
@@ -69,12 +70,23 @@
#include "serialization/keyvalue_serialization.h"
#include "storages/portable_storage.h"
+TEST(host, canonicalize_host)
+{
+ std::string host{"ABCdef123.ONION"};
+ net::canonicalize_host(host);
+ EXPECT_EQ("abcdef123.onion", host);
+}
+
namespace
{
static constexpr const char v2_onion[] =
"xmrto2bturnore26.onion";
static constexpr const char v3_onion[] =
"vww6ybal4bd7szmgncyruucpgfkqahzddi37ktceo3ah7ngmcopnpyyd.onion";
+ static constexpr const char v3_onion_upper[] =
+ "VWW6YBAL4BD7SZMGNCYRUUCPGFKQAHZDDI37KTCEO3AH7NGMCOPNPYYD.ONION";
+ static constexpr const char v3_onion_2[] =
+ "zpv4fa3szgel7vf6jdjeugizdclq2vzkelscs2bhbgnlldzzggcen3ad.onion";
}
TEST(tor_address, constants)
@@ -147,6 +159,10 @@ TEST(tor_address, valid)
EXPECT_STREQ(v3_onion, address1->str().c_str());
EXPECT_TRUE(address1->is_blockable());
+ const auto uppercase = net::tor_address::make(v3_onion_upper);
+ ASSERT_TRUE(uppercase.has_value());
+ EXPECT_EQ(*address1, *uppercase);
+
net::tor_address address2{*address1};
EXPECT_EQ(0u, address2.port());
@@ -327,6 +343,20 @@ TEST(tor_address, epee_serializev_v3)
EXPECT_STREQ(v3_onion, command.tor.host_str());
EXPECT_EQ(10u, command.tor.port());
+ // make sure tor_address::_load canonicalizes incoming hosts
+ {
+ epee::serialization::portable_storage stg{};
+ stg.load_from_binary(epee::to_span(buffer));
+
+ EXPECT_TRUE(stg.set_value("host", std::string{v3_onion_upper}, stg.open_section("tor", nullptr, false)));
+ EXPECT_TRUE(command.load(stg));
+ }
+
+ EXPECT_FALSE(command.tor.is_unknown());
+ EXPECT_NE(net::tor_address{}, command.tor);
+ EXPECT_STREQ(v3_onion, command.tor.host_str());
+ EXPECT_EQ(10u, command.tor.port());
+
// make sure that exceeding max buffer doesn't destroy tor_address::_load
{
epee::serialization::portable_storage stg{};
@@ -532,6 +562,8 @@ namespace
{
static constexpr const char b32_i2p[] =
"vww6ybal4bd7szmgncyruucpgfkqahzddi37ktceo3ah7ngmcopn.b32.i2p";
+ static constexpr const char b32_i2p_upper[] =
+ "VWW6YBAL4BD7SZMGNCYRUUCPGFKQAHZDDI37KTCEO3AH7NGMCOPN.B32.I2P";
static constexpr const char b32_i2p_2[] =
"xmrto2bturnore26xmrto2bturnore26xmrto2bturnore26xmr2.b32.i2p";
}
@@ -600,6 +632,10 @@ TEST(i2p_address, valid)
EXPECT_STREQ(b32_i2p, address1->str().c_str());
EXPECT_TRUE(address1->is_blockable());
+ const auto uppercase = net::i2p_address::make(b32_i2p_upper);
+ ASSERT_TRUE(uppercase.has_value());
+ EXPECT_EQ(*address1, *uppercase);
+
net::i2p_address address2{*address1};
EXPECT_EQ(1u, address2.port());
@@ -729,6 +765,20 @@ TEST(i2p_address, epee_serializev_b32)
EXPECT_STREQ(b32_i2p, command.i2p.host_str());
EXPECT_EQ(1u, command.i2p.port());
+ // make sure i2p_address::_load canonicalizes incoming hosts
+ {
+ epee::serialization::portable_storage stg{};
+ stg.load_from_binary(epee::to_span(buffer));
+
+ EXPECT_TRUE(stg.set_value("host", std::string{b32_i2p_upper}, stg.open_section("i2p", nullptr, false)));
+ EXPECT_TRUE(command.load(stg));
+ }
+
+ EXPECT_FALSE(command.i2p.is_unknown());
+ EXPECT_NE(net::i2p_address{}, command.i2p);
+ EXPECT_STREQ(b32_i2p, command.i2p.host_str());
+ EXPECT_EQ(1u, command.i2p.port());
+
// make sure that exceeding max buffer doesn't destroy i2p_address::_load
{
epee::serialization::portable_storage stg{};