frostfs-sdk-go/client/status/common_test.go
Airat Arifullin 6281a25556
All checks were successful
/ DCO (pull_request) Successful in 1m17s
/ Lint (pull_request) Successful in 2m7s
/ Tests (1.19) (pull_request) Successful in 5m56s
/ Tests (1.20) (pull_request) Successful in 6m37s
[#100] types: Make sdk types as protobuf wrappers
Signed-off-by: Airat Arifullin a.arifullin@yadro.com
2023-07-12 19:08:37 +03:00

130 lines
2.7 KiB
Go

package apistatus_test
import (
"testing"
statusgrpc "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/status/grpc"
apistatus "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/client/status"
"github.com/stretchr/testify/require"
)
func TestServerInternal_Message(t *testing.T) {
const msg = "some message"
st := apistatus.NewServerInternal()
res := st.Message()
resv2 := apistatus.ToStatusV2(st).GetMessage()
require.Empty(t, res)
require.Empty(t, resv2)
st.SetMessage(msg)
res = st.Message()
resv2 = apistatus.ToStatusV2(st).GetMessage()
require.Equal(t, msg, res)
require.Equal(t, msg, resv2)
}
func TestWrongMagicNumber_CorrectMagic(t *testing.T) {
const magic = 1337
st := apistatus.NewWrongMagicNumber()
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 *statusgrpc.Status_Detail) bool {
d.SetValue([]byte{1, 2, 3}) // any slice with len != 8
return true
})
_, ok = st.CorrectMagic()
require.EqualValues(t, -1, ok)
}
func TestSignatureVerification(t *testing.T) {
t.Run("default", func(t *testing.T) {
st := apistatus.NewSignatureVerification()
require.Empty(t, st.Message())
})
t.Run("custom message", func(t *testing.T) {
st := apistatus.NewSignatureVerification()
msg := "some message"
st.SetMessage(msg)
stV2 := st.ToStatusV2()
require.Equal(t, msg, st.Message())
require.Equal(t, msg, stV2.GetMessage())
})
t.Run("empty to V2", func(t *testing.T) {
st := apistatus.NewSignatureVerification()
stV2 := st.ToStatusV2()
require.Equal(t, "signature verification failed", stV2.GetMessage())
})
t.Run("non-empty to V2", func(t *testing.T) {
st := apistatus.NewSignatureVerification()
msg := "some other msg"
st.SetMessage(msg)
stV2 := st.ToStatusV2()
require.Equal(t, msg, stV2.GetMessage())
})
}
func TestNodeUnderMaintenance(t *testing.T) {
t.Run("default", func(t *testing.T) {
st := apistatus.NewNodeUnderMaintenance()
require.Empty(t, st.Message())
})
t.Run("custom message", func(t *testing.T) {
st := apistatus.NewNodeUnderMaintenance()
msg := "some message"
st.SetMessage(msg)
stV2 := st.ToStatusV2()
require.Equal(t, msg, st.Message())
require.Equal(t, msg, stV2.GetMessage())
})
t.Run("empty to V2", func(t *testing.T) {
st := apistatus.NewNodeUnderMaintenance()
stV2 := st.ToStatusV2()
require.Empty(t, "", stV2.GetMessage())
})
t.Run("non-empty to V2", func(t *testing.T) {
st := apistatus.NewNodeUnderMaintenance()
msg := "some other msg"
st.SetMessage(msg)
stV2 := st.ToStatusV2()
require.Equal(t, msg, stV2.GetMessage())
})
}