github.com/nspcc-dev/neo-go@v0.105.2-0.20240517133400-6be757af3eba/pkg/services/oracle/neofs/neofs_test.go (about) 1 package neofs 2 3 import ( 4 "net/url" 5 "testing" 6 7 oid "github.com/nspcc-dev/neofs-sdk-go/object/id" 8 "github.com/stretchr/testify/require" 9 ) 10 11 func TestParseRange(t *testing.T) { 12 t.Run("valid", func(t *testing.T) { 13 r, err := parseRange("13|87") 14 require.NoError(t, err) 15 require.Equal(t, uint64(13), r.GetOffset()) 16 require.Equal(t, uint64(87), r.GetLength()) 17 }) 18 t.Run("missing offset", func(t *testing.T) { 19 _, err := parseRange("|87") 20 require.Error(t, err) 21 }) 22 t.Run("missing length", func(t *testing.T) { 23 _, err := parseRange("13|") 24 require.Error(t, err) 25 }) 26 t.Run("missing separator", func(t *testing.T) { 27 _, err := parseRange("1387") 28 require.Error(t, err) 29 }) 30 t.Run("invalid number", func(t *testing.T) { 31 _, err := parseRange("ab|87") 32 require.Error(t, err) 33 }) 34 } 35 36 func TestParseNeoFSURL(t *testing.T) { 37 cStr := "C3swfg8MiMJ9bXbeFG6dWJTCoHp9hAEZkHezvbSwK1Cc" 38 oStr := "3nQH1L8u3eM9jt2mZCs6MyjzdjerdSzBkXCYYj4M4Znk" 39 var objectAddr oid.Address 40 require.NoError(t, objectAddr.DecodeString(cStr+"/"+oStr)) 41 42 validPrefix := "neofs:" + cStr + "/" + oStr 43 44 testCases := []struct { 45 url string 46 params []string 47 err error 48 }{ 49 {validPrefix, nil, nil}, 50 {validPrefix + "/", []string{""}, nil}, 51 {validPrefix + "/range/1|2", []string{"range", "1|2"}, nil}, 52 {"neoffs:" + cStr + "/" + oStr, nil, ErrInvalidScheme}, 53 {"neofs:" + cStr, nil, ErrMissingObject}, 54 {"neofs:" + cStr + "ooo/" + oStr, nil, ErrInvalidContainer}, 55 {"neofs:" + cStr + "/ooo" + oStr, nil, ErrInvalidObject}, 56 } 57 for _, tc := range testCases { 58 t.Run(tc.url, func(t *testing.T) { 59 u, err := url.Parse(tc.url) 60 require.NoError(t, err) 61 oa, ps, err := parseNeoFSURL(u) 62 if tc.err != nil { 63 require.ErrorIs(t, err, tc.err) 64 return 65 } 66 require.NoError(t, err) 67 require.Equal(t, objectAddr, *oa) 68 require.Equal(t, len(tc.params), len(ps)) 69 if len(ps) != 0 { 70 require.Equal(t, tc.params, ps) 71 } 72 }) 73 } 74 }