mirror of
https://github.com/lightninglabs/pool.git
synced 2026-08-13 12:33:04 +02:00
94 lines
2 KiB
Go
94 lines
2 KiB
Go
package order
|
|
|
|
import (
|
|
"encoding/hex"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
var nodeIDSerializationTestCases = []struct {
|
|
name string
|
|
nodeIDs func() [][33]byte
|
|
invalidSerializedData func() [][]byte
|
|
expectedErr string
|
|
}{{
|
|
name: "empty slice",
|
|
nodeIDs: func() [][33]byte {
|
|
return [][33]byte{}
|
|
},
|
|
}, {
|
|
name: "single node id",
|
|
nodeIDs: func() [][33]byte {
|
|
return [][33]byte{
|
|
nodePubkey,
|
|
}
|
|
},
|
|
}, {
|
|
name: "multiple node ids",
|
|
nodeIDs: func() [][33]byte {
|
|
nodeID, _ := hex.DecodeString("036b51e0cc2d9e5988ee4967e0ba67" +
|
|
"ef3727bb633fea21a0af58e0c9395446ba09")
|
|
var nodePubKey2 [33]byte
|
|
copy(nodePubKey2[:], nodeID)
|
|
|
|
return [][33]byte{
|
|
nodePubkey,
|
|
nodePubKey2,
|
|
}
|
|
},
|
|
}, {
|
|
name: "invalid length",
|
|
invalidSerializedData: func() [][]byte {
|
|
return [][]byte{
|
|
{1, 2},
|
|
}
|
|
},
|
|
expectedErr: "invalid node_id length",
|
|
}, {
|
|
name: "invalid pub key",
|
|
invalidSerializedData: func() [][]byte {
|
|
return MarshalNodeIDSlice([][33]byte{
|
|
{1, 2},
|
|
})
|
|
},
|
|
expectedErr: "invalid node_id:",
|
|
}}
|
|
|
|
// TestNodeIDSliceSerialization tests that we can properly serialize and
|
|
// deserialize a slice of node ids.
|
|
func TestNodeIDSliceSerialization(t *testing.T) {
|
|
for _, tc := range nodeIDSerializationTestCases {
|
|
tc := tc
|
|
|
|
t.Run(tc.name, func(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
switch {
|
|
// Marshal and Unmarshal valid node ids.
|
|
case tc.nodeIDs != nil:
|
|
nodeIDs := tc.nodeIDs()
|
|
marshaled := MarshalNodeIDSlice(nodeIDs)
|
|
require.Equal(t, len(nodeIDs), len(marshaled))
|
|
|
|
unmarshaled, err := UnmarshalNodeIDSlice(
|
|
marshaled,
|
|
)
|
|
|
|
require.NoError(t, err)
|
|
require.Equal(t, tc.nodeIDs(), unmarshaled)
|
|
|
|
// Unmarshal invalid marshaled node ids.
|
|
case tc.invalidSerializedData != nil:
|
|
marshaled := tc.invalidSerializedData()
|
|
|
|
_, err := UnmarshalNodeIDSlice(marshaled)
|
|
require.Error(t, err)
|
|
require.Contains(t, err.Error(), tc.expectedErr)
|
|
|
|
default:
|
|
require.Fail(t, "invalid test case")
|
|
}
|
|
})
|
|
}
|
|
}
|