Bitcoin Core 28.99.0
P2P Digital Currency
banman_tests.cpp
Go to the documentation of this file.
1// Copyright (c) 2021-2022 The Bitcoin Core developers
2// Distributed under the MIT software license, see the accompanying
3// file COPYING or http://www.opensource.org/licenses/mit-license.php.
4
5#include <banman.h>
6#include <chainparams.h>
7#include <netbase.h>
8#include <streams.h>
9#include <test/util/logging.h>
11#include <util/readwritefile.h>
12
13
14#include <boost/test/unit_test.hpp>
15
17
19{
20 SetMockTime(777s);
21 const fs::path banlist_path{m_args.GetDataDirBase() / "banlist_test"};
22 {
23 const std::string entries_write{
24 "{ \"banned_nets\": ["
25 " { \"version\": 1, \"ban_created\": 0, \"banned_until\": 778, \"address\": \"aaaaaaaaa\" },"
26 " { \"version\": 2, \"ban_created\": 0, \"banned_until\": 778, \"address\": \"bbbbbbbbb\" },"
27 " { \"version\": 1, \"ban_created\": 0, \"banned_until\": 778, \"address\": \"1.0.0.0/8\" }"
28 "] }",
29 };
30 BOOST_REQUIRE(WriteBinaryFile(banlist_path + ".json", entries_write));
31 {
32 // The invalid entries will be dropped, but the valid one remains
33 ASSERT_DEBUG_LOG("Dropping entry with unparseable address or subnet (aaaaaaaaa) from ban list");
34 ASSERT_DEBUG_LOG("Dropping entry with unknown version (2) from ban list");
35 BanMan banman{banlist_path, /*client_interface=*/nullptr, /*default_ban_time=*/0};
36 banmap_t entries_read;
37 banman.GetBanned(entries_read);
38 BOOST_CHECK_EQUAL(entries_read.size(), 1);
39 }
40 }
41}
42
BOOST_AUTO_TEST_CASE(file)
Definition: banman.h:59
void GetBanned(banmap_t &banmap) EXCLUSIVE_LOCKS_REQUIRED(!m_banned_mutex)
Definition: banman.cpp:174
Path class wrapper to block calls to the fs::path(std::string) implicit constructor and the fs::path:...
Definition: fs.h:33
BOOST_FIXTURE_TEST_SUITE(cuckoocache_tests, BasicTestingSetup)
Test Suite for CuckooCache.
BOOST_AUTO_TEST_SUITE_END()
std::map< CSubNet, CBanEntry > banmap_t
Definition: net_types.h:41
#define BOOST_CHECK_EQUAL(v1, v2)
Definition: object.cpp:18
bool WriteBinaryFile(const fs::path &filename, const std::string &data)
Write contents of std::string to a file.
Basic testing setup.
Definition: setup_common.h:63
#define ASSERT_DEBUG_LOG(message)
Definition: logging.h:39
void SetMockTime(int64_t nMockTimeIn)
DEPRECATED Use SetMockTime with chrono type.
Definition: time.cpp:35