github.com/juju/juju@v0.0.0-20240430160146-1752b71fcf00/rpc/params/apierror_test.go (about) 1 // Copyright 2015 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package params_test 5 6 import ( 7 "github.com/juju/errors" 8 jc "github.com/juju/testing/checkers" 9 gc "gopkg.in/check.v1" 10 11 "github.com/juju/juju/rpc" 12 "github.com/juju/juju/rpc/params" 13 ) 14 15 type errorSuite struct{} 16 17 var _ rpc.ErrorCoder = (*params.Error)(nil) 18 19 var _ = gc.Suite(&errorSuite{}) 20 21 func (*errorSuite) TestErrCode(c *gc.C) { 22 var err error 23 err = ¶ms.Error{Code: params.CodeDead, Message: "brain dead test"} 24 c.Check(params.ErrCode(err), gc.Equals, params.CodeDead) 25 26 err = errors.Trace(err) 27 c.Check(params.ErrCode(err), gc.Equals, params.CodeDead) 28 } 29 30 func (*errorSuite) TestTranslateWellKnownError(c *gc.C) { 31 var tests = []struct { 32 name string 33 err params.Error 34 test func(err error) bool 35 }{ 36 {params.CodeNotFound, params.Error{Code: params.CodeNotFound, Message: "look a NotFound error"}, errors.IsNotFound}, 37 {params.CodeUserNotFound, params.Error{Code: params.CodeUserNotFound, Message: "look a UserNotFound error"}, errors.IsUserNotFound}, 38 {params.CodeUnauthorized, params.Error{Code: params.CodeUnauthorized, Message: "look a Unauthorized error"}, errors.IsUnauthorized}, 39 {params.CodeNotImplemented, params.Error{Code: params.CodeNotImplemented, Message: "look a NotImplemented error"}, errors.IsNotImplemented}, 40 {params.CodeAlreadyExists, params.Error{Code: params.CodeAlreadyExists, Message: "look a AlreadyExists error"}, errors.IsAlreadyExists}, 41 {params.CodeNotSupported, params.Error{Code: params.CodeNotSupported, Message: "look a NotSupported error"}, errors.IsNotSupported}, 42 {params.CodeNotValid, params.Error{Code: params.CodeNotValid, Message: "look a NotValid error"}, errors.IsNotValid}, 43 {params.CodeNotProvisioned, params.Error{Code: params.CodeNotProvisioned, Message: "look a NotProvisioned error"}, errors.IsNotProvisioned}, 44 {params.CodeNotAssigned, params.Error{Code: params.CodeNotAssigned, Message: "look a NotAssigned error"}, errors.IsNotAssigned}, 45 {params.CodeBadRequest, params.Error{Code: params.CodeBadRequest, Message: "look a BadRequest error"}, errors.IsBadRequest}, 46 {params.CodeMethodNotAllowed, params.Error{Code: params.CodeMethodNotAllowed, Message: "look a MethodNotAllowed error"}, errors.IsMethodNotAllowed}, 47 {params.CodeForbidden, params.Error{Code: params.CodeForbidden, Message: "look a Forbidden error"}, errors.IsForbidden}, 48 {params.CodeQuotaLimitExceeded, params.Error{Code: params.CodeQuotaLimitExceeded, Message: "look a QuotaLimitExceeded error"}, errors.IsQuotaLimitExceeded}, 49 {params.CodeNotYetAvailable, params.Error{Code: params.CodeNotYetAvailable, Message: "look a NotYetAvailable error"}, errors.IsNotYetAvailable}, 50 } 51 52 for _, v := range tests { 53 c.Assert(v.test(v.err), jc.IsFalse, gc.Commentf("test %s: params error is not a juju/errors error", v.name)) 54 c.Assert(v.test(params.TranslateWellKnownError(v.err)), jc.IsTrue, gc.Commentf("test %s: translated error is a juju/errors error", v.name)) 55 } 56 }