forked from ethereum-optimism/optimism
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcommitment_test.go
69 lines (62 loc) · 2.1 KB
/
commitment_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
package altda
import (
"testing"
"github.com/stretchr/testify/require"
)
// TestCommitmentData tests the CommitmentData type and its implementations,
// by encoding and decoding the commitment data and verifying the input data.
func TestCommitmentData(t *testing.T) {
type tcase struct {
name string
commType CommitmentType
commData []byte
expectedErr error
}
testCases := []tcase{
{
name: "valid keccak256 commitment",
commType: Keccak256CommitmentType,
commData: []byte("abcdefghijklmnopqrstuvwxyz012345"),
expectedErr: ErrInvalidCommitment,
},
{
name: "invalid keccak256 commitment",
commType: Keccak256CommitmentType,
commData: []byte("ab_baddata_yz012345"),
expectedErr: ErrInvalidCommitment,
},
{
name: "valid generic commitment",
commType: GenericCommitmentType,
commData: []byte("any length of data! wow, that's so generic!"),
expectedErr: ErrInvalidCommitment,
},
{
name: "invalid commitment type",
commType: 9,
commData: []byte("abcdefghijklmnopqrstuvwxyz012345"),
expectedErr: ErrInvalidCommitment,
},
}
for _, tc := range testCases {
t.Run(tc.name, func(t *testing.T) {
comm, err := DecodeCommitmentData(tc.commData)
require.ErrorIs(t, err, tc.expectedErr)
if err == nil {
// Test that the commitment type is correct
require.Equal(t, tc.commType, comm.CommitmentType())
// Test that reencoding the commitment returns the same data
require.Equal(t, tc.commData, comm.Encode())
// Test that TxData() returns the same data as the original, prepended with a version byte
require.Equal(t, append([]byte{TxDataVersion1}, tc.commData...), comm.TxData())
// Test that Verify() returns no error for the correct data
require.NoError(t, comm.Verify(tc.commData))
// Test that Verify() returns error for the incorrect data
// don't do this for GenericCommitmentType, which does not do any verification
if tc.commType != GenericCommitmentType {
require.ErrorIs(t, ErrCommitmentMismatch, comm.Verify([]byte("wrong data")))
}
}
})
}
}