@@ -23,6 +23,8 @@ const ALICE: AccountId = 0;
2323const BOB : AccountId = 1 ;
2424const CHARLIE : AccountId = 2 ;
2525
26+ const PERMISSION_GRANTED : u8 = 0x01 ;
27+
2628// Issuers
2729
2830#[ test]
@@ -410,7 +412,7 @@ fn claim_extrinsics_must_be_signed() {
410412 . execute_with ( || {
411413 let topic = String :: from ( "access" ) . into_bytes ( ) ;
412414 assert_noop ! (
413- ConsortiumPermission :: make_claim( Origin :: NONE , CHARLIE , topic. clone( ) , vec![ 0x1 ] ) ,
415+ ConsortiumPermission :: make_claim( Origin :: NONE , CHARLIE , topic. clone( ) , vec![ PERMISSION_GRANTED ] ) ,
414416 BadOrigin
415417 ) ;
416418 assert_noop ! (
@@ -432,7 +434,7 @@ fn claim_cannot_be_made_by_unauthorized_issuer() {
432434 Origin :: signed( BOB ) ,
433435 CHARLIE ,
434436 ACCESS_TOPIC . to_vec( ) ,
435- vec![ 0x1 ]
437+ vec![ PERMISSION_GRANTED ]
436438 ) ,
437439 Error :: <Test >:: IssuerNotAuthorizedOnTopic
438440 ) ;
@@ -441,7 +443,7 @@ fn claim_cannot_be_made_by_unauthorized_issuer() {
441443 Origin :: signed( ALICE ) ,
442444 CHARLIE ,
443445 vec![ 1 , 2 , 3 , 4 , 5 ] ,
444- vec![ 0x1 ]
446+ vec![ PERMISSION_GRANTED ]
445447 ) ,
446448 Error :: <Test >:: IssuerNotAuthorizedOnTopic
447449 ) ;
@@ -456,7 +458,7 @@ fn claim_cannot_be_made_by_non_existent_topics() {
456458 Origin :: signed( ALICE ) ,
457459 CHARLIE ,
458460 String :: from( "fake-topic" ) . into_bytes( ) ,
459- vec![ 0x1 ]
461+ vec![ PERMISSION_GRANTED ]
460462 ) ,
461463 Error :: <Test >:: IssuerNotAuthorizedOnTopic
462464 ) ;
@@ -475,7 +477,7 @@ fn claim_cannot_be_made_by_disabled_topics() {
475477 Origin :: signed( ALICE ) ,
476478 CHARLIE ,
477479 String :: from( "disabled-topic" ) . into_bytes( ) ,
478- vec![ 0x1 ]
480+ vec![ PERMISSION_GRANTED ]
479481 ) ,
480482 Error :: <Test >:: DisabledTopic
481483 ) ;
@@ -494,11 +496,11 @@ fn make_simple_claim() {
494496 Origin :: signed( ALICE ) ,
495497 CHARLIE ,
496498 topic. clone( ) ,
497- vec![ 0x1 ]
499+ vec![ PERMISSION_GRANTED ]
498500 ) ) ;
499501 assert_eq ! (
500502 ConsortiumPermission :: claim( ( CHARLIE , & topic) ) ,
501- ( ALICE , vec![ 0x1 ] )
503+ ( ALICE , vec![ PERMISSION_GRANTED ] )
502504 ) ;
503505 assert_eq ! (
504506 ConsortiumPermission :: issuer_claims( ALICE ) ,
@@ -515,7 +517,7 @@ fn make_simple_claim() {
515517 ALICE ,
516518 CHARLIE ,
517519 topic,
518- vec![ 0x1 ]
520+ vec![ PERMISSION_GRANTED ]
519521 ) )
520522 ) ;
521523 } ) ;
@@ -536,7 +538,7 @@ fn reissue_simple_claim() {
536538 Origin :: signed( ALICE ) ,
537539 CHARLIE ,
538540 topic. clone( ) ,
539- vec![ 0x1 ]
541+ vec![ PERMISSION_GRANTED ]
540542 ) ) ;
541543 // Reissue
542544 assert_ok ! ( ConsortiumPermission :: make_claim(
@@ -583,7 +585,7 @@ fn claim_value_is_too_damn_long() {
583585 Origin :: signed( ALICE ) ,
584586 CHARLIE ,
585587 String :: from( "access" ) . into_bytes( ) ,
586- vec![ 0x1 ; <mock:: Test as Trait >:: MaximumValueSize :: get( ) + 1 ]
588+ vec![ PERMISSION_GRANTED ; <mock:: Test as Trait >:: MaximumValueSize :: get( ) + 1 ]
587589 ) ,
588590 Error :: <Test >:: ValueExceedsAllowableSize
589591 ) ;
@@ -601,7 +603,7 @@ fn claim_value_is_just_right() {
601603 Origin :: signed( ALICE ) ,
602604 CHARLIE ,
603605 String :: from( "access" ) . into_bytes( ) ,
604- vec![ 0x1 ; <mock:: Test as Trait >:: MaximumValueSize :: get( ) ]
606+ vec![ PERMISSION_GRANTED ; <mock:: Test as Trait >:: MaximumValueSize :: get( ) ]
605607 ) ) ;
606608 } ) ;
607609}
@@ -635,7 +637,7 @@ fn claim_revocation_fails_with_unauthorized_issuer() {
635637 Origin :: signed( ALICE ) ,
636638 CHARLIE ,
637639 String :: from( "access" ) . into_bytes( ) ,
638- vec![ 0x1 ]
640+ vec![ PERMISSION_GRANTED ]
639641 ) ) ;
640642 assert_noop ! (
641643 ConsortiumPermission :: revoke_claim(
@@ -660,7 +662,7 @@ fn revoke_simple_claim() {
660662 Origin :: signed( ALICE ) ,
661663 CHARLIE ,
662664 topic. clone( ) ,
663- vec![ 0x1 ]
665+ vec![ PERMISSION_GRANTED ]
664666 ) ) ;
665667 assert_ok ! ( ConsortiumPermission :: revoke_claim(
666668 Origin :: signed( ALICE ) ,
@@ -700,7 +702,7 @@ fn revoke_someone_elses_claim() {
700702 Origin :: signed( ALICE ) ,
701703 CHARLIE ,
702704 topic. clone( ) ,
703- vec![ 0x1 ]
705+ vec![ PERMISSION_GRANTED ]
704706 ) ) ;
705707 assert_ok ! ( ConsortiumPermission :: revoke_claim(
706708 Origin :: signed( BOB ) ,
@@ -737,7 +739,7 @@ fn sudo_claim_revocation_fails_without_sudo() {
737739 Origin :: signed( ALICE ) ,
738740 CHARLIE ,
739741 String :: from( "access" ) . into_bytes( ) ,
740- vec![ 0x1 ]
742+ vec![ PERMISSION_GRANTED ]
741743 ) ) ;
742744 assert_noop ! (
743745 ConsortiumPermission :: sudo_revoke_claim(
@@ -780,7 +782,7 @@ fn sudo_revoke_a_claim() {
780782 Origin :: signed( ALICE ) ,
781783 CHARLIE ,
782784 topic. clone( ) ,
783- vec![ 0x1 ]
785+ vec![ PERMISSION_GRANTED ]
784786 ) ) ;
785787 assert_ok ! ( ConsortiumPermission :: sudo_revoke_claim(
786788 Origin :: ROOT ,
@@ -1000,3 +1002,63 @@ fn disable_topic_emits_events() {
10001002 ) ;
10011003 } ) ;
10021004}
1005+
1006+
1007+ #[ test]
1008+ fn can_count_permissioned_accounts ( ) {
1009+ ExtBuilder :: default ( )
1010+ . topic ( b"access" , true )
1011+ . topic ( b"can_mint_burn" , true )
1012+ . build ( )
1013+ . execute_with ( || {
1014+ let topic = String :: from ( "can_mint_burn" ) . into_bytes ( ) ;
1015+ assert_ok ! ( ConsortiumPermission :: add_issuer_with_topic( Origin :: ROOT , ALICE , ACCESS_TOPIC . to_vec( ) ) ) ;
1016+ assert_ok ! ( ConsortiumPermission :: add_issuer_with_topic( Origin :: ROOT , BOB , ACCESS_TOPIC . to_vec( ) ) ) ;
1017+ assert_ok ! ( ConsortiumPermission :: add_issuer_with_topic( Origin :: ROOT , CHARLIE , ACCESS_TOPIC . to_vec( ) ) ) ;
1018+ assert_ok ! ( ConsortiumPermission :: add_issuer_with_topic( Origin :: ROOT , ALICE , topic. clone( ) ) ) ;
1019+ assert_ok ! ( ConsortiumPermission :: add_issuer_with_topic( Origin :: ROOT , BOB , topic. clone( ) ) ) ;
1020+
1021+ // Since "access" is automatically granted to its issuers,
1022+ // 3 people should have the "access" permission
1023+ assert_eq ! (
1024+ ConsortiumPermission :: granted_permission_count(
1025+ & ACCESS_TOPIC . to_vec( ) ,
1026+ & vec![ PERMISSION_GRANTED ]
1027+ ) , 3 ) ;
1028+
1029+
1030+ assert_ok ! ( ConsortiumPermission :: make_claim(
1031+ Origin :: signed( ALICE ) ,
1032+ ALICE ,
1033+ topic. clone( ) ,
1034+ vec![ PERMISSION_GRANTED ]
1035+ ) ) ;
1036+ assert_ok ! ( ConsortiumPermission :: make_claim(
1037+ Origin :: signed( ALICE ) ,
1038+ CHARLIE ,
1039+ topic. clone( ) ,
1040+ vec![ PERMISSION_GRANTED ]
1041+ ) ) ;
1042+
1043+ assert_eq ! (
1044+ ConsortiumPermission :: granted_permission_count(
1045+ & topic. clone( ) ,
1046+ & vec![ PERMISSION_GRANTED ]
1047+ ) , 2 ) ;
1048+
1049+ // This should replace the claim with a different issuer, the total count should
1050+ // stay unchanged.
1051+ assert_ok ! ( ConsortiumPermission :: make_claim(
1052+ Origin :: signed( BOB ) ,
1053+ CHARLIE ,
1054+ topic. clone( ) ,
1055+ vec![ PERMISSION_GRANTED ]
1056+ ) ) ;
1057+ assert_eq ! (
1058+ ConsortiumPermission :: granted_permission_count(
1059+ & topic. clone( ) ,
1060+ & vec![ PERMISSION_GRANTED ]
1061+ ) , 2 ) ;
1062+ } ) ;
1063+ }
1064+
0 commit comments