Bitcoin Core  22.99.0
P2P Digital Currency
banman_tests.cpp
Go to the documentation of this file.
1 // Copyright (c) 2021 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 
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  assert(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  assert(entries_read.size() == 1);
39  }
40  }
41 }
42 
readwritefile.h
assert
assert(!tx.IsCoinBase())
streams.h
setup_common.h
BOOST_AUTO_TEST_CASE
BOOST_AUTO_TEST_CASE(file)
Definition: banman_tests.cpp:18
chainparams.h
WriteBinaryFile
bool WriteBinaryFile(const fs::path &filename, const std::string &data)
Write contents of std::string to a file.
Definition: readwritefile.cpp:34
BOOST_FIXTURE_TEST_SUITE
#define BOOST_FIXTURE_TEST_SUITE(a, b)
Definition: object.cpp:14
BOOST_AUTO_TEST_SUITE_END
BOOST_AUTO_TEST_SUITE_END()
ASSERT_DEBUG_LOG
#define ASSERT_DEBUG_LOG(message)
Definition: logging.h:39
banman.h
fs::path
Path class wrapper to prepare application code for transition from boost::filesystem library to std::...
Definition: fs.h:33
SetMockTime
void SetMockTime(int64_t nMockTimeIn)
DEPRECATED Use SetMockTime with chrono type.
Definition: time.cpp:101
BasicTestingSetup
Basic testing setup.
Definition: setup_common.h:83
BanMan::GetBanned
void GetBanned(banmap_t &banmap)
Definition: banman.cpp:160
logging.h
BanMan
Definition: banman.h:58
banmap_t
std::map< CSubNet, CBanEntry > banmap_t
Definition: net_types.h:41
netbase.h