forked from stellar/go
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathasset_test.go
93 lines (84 loc) · 2.06 KB
/
asset_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
package build
import (
"testing"
"github.com/stellar/go/xdr"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestAsset_ToXDR(t *testing.T) {
var (
issuer xdr.AccountId
issuerAddress = "GAWSI2JO2CF36Z43UGMUJCDQ2IMR5B3P5TMS7XM7NUTU3JHG3YJUDQXA"
)
require.NoError(t, issuer.SetAddress(issuerAddress))
cases := []struct {
Name string
Asset Asset
Expected xdr.Asset
ExpectedErr string
}{
{
Name: "Native",
Asset: NativeAsset(),
Expected: xdr.Asset{Type: xdr.AssetTypeAssetTypeNative},
},
{
Name: "Alphanum4",
Asset: CreditAsset("USD", issuerAddress),
Expected: xdr.Asset{
Type: xdr.AssetTypeAssetTypeCreditAlphanum4,
AlphaNum4: &xdr.AssetAlphaNum4{
AssetCode: [4]byte{0x55, 0x53, 0x44, 0x00}, //USD
Issuer: issuer,
},
},
},
{
Name: "Alphanum12",
Asset: CreditAsset("SCOTTBUCKS", issuerAddress),
Expected: xdr.Asset{
Type: xdr.AssetTypeAssetTypeCreditAlphanum12,
AlphaNum12: &xdr.AssetAlphaNum12{
AssetCode: [12]byte{
0x53, 0x43, 0x4f, 0x54,
0x54, 0x42, 0x55, 0x43,
0x4b, 0x53, 0x00, 0x00,
}, //SCOTTBUCKS
Issuer: issuer,
},
},
},
{
Name: "bad issuer",
Asset: CreditAsset("USD", "FUNK"),
ExpectedErr: "base32 decode failed: illegal base32 data at input byte 0",
},
{
Name: "bad code",
Asset: CreditAsset("", issuerAddress),
ExpectedErr: "Asset code length is invalid",
},
}
for _, kase := range cases {
actual, err := kase.Asset.ToXDR()
if kase.ExpectedErr != "" {
if assert.Error(t, err, ("no expected error in case: " + kase.Name)) {
assert.EqualError(t, err, kase.ExpectedErr)
}
continue
}
if assert.NoError(t, err, "unexpected error in case: %s", kase.Name) {
assert.Equal(t, kase.Expected, actual, "invalid xdr result")
}
}
}
func TestAsset_MustXDR(t *testing.T) {
// good
assert.NotPanics(t, func() {
NativeAsset().MustXDR()
})
// bad
assert.Panics(t, func() {
CreditAsset("USD", "BONK").MustXDR()
})
}