git.frostfs.info/TrueCloudLab/frostfs-sdk-go@v0.0.0-20241022124111-5361f0ecebd3/client/status/common_test.go (about)

     1  package apistatus_test
     2  
     3  import (
     4  	"testing"
     5  
     6  	"git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/status"
     7  	apistatus "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/client/status"
     8  	"github.com/stretchr/testify/require"
     9  )
    10  
    11  func TestServerInternal_Message(t *testing.T) {
    12  	const msg = "some message"
    13  
    14  	var st apistatus.ServerInternal
    15  
    16  	res := st.Message()
    17  	resv2 := apistatus.ToStatusV2(st).Message()
    18  	require.Empty(t, res)
    19  	require.Empty(t, resv2)
    20  
    21  	st.SetMessage(msg)
    22  
    23  	res = st.Message()
    24  	resv2 = apistatus.ToStatusV2(st).Message()
    25  	require.Equal(t, msg, res)
    26  	require.Equal(t, msg, resv2)
    27  }
    28  
    29  func TestWrongMagicNumber_CorrectMagic(t *testing.T) {
    30  	const magic = 1337
    31  
    32  	var st apistatus.WrongMagicNumber
    33  
    34  	res, ok := st.CorrectMagic()
    35  	require.Zero(t, res)
    36  	require.Zero(t, ok)
    37  
    38  	st.WriteCorrectMagic(magic)
    39  
    40  	res, ok = st.CorrectMagic()
    41  	require.EqualValues(t, magic, res)
    42  	require.EqualValues(t, 1, ok)
    43  
    44  	// corrupt the value
    45  	apistatus.ToStatusV2(st).IterateDetails(func(d *status.Detail) bool {
    46  		d.SetValue([]byte{1, 2, 3}) // any slice with len != 8
    47  		return true
    48  	})
    49  
    50  	_, ok = st.CorrectMagic()
    51  	require.EqualValues(t, -1, ok)
    52  }
    53  
    54  func TestSignatureVerification(t *testing.T) {
    55  	t.Run("default", func(t *testing.T) {
    56  		var st apistatus.SignatureVerification
    57  
    58  		require.Empty(t, st.Message())
    59  	})
    60  
    61  	t.Run("custom message", func(t *testing.T) {
    62  		var st apistatus.SignatureVerification
    63  		msg := "some message"
    64  
    65  		st.SetMessage(msg)
    66  
    67  		stV2 := st.ToStatusV2()
    68  
    69  		require.Equal(t, msg, st.Message())
    70  		require.Equal(t, msg, stV2.Message())
    71  	})
    72  
    73  	t.Run("empty to V2", func(t *testing.T) {
    74  		var st apistatus.SignatureVerification
    75  
    76  		stV2 := st.ToStatusV2()
    77  
    78  		require.Equal(t, "signature verification failed", stV2.Message())
    79  	})
    80  
    81  	t.Run("non-empty to V2", func(t *testing.T) {
    82  		var st apistatus.SignatureVerification
    83  		msg := "some other msg"
    84  
    85  		st.SetMessage(msg)
    86  
    87  		stV2 := st.ToStatusV2()
    88  
    89  		require.Equal(t, msg, stV2.Message())
    90  	})
    91  }
    92  
    93  func TestNodeUnderMaintenance(t *testing.T) {
    94  	t.Run("default", func(t *testing.T) {
    95  		var st apistatus.NodeUnderMaintenance
    96  
    97  		require.Empty(t, st.Message())
    98  	})
    99  
   100  	t.Run("custom message", func(t *testing.T) {
   101  		var st apistatus.NodeUnderMaintenance
   102  		msg := "some message"
   103  
   104  		st.SetMessage(msg)
   105  
   106  		stV2 := st.ToStatusV2()
   107  
   108  		require.Equal(t, msg, st.Message())
   109  		require.Equal(t, msg, stV2.Message())
   110  	})
   111  
   112  	t.Run("empty to V2", func(t *testing.T) {
   113  		var st apistatus.NodeUnderMaintenance
   114  
   115  		stV2 := st.ToStatusV2()
   116  
   117  		require.Equal(t, "node is under maintenance", stV2.Message())
   118  	})
   119  
   120  	t.Run("non-empty to V2", func(t *testing.T) {
   121  		var st apistatus.NodeUnderMaintenance
   122  		msg := "some other msg"
   123  
   124  		st.SetMessage(msg)
   125  
   126  		stV2 := st.ToStatusV2()
   127  
   128  		require.Equal(t, msg, stV2.Message())
   129  	})
   130  }
   131  
   132  func TestInvalidArgument(t *testing.T) {
   133  	t.Run("default", func(t *testing.T) {
   134  		var st apistatus.InvalidArgument
   135  
   136  		require.Empty(t, st.Message())
   137  	})
   138  
   139  	t.Run("custom message", func(t *testing.T) {
   140  		var st apistatus.InvalidArgument
   141  		msg := "some message"
   142  
   143  		st.SetMessage(msg)
   144  
   145  		stV2 := st.ToStatusV2()
   146  
   147  		require.Equal(t, msg, st.Message())
   148  		require.Equal(t, msg, stV2.Message())
   149  	})
   150  
   151  	t.Run("empty to V2", func(t *testing.T) {
   152  		var st apistatus.InvalidArgument
   153  
   154  		stV2 := st.ToStatusV2()
   155  
   156  		require.Equal(t, "argument is invalid", stV2.Message())
   157  	})
   158  
   159  	t.Run("non-empty to V2", func(t *testing.T) {
   160  		var st apistatus.InvalidArgument
   161  		msg := "some other msg"
   162  
   163  		st.SetMessage(msg)
   164  
   165  		stV2 := st.ToStatusV2()
   166  
   167  		require.Equal(t, msg, stV2.Message())
   168  	})
   169  }