From c021926161aa68148fab7b69beb1a92dc903b64e Mon Sep 17 00:00:00 2001 From: Artem Zhmaka Date: Mon, 25 Mar 2024 17:18:18 +0500 Subject: [PATCH] Fixed NewUref constructor --- tests/types/cl_value/uref_test.go | 7 +++++++ types/key/uref.go | 8 ++++++++ 2 files changed, 15 insertions(+) diff --git a/tests/types/cl_value/uref_test.go b/tests/types/cl_value/uref_test.go index 0b9e6e9..f245be9 100644 --- a/tests/types/cl_value/uref_test.go +++ b/tests/types/cl_value/uref_test.go @@ -28,6 +28,13 @@ func Test_NewURefFromString_toBytes(t *testing.T) { assert.Equal(t, "000102030405060708090a0b0c0d0e0f000102030405060708090a0b0c0d0e0f07", hex.EncodeToString(res.Bytes())) } +func Test_NewURefFromString_IncorrectFormat(t *testing.T) { + source := "01506f4df2ac64a2233e787c430dc91dad5cee8eabd7d64555f64bdc1a4b4044d7" + _, err := key.NewURef(source) + require.Error(t, err) + assert.Equal(t, err, key.ErrIncorrectPurseFormat) +} + func Test_FromBytesByType_URef(t *testing.T) { source := "000102030405060708090a0b0c0d0e0f000102030405060708090a0b0c0d0e0f07" inBytes, err := hex.DecodeString(source) diff --git a/types/key/uref.go b/types/key/uref.go index 6a646be..9907042 100644 --- a/types/key/uref.go +++ b/types/key/uref.go @@ -11,6 +11,10 @@ import ( type UrefAccess = byte +var ( + ErrIncorrectPurseFormat = errors.New("incorrect uref format") +) + const ( UrefAccessNone = iota UrefAccessRead @@ -85,6 +89,10 @@ func (v URef) GobEncode() ([]byte, error) { func NewURef(source string) (res URef, err error) { parts := strings.Split(source, "-") + if len(parts) != 3 { + return res, ErrIncorrectPurseFormat + } + payloadInBytes, err := hex.DecodeString(parts[1]) if err != nil { return res, err