Bitcoin Core  27.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>
10 #include <test/util/setup_common.h>
11 #include <util/readwritefile.h>
12 
13 
14 #include <boost/test/unit_test.hpp>
15 
16 BOOST_FIXTURE_TEST_SUITE(banman_tests, BasicTestingSetup)
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_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:52
#define ASSERT_DEBUG_LOG(message)
Definition: logging.h:39
void SetMockTime(int64_t nMockTimeIn)
DEPRECATED Use SetMockTime with chrono type.
Definition: time.cpp:32