github.com/jghiloni/cli@v6.28.1-0.20170628223758-0ce05fe032a2+incompatible/command/v2/shared/handle_error_test.go (about) 1 package shared_test 2 3 import ( 4 "errors" 5 6 "code.cloudfoundry.org/cli/actor/pushaction" 7 "code.cloudfoundry.org/cli/actor/sharedaction" 8 "code.cloudfoundry.org/cli/actor/v2action" 9 "code.cloudfoundry.org/cli/api/cloudcontroller/ccerror" 10 "code.cloudfoundry.org/cli/api/uaa" 11 "code.cloudfoundry.org/cli/command" 12 . "code.cloudfoundry.org/cli/command/v2/shared" 13 . "github.com/onsi/ginkgo" 14 . "github.com/onsi/ginkgo/extensions/table" 15 . "github.com/onsi/gomega" 16 ) 17 18 var _ = Describe("HandleError", func() { 19 err := errors.New("some-error") 20 21 DescribeTable("error translations", 22 func(passedInErr error, expectedErr error) { 23 actualErr := HandleError(passedInErr) 24 Expect(actualErr).To(MatchError(expectedErr)) 25 }, 26 27 Entry("ccerror.RequestError -> APIRequestError", 28 ccerror.RequestError{Err: err}, 29 command.APIRequestError{Err: err}), 30 31 Entry("ccerror.UnverifiedServerError -> InvalidSSLCertError", 32 ccerror.UnverifiedServerError{URL: "some-url"}, 33 command.InvalidSSLCertError{API: "some-url"}), 34 35 Entry("ccerror.SSLValidationHostnameError -> SSLCertErrorError", 36 ccerror.SSLValidationHostnameError{Message: "some-message"}, 37 command.SSLCertErrorError{Message: "some-message"}), 38 39 Entry("ccerror.APINotFoundError -> APINotFoundError", 40 ccerror.APINotFoundError{URL: "some-url"}, 41 command.APINotFoundError{URL: "some-url"}), 42 43 Entry("v2action.ApplicationNotFoundError -> ApplicationNotFoundError", 44 v2action.ApplicationNotFoundError{Name: "some-app"}, 45 command.ApplicationNotFoundError{Name: "some-app"}), 46 47 Entry("v2action.SecurityGroupNotFoundError -> SecurityGroupNotFoundError", 48 v2action.SecurityGroupNotFoundError{Name: "some-security-group"}, 49 SecurityGroupNotFoundError{Name: "some-security-group"}), 50 51 Entry("v2action.ServiceInstanceNotFoundError -> ServiceInstanceNotFoundError", 52 v2action.ServiceInstanceNotFoundError{Name: "some-service-instance"}, 53 command.ServiceInstanceNotFoundError{Name: "some-service-instance"}), 54 55 Entry("ccerror.JobFailedError -> JobFailedError", 56 ccerror.JobFailedError{JobGUID: "some-job-guid", Message: "some-message"}, 57 JobFailedError{JobGUID: "some-job-guid", Message: "some-message"}), 58 59 Entry("ccerror.JobTimeoutError -> JobTimeoutError", 60 ccerror.JobTimeoutError{JobGUID: "some-job-guid"}, 61 JobTimeoutError{JobGUID: "some-job-guid"}), 62 63 Entry("v2action.OrganizationNotFoundError -> OrgNotFoundError", 64 v2action.OrganizationNotFoundError{Name: "some-org"}, 65 OrganizationNotFoundError{Name: "some-org"}), 66 67 Entry("v2action.SpaceNotFoundError -> SpaceNotFoundError", 68 v2action.SpaceNotFoundError{Name: "some-space"}, 69 SpaceNotFoundError{Name: "some-space"}), 70 71 Entry("sharedaction.NotLoggedInError -> NotLoggedInError", 72 sharedaction.NotLoggedInError{BinaryName: "faceman"}, 73 command.NotLoggedInError{BinaryName: "faceman"}), 74 75 Entry("sharedaction.NoOrganizationTargetedError -> NoOrganizationTargetedError", 76 sharedaction.NoOrganizationTargetedError{BinaryName: "faceman"}, 77 command.NoOrganizationTargetedError{BinaryName: "faceman"}), 78 79 Entry("sharedaction.NoSpaceTargetedError -> NoSpaceTargetedError", 80 sharedaction.NoSpaceTargetedError{BinaryName: "faceman"}, 81 command.NoSpaceTargetedError{BinaryName: "faceman"}), 82 83 Entry("v2action.HTTPHealthCheckInvalidError -> HTTPHealthCheckInvalidError", 84 v2action.HTTPHealthCheckInvalidError{}, 85 HTTPHealthCheckInvalidError{}, 86 ), 87 88 Entry("v2action.RouteInDifferentSpaceError -> RouteInDifferentSpaceError", 89 v2action.RouteInDifferentSpaceError{Route: "some-route"}, 90 RouteInDifferentSpaceError{Route: "some-route"}, 91 ), 92 93 Entry("v2action.FileChangedError -> FileChangedError", 94 v2action.FileChangedError{Filename: "some-filename"}, 95 FileChangedError{Filename: "some-filename"}, 96 ), 97 98 Entry("v2action.EmptyDirectoryError -> EmptyDirectoryError", 99 v2action.EmptyDirectoryError{Path: "some-filename"}, 100 EmptyDirectoryError{Path: "some-filename"}, 101 ), 102 103 Entry("uaa.BadCredentialsError -> command.BadCredentialsError", 104 uaa.BadCredentialsError{}, 105 command.BadCredentialsError{}, 106 ), 107 108 Entry("uaa.InvalidAuthTokenError -> InvalidRefreshTokenError", 109 uaa.InvalidAuthTokenError{}, 110 InvalidRefreshTokenError{}, 111 ), 112 113 Entry("pushaction.NoDomainsFoundError -> NoDomainsFoundError", 114 pushaction.NoDomainsFoundError{OrganizationGUID: "some-guid"}, 115 NoDomainsFoundError{}, 116 ), 117 118 Entry("pushaction.UploadFailedError -> UploadFailedError", 119 pushaction.UploadFailedError{Err: pushaction.NoDomainsFoundError{}}, 120 UploadFailedError{Err: NoDomainsFoundError{}}, 121 ), 122 123 Entry("default case -> original error", 124 err, 125 err), 126 ) 127 128 It("returns nil for a nil error", func() { 129 nilErr := HandleError(nil) 130 Expect(nilErr).To(BeNil()) 131 }) 132 })