-
Notifications
You must be signed in to change notification settings - Fork 95
/
Copy pathsignature_test.go
65 lines (57 loc) · 1.54 KB
/
signature_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
package iotago_test
import (
"encoding/json"
"os"
"path/filepath"
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
iotago "github.com/iotaledger/iota.go/v4"
"github.com/iotaledger/iota.go/v4/tpkg"
"github.com/iotaledger/iota.go/v4/tpkg/frameworks"
)
func TestEd25519Signature_DeSerialize(t *testing.T) {
tests := []*frameworks.DeSerializeTest{
{
Name: "ok",
Source: tpkg.RandEd25519Signature(),
Target: &iotago.Ed25519Signature{},
},
}
for _, tt := range tests {
t.Run(tt.Name, tt.Run)
}
}
func TestEd25519Signature_Valid(t *testing.T) {
type test struct {
Address tpkg.HexBytes `json:"address"`
Message tpkg.HexBytes `json:"message"`
PublicKey tpkg.HexBytes `json:"pubKey"`
Signature tpkg.HexBytes `json:"signature"`
Valid bool `json:"valid"`
}
var tests []test
// load the tests from file
b, err := os.ReadFile(filepath.Join("testdata", t.Name()+".json"))
require.NoError(t, err)
require.NoError(t, json.Unmarshal(b, &tests))
for _, tt := range tests {
t.Run("", func(t *testing.T) {
// deserialize the address from the test
addr := &iotago.Ed25519Address{}
_, err = tpkg.ZeroCostTestAPI.Decode(tt.Address, addr)
require.NoError(t, err)
// create the signature type
sig := &iotago.Ed25519Signature{}
copy(sig.PublicKey[:], tt.PublicKey)
copy(sig.Signature[:], tt.Signature)
sigError := sig.Valid(tt.Message, addr)
switch tt.Valid {
case true:
assert.NoError(t, sigError)
case false:
assert.Error(t, sigError)
}
})
}
}