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 }