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  })