@@ -395,6 +395,28 @@ BOOST_AUTO_TEST_CASE(netpermissions_test)
395
395
BOOST_CHECK (NetWhitebindPermissions::TryParse (" @1.2.3.4:32" , whitebindPermissions, error));
396
396
BOOST_CHECK_EQUAL (whitebindPermissions.m_flags , PF_NONE);
397
397
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
+
398
420
// Happy path, can parse flags
399
421
BOOST_CHECK (
NetWhitebindPermissions::TryParse (
" bloom,[email protected] :32" , whitebindPermissions, error));
400
422
// forcerelay should also activate the relay permission
@@ -407,7 +429,7 @@ BOOST_AUTO_TEST_CASE(netpermissions_test)
407
429
408
430
// Allow dups
409
431
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"
411
433
412
434
// Allow empty
413
435
BOOST_CHECK (
NetWhitebindPermissions::TryParse (
" bloom,relay,,[email protected] :32" , whitebindPermissions, error));
@@ -428,6 +450,8 @@ BOOST_AUTO_TEST_CASE(netpermissions_test)
428
450
// Happy path for whitelist parsing
429
451
BOOST_CHECK (
NetWhitelistPermissions::TryParse (
" [email protected] " , whitelistPermissions, error));
430
452
BOOST_CHECK_EQUAL (whitelistPermissions.m_flags , PF_NOBAN);
453
+ BOOST_CHECK (NetPermissions::HasFlag (whitelistPermissions.m_flags , NetPermissionFlags::PF_NOBAN));
454
+
431
455
BOOST_CHECK (
NetWhitelistPermissions::TryParse (
" bloom,forcerelay,noban,[email protected] /32" , whitelistPermissions, error));
432
456
BOOST_CHECK_EQUAL (whitelistPermissions.m_flags , PF_BLOOMFILTER | PF_FORCERELAY | PF_NOBAN | PF_RELAY);
433
457
BOOST_CHECK (error.empty ());
0 commit comments