Skip to content

Commit 31726a6

Browse files
committed
chore: add context to errors in message validation
1 parent 833849f commit 31726a6

File tree

9 files changed

+96
-74
lines changed

9 files changed

+96
-74
lines changed

x/lease/types/keys.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,9 @@ const (
1515
)
1616

1717
var (
18-
CountKey = []byte{0x00}
19-
ParamsKey = []byte{0x01}
18+
CountKey = []byte{0x00}
19+
ParamsKey = []byte{0x01}
20+
2021
LeaseKeyPrefix = []byte{0x10}
2122
LeaseForNodeKeyPrefix = []byte{0x11}
2223
LeaseForProviderKeyPrefix = []byte{0x12}

x/lease/types/v1/msg.go

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package v1
22

33
import (
4+
"fmt"
5+
46
sdk "github.com/cosmos/cosmos-sdk/types"
57

68
base "github.com/sentinel-official/sentinelhub/v12/types"
@@ -32,7 +34,7 @@ func (m *MsgEndLeaseRequest) ValidateBasic() error {
3234
}
3335

3436
if _, err := base.ProvAddressFromBech32(m.From); err != nil {
35-
return types.NewErrorInvalidMessage(err)
37+
return types.NewErrorInvalidMessage(fmt.Errorf("invalid from: %w", err))
3638
}
3739

3840
if m.ID == 0 {
@@ -69,7 +71,7 @@ func (m *MsgRenewLeaseRequest) ValidateBasic() error {
6971
}
7072

7173
if _, err := base.ProvAddressFromBech32(m.From); err != nil {
72-
return types.NewErrorInvalidMessage(err)
74+
return types.NewErrorInvalidMessage(fmt.Errorf("invalid from: %w", err))
7375
}
7476

7577
if m.ID == 0 {
@@ -86,7 +88,7 @@ func (m *MsgRenewLeaseRequest) ValidateBasic() error {
8688

8789
if m.MaxPrice.Denom != "" {
8890
if err := m.MaxPrice.Validate(); err != nil {
89-
return types.NewErrorInvalidMessage(err)
91+
return types.NewErrorInvalidMessage(fmt.Errorf("invalid max_price: %w", err))
9092
}
9193
}
9294

@@ -121,15 +123,15 @@ func (m *MsgStartLeaseRequest) ValidateBasic() error {
121123
}
122124

123125
if _, err := base.ProvAddressFromBech32(m.From); err != nil {
124-
return types.NewErrorInvalidMessage(err)
126+
return types.NewErrorInvalidMessage(fmt.Errorf("invalid from: %w", err))
125127
}
126128

127129
if m.NodeAddress == "" {
128130
return types.NewErrorInvalidMessage("node_address cannot be empty")
129131
}
130132

131133
if _, err := base.NodeAddressFromBech32(m.NodeAddress); err != nil {
132-
return types.NewErrorInvalidMessage(err)
134+
return types.NewErrorInvalidMessage(fmt.Errorf("invalid node_address: %w", err))
133135
}
134136

135137
if m.Hours == 0 {
@@ -142,12 +144,12 @@ func (m *MsgStartLeaseRequest) ValidateBasic() error {
142144

143145
if m.MaxPrice.Denom != "" {
144146
if err := m.MaxPrice.Validate(); err != nil {
145-
return types.NewErrorInvalidMessage(err)
147+
return types.NewErrorInvalidMessage(fmt.Errorf("invalid max_price: %w", err))
146148
}
147149
}
148150

149151
if !m.RenewalPricePolicy.IsValid() {
150-
return types.NewErrorInvalidMessage("renewal price policy must be valid")
152+
return types.NewErrorInvalidMessage("renewal_price_policy must be valid")
151153
}
152154

153155
return nil
@@ -179,15 +181,15 @@ func (m *MsgUpdateLeaseRequest) ValidateBasic() error {
179181
}
180182

181183
if _, err := base.ProvAddressFromBech32(m.From); err != nil {
182-
return types.NewErrorInvalidMessage(err)
184+
return types.NewErrorInvalidMessage(fmt.Errorf("invalid from: %w", err))
183185
}
184186

185187
if m.ID == 0 {
186188
return types.NewErrorInvalidMessage("id cannot be zero")
187189
}
188190

189191
if !m.RenewalPricePolicy.IsValid() {
190-
return types.NewErrorInvalidMessage("renewal price policy must be valid")
192+
return types.NewErrorInvalidMessage("renewal_price_policy must be valid")
191193
}
192194

193195
return nil
@@ -218,11 +220,11 @@ func (m *MsgUpdateParamsRequest) ValidateBasic() error {
218220
}
219221

220222
if _, err := sdk.AccAddressFromBech32(m.From); err != nil {
221-
return types.NewErrorInvalidMessage(err)
223+
return types.NewErrorInvalidMessage(fmt.Errorf("invalid from: %w", err))
222224
}
223225

224226
if err := m.Params.Validate(); err != nil {
225-
return types.NewErrorInvalidMessage(err)
227+
return types.NewErrorInvalidMessage(fmt.Errorf("invalid params: %w", err))
226228
}
227229

228230
return nil

x/node/types/v3/msg.go

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package v3
22

33
import (
4+
"fmt"
45
"time"
56

67
sdkmath "cosmossdk.io/math"
@@ -47,7 +48,7 @@ func (m *MsgRegisterNodeRequest) ValidateBasic() error {
4748
}
4849

4950
if _, err := sdk.AccAddressFromBech32(m.From); err != nil {
50-
return types.NewErrorInvalidMessage(err)
51+
return types.NewErrorInvalidMessage(fmt.Errorf("invalid from: %w", err))
5152
}
5253

5354
if prices := m.GetGigabytePrices(); !prices.IsValid() {
@@ -59,7 +60,7 @@ func (m *MsgRegisterNodeRequest) ValidateBasic() error {
5960
}
6061

6162
if err := validateRemoteAddrs(m.RemoteAddrs); err != nil {
62-
return types.NewErrorInvalidMessage(err)
63+
return types.NewErrorInvalidMessage(fmt.Errorf("invalid remote_addrs: %w", err))
6364
}
6465

6566
return nil
@@ -102,7 +103,7 @@ func (m *MsgUpdateNodeDetailsRequest) ValidateBasic() error {
102103
}
103104

104105
if _, err := base.NodeAddressFromBech32(m.From); err != nil {
105-
return types.NewErrorInvalidMessage(err)
106+
return types.NewErrorInvalidMessage(fmt.Errorf("invalid from: %w", err))
106107
}
107108

108109
if prices := m.GetGigabytePrices(); !prices.IsValid() {
@@ -115,7 +116,7 @@ func (m *MsgUpdateNodeDetailsRequest) ValidateBasic() error {
115116

116117
if len(m.RemoteAddrs) > 0 {
117118
if err := validateRemoteAddrs(m.RemoteAddrs); err != nil {
118-
return types.NewErrorInvalidMessage(err)
119+
return types.NewErrorInvalidMessage(fmt.Errorf("invalid remote_addrs: %w", err))
119120
}
120121
}
121122

@@ -147,7 +148,7 @@ func (m *MsgUpdateNodeStatusRequest) ValidateBasic() error {
147148
}
148149

149150
if _, err := base.NodeAddressFromBech32(m.From); err != nil {
150-
return types.NewErrorInvalidMessage(err)
151+
return types.NewErrorInvalidMessage(fmt.Errorf("invalid from: %w", err))
151152
}
152153

153154
if !m.Status.IsOneOf(v1base.StatusActive, v1base.StatusInactive) {
@@ -195,15 +196,15 @@ func (m *MsgStartSessionRequest) ValidateBasic() error {
195196
}
196197

197198
if _, err := sdk.AccAddressFromBech32(m.From); err != nil {
198-
return types.NewErrorInvalidMessage(err)
199+
return types.NewErrorInvalidMessage(fmt.Errorf("invalid from: %w", err))
199200
}
200201

201202
if m.NodeAddress == "" {
202203
return types.NewErrorInvalidMessage("node_address cannot be empty")
203204
}
204205

205206
if _, err := base.NodeAddressFromBech32(m.NodeAddress); err != nil {
206-
return types.NewErrorInvalidMessage(err)
207+
return types.NewErrorInvalidMessage(fmt.Errorf("invalid node_address: %w", err))
207208
}
208209

209210
if m.Gigabytes == 0 && m.Hours == 0 {
@@ -224,7 +225,7 @@ func (m *MsgStartSessionRequest) ValidateBasic() error {
224225

225226
if m.MaxPrice.Denom != "" {
226227
if err := m.MaxPrice.Validate(); err != nil {
227-
return types.NewErrorInvalidMessage(err)
228+
return types.NewErrorInvalidMessage(fmt.Errorf("invalid max_price: %w", err))
228229
}
229230
}
230231

@@ -256,11 +257,11 @@ func (m *MsgUpdateParamsRequest) ValidateBasic() error {
256257
}
257258

258259
if _, err := sdk.AccAddressFromBech32(m.From); err != nil {
259-
return types.NewErrorInvalidMessage(err)
260+
return types.NewErrorInvalidMessage(fmt.Errorf("invalid from: %w", err))
260261
}
261262

262263
if err := m.Params.Validate(); err != nil {
263-
return types.NewErrorInvalidMessage(err)
264+
return types.NewErrorInvalidMessage(fmt.Errorf("invalid params: %w", err))
264265
}
265266

266267
return nil

x/node/types/v3/node.go

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import (
55
"fmt"
66
"net"
77
"strconv"
8-
"strings"
98

109
base "github.com/sentinel-official/sentinelhub/v12/types"
1110
v1base "github.com/sentinel-official/sentinelhub/v12/types/v1"
@@ -123,6 +122,14 @@ func validateRemoteAddrs(addrs []string) error {
123122
return fmt.Errorf("invalid format: %w", err)
124123
}
125124

125+
if host == "" {
126+
return errors.New("missing host")
127+
}
128+
129+
if len(host) > 64 {
130+
return errors.New("host length exceeds 64 chars")
131+
}
132+
126133
if port == "" {
127134
return errors.New("missing port")
128135
}
@@ -135,11 +142,6 @@ func validateRemoteAddrs(addrs []string) error {
135142
if portNum < 1 || portNum > 65535 {
136143
return errors.New("invalid port range")
137144
}
138-
139-
host = strings.Trim(host, "[]")
140-
if len(host) > 64 {
141-
return errors.New("host exceeds 64 characters")
142-
}
143145
}
144146

145147
return nil

x/oracle/types/v1/msg.go

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package v1
22

33
import (
4+
"fmt"
5+
46
sdk "github.com/cosmos/cosmos-sdk/types"
57

68
"github.com/sentinel-official/sentinelhub/v12/x/oracle/types"
@@ -32,15 +34,15 @@ func (m *MsgCreateAssetRequest) ValidateBasic() error {
3234
}
3335

3436
if _, err := sdk.AccAddressFromBech32(m.From); err != nil {
35-
return types.NewErrorInvalidMessage(err)
37+
return types.NewErrorInvalidMessage(fmt.Errorf("invalid from: %w", err))
3638
}
3739

3840
if m.Denom == "" {
3941
return types.NewErrorInvalidMessage("denom cannot be empty")
4042
}
4143

4244
if err := sdk.ValidateDenom(m.Denom); err != nil {
43-
return types.NewErrorInvalidMessage(err)
45+
return types.NewErrorInvalidMessage(fmt.Errorf("invalid denom: %w", err))
4446
}
4547

4648
if m.Decimals < 0 {
@@ -83,15 +85,15 @@ func (m *MsgDeleteAssetRequest) ValidateBasic() error {
8385
}
8486

8587
if _, err := sdk.AccAddressFromBech32(m.From); err != nil {
86-
return types.NewErrorInvalidMessage(err)
88+
return types.NewErrorInvalidMessage(fmt.Errorf("invalid from: %w", err))
8789
}
8890

8991
if m.Denom == "" {
9092
return types.NewErrorInvalidMessage("denom cannot be empty")
9193
}
9294

9395
if err := sdk.ValidateDenom(m.Denom); err != nil {
94-
return types.NewErrorInvalidMessage(err)
96+
return types.NewErrorInvalidMessage(fmt.Errorf("invalid denom: %w", err))
9597
}
9698

9799
return nil
@@ -125,15 +127,15 @@ func (m *MsgUpdateAssetRequest) ValidateBasic() error {
125127
}
126128

127129
if _, err := sdk.AccAddressFromBech32(m.From); err != nil {
128-
return types.NewErrorInvalidMessage(err)
130+
return types.NewErrorInvalidMessage(fmt.Errorf("invalid from: %w", err))
129131
}
130132

131133
if m.Denom == "" {
132134
return types.NewErrorInvalidMessage("denom cannot be empty")
133135
}
134136

135137
if err := sdk.ValidateDenom(m.Denom); err != nil {
136-
return types.NewErrorInvalidMessage(err)
138+
return types.NewErrorInvalidMessage(fmt.Errorf("invalid denom: %w", err))
137139
}
138140

139141
if m.Decimals < 0 {
@@ -176,11 +178,11 @@ func (m *MsgUpdateParamsRequest) ValidateBasic() error {
176178
}
177179

178180
if _, err := sdk.AccAddressFromBech32(m.From); err != nil {
179-
return types.NewErrorInvalidMessage(err)
181+
return types.NewErrorInvalidMessage(fmt.Errorf("invalid from: %w", err))
180182
}
181183

182184
if err := m.Params.Validate(); err != nil {
183-
return types.NewErrorInvalidMessage(err)
185+
return types.NewErrorInvalidMessage(fmt.Errorf("invalid params: %w", err))
184186
}
185187

186188
return nil

0 commit comments

Comments
 (0)