@@ -3,6 +3,7 @@ package v1_test
33import (
44 "testing"
55
6+ sdkerrors "cosmossdk.io/errors"
67 "github.com/stretchr/testify/require"
78 "google.golang.org/grpc/codes"
89 "google.golang.org/grpc/status"
@@ -12,62 +13,73 @@ import (
1213
1314func TestErrorGRPCStatusCodes (t * testing.T ) {
1415 tests := []struct {
15- name string
16- err error
17- expectedCode codes.Code
16+ name string
17+ err * sdkerrors.Error
18+ expectedGRPCCode codes.Code
19+ expectedABCICode uint32
1820 }{
1921 {
20- name : "certificate_not_found_returns_not_found" ,
21- err : v1 .ErrCertificateNotFound ,
22- expectedCode : codes .NotFound ,
22+ name : "certificate_not_found" ,
23+ err : v1 .ErrCertificateNotFound ,
24+ expectedGRPCCode : codes .NotFound ,
25+ expectedABCICode : 1 ,
2326 },
2427 {
25- name : "certificate_exists_returns_already_exists" ,
26- err : v1 .ErrCertificateExists ,
27- expectedCode : codes .AlreadyExists ,
28+ name : "invalid_address" ,
29+ err : v1 .ErrInvalidAddress ,
30+ expectedGRPCCode : codes .InvalidArgument ,
31+ expectedABCICode : 2 ,
2832 },
2933 {
30- name : "invalid_address_returns_invalid_argument" ,
31- err : v1 .ErrInvalidAddress ,
32- expectedCode : codes .InvalidArgument ,
34+ name : "certificate_exists" ,
35+ err : v1 .ErrCertificateExists ,
36+ expectedGRPCCode : codes .AlreadyExists ,
37+ expectedABCICode : 3 ,
3338 },
3439 {
35- name : "invalid_serial_number_returns_invalid_argument" ,
36- err : v1 .ErrInvalidSerialNumber ,
37- expectedCode : codes .InvalidArgument ,
40+ name : "certificate_already_revoked" ,
41+ err : v1 .ErrCertificateAlreadyRevoked ,
42+ expectedGRPCCode : codes .FailedPrecondition ,
43+ expectedABCICode : 4 ,
3844 },
3945 {
40- name : "invalid_certificate_value_returns_invalid_argument" ,
41- err : v1 .ErrInvalidCertificateValue ,
42- expectedCode : codes .InvalidArgument ,
46+ name : "invalid_serial_number" ,
47+ err : v1 .ErrInvalidSerialNumber ,
48+ expectedGRPCCode : codes .InvalidArgument ,
49+ expectedABCICode : 5 ,
4350 },
4451 {
45- name : "invalid_pubkey_value_returns_invalid_argument" ,
46- err : v1 .ErrInvalidPubkeyValue ,
47- expectedCode : codes .InvalidArgument ,
52+ name : "invalid_certificate_value" ,
53+ err : v1 .ErrInvalidCertificateValue ,
54+ expectedGRPCCode : codes .InvalidArgument ,
55+ expectedABCICode : 6 ,
4856 },
4957 {
50- name : "invalid_state_returns_invalid_argument" ,
51- err : v1 .ErrInvalidState ,
52- expectedCode : codes .InvalidArgument ,
58+ name : "invalid_pubkey_value" ,
59+ err : v1 .ErrInvalidPubkeyValue ,
60+ expectedGRPCCode : codes .InvalidArgument ,
61+ expectedABCICode : 7 ,
5362 },
5463 {
55- name : "invalid_key_size_returns_invalid_argument" ,
56- err : v1 .ErrInvalidKeySize ,
57- expectedCode : codes .InvalidArgument ,
64+ name : "invalid_state" ,
65+ err : v1 .ErrInvalidState ,
66+ expectedGRPCCode : codes .InvalidArgument ,
67+ expectedABCICode : 8 ,
5868 },
5969 {
60- name : "certificate_already_revoked_returns_failed_precondition" ,
61- err : v1 .ErrCertificateAlreadyRevoked ,
62- expectedCode : codes .FailedPrecondition ,
70+ name : "invalid_key_size" ,
71+ err : v1 .ErrInvalidKeySize ,
72+ expectedGRPCCode : codes .InvalidArgument ,
73+ expectedABCICode : 9 ,
6374 },
6475 }
6576
6677 for _ , tt := range tests {
6778 t .Run (tt .name , func (t * testing.T ) {
6879 st , ok := status .FromError (tt .err )
6980 require .True (t , ok , "error should be convertible to gRPC status" )
70- require .Equal (t , tt .expectedCode , st .Code (), "gRPC status code mismatch" )
81+ require .Equal (t , tt .expectedGRPCCode , st .Code (), "gRPC status code mismatch" )
82+ require .Equal (t , tt .expectedABCICode , tt .err .ABCICode (), "ABCI error code mismatch" )
7183 })
7284 }
7385}
0 commit comments