github.com/hyperledger/burrow@v0.34.5-0.20220512172541-77f09336001d/genesis/spec/presets_test.go (about) 1 package spec 2 3 import ( 4 "testing" 5 6 "github.com/hyperledger/burrow/acm/balance" 7 crypto "github.com/hyperledger/burrow/crypto" 8 "github.com/hyperledger/burrow/keys" 9 "github.com/hyperledger/burrow/logging" 10 "github.com/hyperledger/burrow/permission" 11 "github.com/stretchr/testify/assert" 12 "github.com/stretchr/testify/require" 13 ) 14 15 func TestMergeGenesisSpecAccounts(t *testing.T) { 16 keyClient := keys.NewLocalKeyClient(keys.NewMemoryKeyStore(), logging.NewNoopLogger()) 17 gs := MergeGenesisSpecs(FullAccount("0"), ParticipantAccount("1"), ParticipantAccount("2")) 18 gd, err := gs.GenesisDoc(keyClient, crypto.CurveTypeEd25519) 19 require.NoError(t, err) 20 assert.Len(t, gd.Validators, 1) 21 assert.Len(t, gd.Accounts, 3) 22 } 23 24 func TestMergeGenesisSpecGlobalPermissions(t *testing.T) { 25 gs1 := GenesisSpec{ 26 GlobalPermissions: []string{permission.CreateAccountString, permission.CreateAccountString}, 27 } 28 gs2 := GenesisSpec{ 29 GlobalPermissions: []string{permission.SendString, permission.CreateAccountString, permission.HasRoleString}, 30 } 31 32 gsMerged := MergeGenesisSpecs(gs1, gs2) 33 assert.Equal(t, []string{permission.CreateAccountString, permission.HasRoleString, permission.SendString}, 34 gsMerged.GlobalPermissions) 35 } 36 37 func TestMergeGenesisSpecsRepeatedAccounts(t *testing.T) { 38 name1 := "Party!" 39 name3 := "Counter!" 40 41 amt1 := uint64(5) 42 amt2 := uint64(2) 43 amt3 := uint64(9) 44 45 gs1 := GenesisSpec{ 46 Accounts: []TemplateAccount{ 47 { 48 Name: name1, 49 Amounts: balance.New().Native(amt1), 50 Permissions: []string{permission.SendString, permission.CreateAccountString, permission.HasRoleString}, 51 Roles: []string{"fooer"}, 52 }, 53 }, 54 } 55 gs2 := GenesisSpec{ 56 Accounts: []TemplateAccount{ 57 { 58 Name: name1, 59 Amounts: balance.New().Native(amt2), 60 Permissions: []string{permission.SendString, permission.CreateAccountString}, 61 Roles: []string{"barer"}, 62 }, 63 }, 64 } 65 gs3 := GenesisSpec{ 66 Accounts: []TemplateAccount{ 67 { 68 Name: name3, 69 Amounts: balance.New().Native(amt3), 70 }, 71 }, 72 } 73 74 gsMerged := MergeGenesisSpecs(gs1, gs2, gs3) 75 bsMerged, err := gsMerged.JSONBytes() 76 require.NoError(t, err) 77 78 amtExpected := amt1 + amt2 79 gsExpected := GenesisSpec{ 80 Accounts: []TemplateAccount{ 81 { 82 Name: name1, 83 Amounts: balance.New().Native(amtExpected), 84 Permissions: []string{permission.CreateAccountString, permission.HasRoleString, permission.SendString}, 85 Roles: []string{"barer", "fooer"}, 86 }, 87 gs3.Accounts[0], 88 }, 89 } 90 bsExpected, err := gsExpected.JSONBytes() 91 require.NoError(t, err) 92 if !assert.Equal(t, string(bsExpected), string(bsMerged)) { 93 t.Logf("Expected:\n%s\n\nActual:\n%s", string(bsExpected), string(bsMerged)) 94 } 95 }