lbcd/txscript/claimscript_test.go
Roy Lee 2b28dfa528 [lbry] txscript: introduce claim script
Co-authored-by: Brannon King <countprimes@gmail.com>
2022-05-23 23:53:30 -07:00

80 lines
1.9 KiB
Go

package txscript
import (
"testing"
"github.com/stretchr/testify/require"
)
func TestCreationParseLoopClaim(t *testing.T) {
r := require.New(t)
// OP_CLAIMNAME <Name> <Value> OP_2DROP OP_DROP <P2PKH>
script, err := ClaimNameScript("tester", "value")
r.NoError(err)
cs, err := ExtractClaimScript(script)
r.NoError(err)
r.Equal(byte(OP_CLAIMNAME), cs.Opcode)
r.Equal([]byte("tester"), cs.Name)
r.Equal([]byte("value"), cs.Value)
}
func TestCreationParseLoopUpdate(t *testing.T) {
r := require.New(t)
claimID := []byte("12345123451234512345")
claim, err := ClaimUpdateScript("tester", claimID, "value")
r.NoError(err)
cs, err := ExtractClaimScript(claim)
r.NoError(err)
r.Equal(byte(OP_UPDATECLAIM), cs.Opcode)
r.Equal([]byte("tester"), cs.Name)
r.Equal(claimID, cs.ClaimID)
r.Equal([]byte("value"), cs.Value)
}
func TestCreationParseLoopSupport(t *testing.T) {
r := require.New(t)
claimID := []byte("12345123451234512345")
// case 1: OP_SUPPORTCLAIM <Name> <ClaimID> OP_2DROP OP_DROP <P2PKH>
script, err := ClaimSupportScript("tester", claimID, nil)
r.NoError(err)
cs, err := ExtractClaimScript(script)
r.NoError(err)
r.Equal(byte(OP_SUPPORTCLAIM), cs.Opcode)
r.Equal([]byte("tester"), cs.Name)
r.Equal(claimID, cs.ClaimID)
r.Nil(cs.Value)
// case 2: OP_SUPPORTCLAIM <Name> <ClaimID> <Value> OP_2DROP OP_2DROP <P2PKH>
script, err = ClaimSupportScript("tester", claimID, []byte("value"))
r.NoError(err)
cs, err = ExtractClaimScript(script)
r.NoError(err)
r.Equal(byte(OP_SUPPORTCLAIM), cs.Opcode)
r.Equal([]byte("tester"), cs.Name)
r.Equal(claimID, cs.ClaimID)
r.Equal([]byte("value"), cs.Value)
}
func TestInvalidChars(t *testing.T) {
r := require.New(t)
script, err := ClaimNameScript("tester", "value")
r.NoError(err)
r.NoError(AllClaimsAreSane(script, true))
for i := range []byte(illegalChars) {
script, err := ClaimNameScript("a"+illegalChars[i:i+1], "value")
r.NoError(err)
r.Error(AllClaimsAreSane(script, true))
}
}