github.com/jghiloni/cli@v6.28.1-0.20170628223758-0ce05fe032a2+incompatible/command/errors_test.go (about)

     1  package command_test
     2  
     3  import (
     4  	"bytes"
     5  	"text/template"
     6  
     7  	. "code.cloudfoundry.org/cli/command"
     8  	"code.cloudfoundry.org/cli/util/ui"
     9  
    10  	. "github.com/onsi/ginkgo"
    11  	. "github.com/onsi/ginkgo/extensions/table"
    12  	. "github.com/onsi/gomega"
    13  )
    14  
    15  var _ = Describe("Translatable Errors", func() {
    16  	translateFunc := func(s string, vars ...interface{}) string {
    17  		formattedTemplate, err := template.New("test template").Parse(s)
    18  		Expect(err).ToNot(HaveOccurred())
    19  		formattedTemplate.Option("missingkey=error")
    20  
    21  		var buffer bytes.Buffer
    22  		err = formattedTemplate.Execute(&buffer, vars[0])
    23  		Expect(err).ToNot(HaveOccurred())
    24  
    25  		return buffer.String()
    26  	}
    27  
    28  	DescribeTable("translates error",
    29  		func(e error) {
    30  			err, ok := e.(ui.TranslatableError)
    31  			Expect(ok).To(BeTrue())
    32  			err.Translate(translateFunc)
    33  		},
    34  
    35  		// Command prerequisite errors.
    36  		Entry("NoAPISetError", NoAPISetError{}),
    37  		Entry("NoOrganizationTargetedError", NoOrganizationTargetedError{}),
    38  		Entry("NoSpaceTargetedError", NoSpaceTargetedError{}),
    39  		Entry("NotLoggedInError", NotLoggedInError{}),
    40  
    41  		// UAA errors.
    42  		Entry("BadCredentialsError", BadCredentialsError{}),
    43  
    44  		// Cloud Controller errors.
    45  		Entry("APIRequestError", APIRequestError{}),
    46  		Entry("InvalidSSLCertError", InvalidSSLCertError{}),
    47  		Entry("SSLCertErrorError", SSLCertErrorError{}),
    48  		Entry("APINotFoundError", APINotFoundError{}),
    49  
    50  		// Actor errors.
    51  		Entry("ApplicationNotFoundError", ApplicationNotFoundError{}),
    52  		Entry("ServiceInstanceNotFoundError", ServiceInstanceNotFoundError{}),
    53  
    54  		// Parse errors.
    55  		Entry("ArgumentCombinationError", ArgumentCombinationError{}),
    56  		Entry("ParseArgumentError", ParseArgumentError{}),
    57  		Entry("RequiredArgumentError", RequiredArgumentError{}),
    58  		Entry("ThreeRequiredArgumentsError", ThreeRequiredArgumentsError{}),
    59  
    60  		// Version errors.
    61  		Entry("MinimumAPIVersionNotMetError", MinimumAPIVersionNotMetError{}),
    62  		Entry("LifecycleMinimumAPIVersionNotMetError", LifecycleMinimumAPIVersionNotMetError{}),
    63  		Entry("HealthCheckTypeUnsupportedError", HealthCheckTypeUnsupportedError{
    64  			SupportedTypes: []string{"some-type", "another-type"},
    65  		}),
    66  
    67  		// URL scheme errors.
    68  		Entry("UnsupportedURLSchemeError", UnsupportedURLSchemeError{}),
    69  	)
    70  })