[#127] apistatus: Support WRONG_MAGIC_NUMBER status

Define `WrongMagicNumber` type for which encapsulates the work with
incorrect network magic. Provide method to read/write the correct magic
(which is a status detail in NeoFS API V2 protocol).

Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
This commit is contained in:
Leonard Lyubich 2022-01-25 15:37:30 +03:00 committed by Alex Vanin
parent 883a26d210
commit 0fb22361a3
6 changed files with 121 additions and 3 deletions

View file

@ -3,6 +3,7 @@ package apistatus_test
import (
"testing"
"github.com/nspcc-dev/neofs-api-go/v2/status"
apistatus "github.com/nspcc-dev/neofs-sdk-go/client/status"
"github.com/stretchr/testify/require"
)
@ -24,3 +25,28 @@ func TestServerInternal_Message(t *testing.T) {
require.Equal(t, msg, res)
require.Equal(t, msg, resv2)
}
func TestWrongMagicNumber_CorrectMagic(t *testing.T) {
const magic = 1337
var st apistatus.WrongMagicNumber
res, ok := st.CorrectMagic()
require.Zero(t, res)
require.Zero(t, ok)
st.WriteCorrectMagic(magic)
res, ok = st.CorrectMagic()
require.EqualValues(t, magic, res)
require.EqualValues(t, 1, ok)
// corrupt the value
apistatus.ToStatusV2(st).IterateDetails(func(d *status.Detail) bool {
d.SetValue([]byte{1, 2, 3}) // any slice with len != 8
return true
})
_, ok = st.CorrectMagic()
require.EqualValues(t, -1, ok)
}