Skip to content

Commit 4e0d578

Browse files
jonatackvasild
andcommitted
test: add net permissions noban/download unit test coverage
to clarify/test the relationship and NetPermissions operations involving the NetPermissionFlags PF_NOBAN and PF_DOWNLOAD. Co-authored-by: Vasil Dimov <[email protected]>
1 parent dde69f2 commit 4e0d578

File tree

1 file changed

+25
-1
lines changed

1 file changed

+25
-1
lines changed

src/test/netbase_tests.cpp

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -395,6 +395,28 @@ BOOST_AUTO_TEST_CASE(netpermissions_test)
395395
BOOST_CHECK(NetWhitebindPermissions::TryParse("@1.2.3.4:32", whitebindPermissions, error));
396396
BOOST_CHECK_EQUAL(whitebindPermissions.m_flags, PF_NONE);
397397

398+
NetWhitebindPermissions noban, noban_download, download_noban, download;
399+
400+
// "noban" implies "download"
401+
BOOST_REQUIRE(NetWhitebindPermissions::TryParse("[email protected]:32", noban, error));
402+
BOOST_CHECK_EQUAL(noban.m_flags, NetPermissionFlags::PF_NOBAN);
403+
BOOST_CHECK(NetPermissions::HasFlag(noban.m_flags, NetPermissionFlags::PF_DOWNLOAD));
404+
BOOST_CHECK(NetPermissions::HasFlag(noban.m_flags, NetPermissionFlags::PF_NOBAN));
405+
406+
// "noban,download" is equivalent to "noban"
407+
BOOST_REQUIRE(NetWhitebindPermissions::TryParse("noban,[email protected]:32", noban_download, error));
408+
BOOST_CHECK_EQUAL(noban_download.m_flags, noban.m_flags);
409+
410+
// "download,noban" is equivalent to "noban"
411+
BOOST_REQUIRE(NetWhitebindPermissions::TryParse("download,[email protected]:32", download_noban, error));
412+
BOOST_CHECK_EQUAL(download_noban.m_flags, noban.m_flags);
413+
414+
// "download" excludes (does not imply) "noban"
415+
BOOST_REQUIRE(NetWhitebindPermissions::TryParse("[email protected]:32", download, error));
416+
BOOST_CHECK_EQUAL(download.m_flags, NetPermissionFlags::PF_DOWNLOAD);
417+
BOOST_CHECK(NetPermissions::HasFlag(download.m_flags, NetPermissionFlags::PF_DOWNLOAD));
418+
BOOST_CHECK(!NetPermissions::HasFlag(download.m_flags, NetPermissionFlags::PF_NOBAN));
419+
398420
// Happy path, can parse flags
399421
BOOST_CHECK(NetWhitebindPermissions::TryParse("bloom,[email protected]:32", whitebindPermissions, error));
400422
// forcerelay should also activate the relay permission
@@ -407,7 +429,7 @@ BOOST_AUTO_TEST_CASE(netpermissions_test)
407429

408430
// Allow dups
409431
BOOST_CHECK(NetWhitebindPermissions::TryParse("bloom,relay,noban,[email protected]:32", whitebindPermissions, error));
410-
BOOST_CHECK_EQUAL(whitebindPermissions.m_flags, PF_BLOOMFILTER | PF_RELAY | PF_NOBAN);
432+
BOOST_CHECK_EQUAL(whitebindPermissions.m_flags, PF_BLOOMFILTER | PF_RELAY | PF_NOBAN | PF_DOWNLOAD); // "noban" implies "download"
411433

412434
// Allow empty
413435
BOOST_CHECK(NetWhitebindPermissions::TryParse("bloom,relay,,[email protected]:32", whitebindPermissions, error));
@@ -428,6 +450,8 @@ BOOST_AUTO_TEST_CASE(netpermissions_test)
428450
// Happy path for whitelist parsing
429451
BOOST_CHECK(NetWhitelistPermissions::TryParse("[email protected]", whitelistPermissions, error));
430452
BOOST_CHECK_EQUAL(whitelistPermissions.m_flags, PF_NOBAN);
453+
BOOST_CHECK(NetPermissions::HasFlag(whitelistPermissions.m_flags, NetPermissionFlags::PF_NOBAN));
454+
431455
BOOST_CHECK(NetWhitelistPermissions::TryParse("bloom,forcerelay,noban,[email protected]/32", whitelistPermissions, error));
432456
BOOST_CHECK_EQUAL(whitelistPermissions.m_flags, PF_BLOOMFILTER | PF_FORCERELAY | PF_NOBAN | PF_RELAY);
433457
BOOST_CHECK(error.empty());

0 commit comments

Comments
 (0)