@@ -398,6 +398,102 @@ func TestAssetResponse_IsSharedForWallet_AssetAttributesMixedWildeReader(t *test
398398 }
399399}
400400
401+ // TestAssetResponse_IsPubliclyAttested_AssetAttributesMixedWildeReader
402+ // Covers mixed read cases (wild card present in policy, all shares are read shares)
403+ func TestAssetResponse_IsPubliclyAttested_AssetAttributesMixedWildeReader (t * testing.T ) {
404+
405+ type fields struct {
406+ AccessPolicy map [string ]* v2attribute.Attribute
407+ }
408+ type args struct {
409+ policyKey string
410+ wallet string
411+ attribute string
412+ }
413+
414+ Wallet1 := "0xWALLET1"
415+ Wallet2 := "0xWALLET2"
416+ WalletWild := "0xWILD-WALLET"
417+
418+ TesseraPub1 := "b64-TESSERAPUB1"
419+ TesseraPub2 := "b64-TESSERAPUB2"
420+ TesseraPubWild := "b64-TESSERAPUB-WILD"
421+ tractor_colour := "tractor_colour"
422+ engine_size := "engine_size"
423+
424+ twoReadSharedAssetAttributesAndOneWildWallet := map [string ]* v2attribute.Attribute {}
425+
426+ policyAddAssetAttributeReaderOrFailNow (
427+ t , twoReadSharedAssetAttributesAndOneWildWallet , tractor_colour , Wallet1 , TesseraPub1 )
428+ policyAddAssetAttributeReaderOrFailNow (
429+ t , twoReadSharedAssetAttributesAndOneWildWallet , engine_size , Wallet2 , TesseraPub2 )
430+ policyAddAssetAttributeReaderOrFailNow (
431+ t , twoReadSharedAssetAttributesAndOneWildWallet , "*" , WalletWild , TesseraPubWild )
432+
433+ tests := []struct {
434+ name string
435+ fields fields
436+ args args
437+ want bool
438+ wantErr bool
439+ }{
440+ // TODO: Add test cases.
441+ {
442+ name : "Should match wildwallet in policy sharing two asset attributes" ,
443+ fields : fields {
444+ AccessPolicy : twoReadSharedAssetAttributesAndOneWildWallet ,
445+ },
446+ args : args {
447+ wallet : WalletWild ,
448+ },
449+ want : true ,
450+ },
451+ {
452+ name : "Should match wildwallet in policy sharing two asset attributes" ,
453+ fields : fields {
454+ AccessPolicy : twoReadSharedAssetAttributesAndOneWildWallet ,
455+ },
456+ args : args {
457+ wallet : WalletWild ,
458+ },
459+ want : true ,
460+ },
461+
462+ {
463+ name : "Should match wallet1 in policy sharing two asset attributes" ,
464+ fields : fields {
465+ AccessPolicy : twoReadSharedAssetAttributesAndOneWildWallet ,
466+ },
467+ args : args {
468+ wallet : Wallet1 ,
469+ },
470+ want : true ,
471+ },
472+
473+ {
474+ name : "Should match wallet2 in policy even partial share" ,
475+ fields : fields {
476+ AccessPolicy : twoReadSharedAssetAttributesAndOneWildWallet ,
477+ },
478+ args : args {
479+ wallet : Wallet2 ,
480+ },
481+ want : true ,
482+ },
483+ }
484+ for _ , tt := range tests {
485+ t .Run (tt .name , func (t * testing.T ) {
486+ a := & AssetResponse {
487+ AccessPolicy : tt .fields .AccessPolicy ,
488+ }
489+ got := a .IsPubliclyAttested (tt .args .wallet )
490+ if got != tt .want {
491+ t .Errorf ("AssetResponse.IsPubliclyAttested() = %v, want %v" , got , tt .want )
492+ }
493+ })
494+ }
495+ }
496+
401497func policyAddAssetAttributeReaderOrFailNow (
402498 t * testing.T ,
403499 policy map [string ]* v2attribute.Attribute ,
0 commit comments