0
0
mirror of https://github.com/monero-project/kovri synced 2025-10-06 08:42:45 +02:00

Tests: add RI test cases for transports

This commit is contained in:
anonimal
2018-07-17 06:56:37 +00:00
parent 9b553ae514
commit a383f48e18

View File

@@ -31,8 +31,9 @@
#include "tests/unit_tests/main.h"
#include "core/router/identity.h"
#include "core/router/info.h"
struct RouterInfoFixture
struct RouterInfoFixture : public core::RouterInfoTraits
{
core::PrivateKeys keys = core::PrivateKeys::CreateRandomKeys(
core::SIGNING_KEY_TYPE_EDDSA_SHA512_ED25519);
@@ -53,4 +54,107 @@ BOOST_AUTO_TEST_CASE(InvalidSignature)
BOOST_CHECK_THROW(router.CreateBuffer(keys), std::exception);
}
BOOST_AUTO_TEST_CASE(IPv4)
{
core::RouterInfo ri(keys, {{"127.0.0.1", 12345}}, {true, true});
// Yes ipv4
BOOST_CHECK_EQUAL(ri.HasNTCP(), true);
BOOST_CHECK_EQUAL(ri.HasSSU(), true);
// No ipv6
// TODO(unassigned): logic would dictate that we only allow true for ipv6 capable
// but our current implementation doesn't allow this (these should return false)
BOOST_CHECK_EQUAL(ri.HasNTCP(true), true);
BOOST_CHECK_EQUAL(ri.HasSSU(true), true);
//
BOOST_CHECK_EQUAL(ri.HasV6(), false);
}
BOOST_AUTO_TEST_CASE(IPv6)
{
core::RouterInfo ri(keys, {{"::1", 12345}}, {true, true});
// No ipv4
BOOST_CHECK_EQUAL(ri.HasNTCP(), false);
BOOST_CHECK_EQUAL(ri.HasSSU(), false);
// Yes ipv6
BOOST_CHECK_EQUAL(ri.HasNTCP(true), true);
BOOST_CHECK_EQUAL(ri.HasSSU(true), true);
BOOST_CHECK_EQUAL(ri.HasV6(), true);
}
BOOST_AUTO_TEST_CASE(GetAddress)
{
core::RouterInfo ri(
keys, {{"127.0.0.1", 54321}, {"::1", 12345}}, {true, true});
// Yes ipv4
BOOST_CHECK_NE(ri.GetV4Address(Transport::NTCP), nullptr);
BOOST_CHECK_NE(ri.GetV4Address(Transport::SSU), nullptr);
// Yes ipv6
BOOST_CHECK_NE(ri.GetV6Address(Transport::NTCP), nullptr);
BOOST_CHECK_NE(ri.GetV6Address(Transport::SSU), nullptr);
}
BOOST_AUTO_TEST_CASE(GetAddressIPv4only)
{
core::RouterInfo ri(keys, {{"127.0.0.1", 54321}}, {true, true});
// Yes ipv4
BOOST_CHECK_NE(ri.GetV4Address(Transport::NTCP), nullptr);
BOOST_CHECK_NE(ri.GetV4Address(Transport::SSU), nullptr);
BOOST_CHECK_NE(ri.GetAddress(false, Transport::NTCP), nullptr);
BOOST_CHECK_NE(ri.GetAddress(false, Transport::SSU), nullptr);
BOOST_CHECK_NE(ri.GetAnyAddress(false, Transport::NTCP), nullptr);
BOOST_CHECK_NE(ri.GetAnyAddress(false, Transport::SSU), nullptr);
// No ipv6
BOOST_CHECK_EQUAL(ri.GetV6Address(Transport::NTCP), nullptr);
BOOST_CHECK_EQUAL(ri.GetV6Address(Transport::SSU), nullptr);
BOOST_CHECK_EQUAL(ri.GetAddress(true, Transport::NTCP), nullptr);
BOOST_CHECK_EQUAL(ri.GetAddress(true, Transport::SSU), nullptr);
BOOST_CHECK_NE(ri.GetAnyAddress(true, Transport::NTCP), nullptr);
BOOST_CHECK_NE(ri.GetAnyAddress(true, Transport::SSU), nullptr);
BOOST_CHECK_EQUAL(ri.GetAnyAddress(true, Transport::NTCP)->host.is_v6(), false);
BOOST_CHECK_EQUAL(ri.GetAnyAddress(true, Transport::SSU)->host.is_v6(), false);
}
BOOST_AUTO_TEST_CASE(GetAddressIPv6only)
{
core::RouterInfo ri(keys, {{"::1", 54321}}, {true, true});
// No ipv4
BOOST_CHECK_EQUAL(ri.GetV4Address(Transport::NTCP), nullptr);
BOOST_CHECK_EQUAL(ri.GetV4Address(Transport::SSU), nullptr);
BOOST_CHECK_EQUAL(ri.GetAddress(false, Transport::NTCP), nullptr);
BOOST_CHECK_EQUAL(ri.GetAddress(false, Transport::SSU), nullptr);
BOOST_CHECK_EQUAL(ri.GetAnyAddress(false, Transport::NTCP), nullptr);
BOOST_CHECK_EQUAL(ri.GetAnyAddress(false, Transport::SSU), nullptr);
// Yes ipv6
BOOST_CHECK_NE(ri.GetV6Address(Transport::NTCP), nullptr);
BOOST_CHECK_NE(ri.GetV6Address(Transport::SSU), nullptr);
BOOST_CHECK_NE(ri.GetAddress(true, Transport::NTCP), nullptr);
BOOST_CHECK_NE(ri.GetAddress(true, Transport::SSU), nullptr);
BOOST_CHECK_NE(ri.GetAnyAddress(true, Transport::NTCP), nullptr);
BOOST_CHECK_NE(ri.GetAnyAddress(true, Transport::SSU), nullptr);
BOOST_CHECK_EQUAL(ri.GetAnyAddress(true, Transport::NTCP)->host.is_v6(), true);
BOOST_CHECK_EQUAL(ri.GetAnyAddress(true, Transport::SSU)->host.is_v6(), true);
}
// TODO(unassigned): expand test cases
BOOST_AUTO_TEST_SUITE_END()