github.com/cloudfoundry-attic/ltc@v0.0.0-20151123212628-098adc7919fc/config/target_verifier/target_verifier_test.go (about)

     1  package target_verifier_test
     2  
     3  import (
     4  	"errors"
     5  
     6  	. "github.com/onsi/ginkgo"
     7  	. "github.com/onsi/gomega"
     8  
     9  	"github.com/cloudfoundry-incubator/ltc/config/target_verifier"
    10  	"github.com/cloudfoundry-incubator/ltc/receptor_client/fake_receptor_client_creator"
    11  	"github.com/cloudfoundry-incubator/receptor"
    12  	"github.com/cloudfoundry-incubator/receptor/fake_receptor"
    13  )
    14  
    15  var _ = Describe("TargetVerifier", func() {
    16  	Describe("VerifyTarget", func() {
    17  		var (
    18  			fakeReceptorClient        *fake_receptor.FakeClient
    19  			fakeReceptorClientCreator *fake_receptor_client_creator.FakeCreator
    20  			targetVerifier            target_verifier.TargetVerifier
    21  		)
    22  
    23  		BeforeEach(func() {
    24  			fakeReceptorClient = &fake_receptor.FakeClient{}
    25  			fakeReceptorClientCreator = &fake_receptor_client_creator.FakeCreator{}
    26  			fakeReceptorClientCreator.CreateReceptorClientReturns(fakeReceptorClient)
    27  			targetVerifier = target_verifier.New(fakeReceptorClientCreator)
    28  		})
    29  
    30  		It("returns up=true, auth=true if the receptor does not return an error", func() {
    31  			up, auth, err := targetVerifier.VerifyTarget("http://receptor.mylattice.com")
    32  			Expect(err).NotTo(HaveOccurred())
    33  			Expect(up).To(BeTrue())
    34  			Expect(auth).To(BeTrue())
    35  			Expect(fakeReceptorClientCreator.CreateReceptorClientCallCount()).To(Equal(1))
    36  			Expect(fakeReceptorClientCreator.CreateReceptorClientArgsForCall(0)).To(Equal("http://receptor.mylattice.com"))
    37  		})
    38  
    39  		It("returns up=true, auth=false if the receptor returns an authorization error", func() {
    40  			fakeReceptorClient.DesiredLRPsReturns([]receptor.DesiredLRPResponse{}, receptor.Error{
    41  				Type:    receptor.Unauthorized,
    42  				Message: "Go home. You're not welcome here.",
    43  			})
    44  
    45  			up, auth, err := targetVerifier.VerifyTarget("http://receptor.mylattice.com")
    46  			Expect(err).NotTo(HaveOccurred())
    47  			Expect(up).To(BeTrue())
    48  			Expect(auth).To(BeFalse())
    49  		})
    50  
    51  		It("returns up=true, auth=false, err=(the bubbled up error) if there is a receptor error other than unauthorized", func() {
    52  			fakeReceptorClient.DesiredLRPsReturns([]receptor.DesiredLRPResponse{}, receptor.Error{
    53  				Type:    receptor.UnknownError,
    54  				Message: "It all happened so fast... I just dunno what went wrong.",
    55  			})
    56  
    57  			up, auth, err := targetVerifier.VerifyTarget("http://receptor.mylattice.com")
    58  			Expect(err).To(BeAssignableToTypeOf(receptor.Error{}))
    59  			Expect(err).To(MatchError("It all happened so fast... I just dunno what went wrong."))
    60  			Expect(up).To(BeTrue())
    61  			Expect(auth).To(BeFalse())
    62  		})
    63  
    64  		// TODO: receptor really shouldn't give us non-receptor.Error
    65  		It("returns up=false, auth=false, err=(the bubbled up error) if there is a non-receptor error", func() {
    66  			fakeReceptorClient.DesiredLRPsReturns([]receptor.DesiredLRPResponse{}, errors.New("Couldn't connect to the receptor."))
    67  
    68  			up, auth, err := targetVerifier.VerifyTarget("http://receptor.my-borked-lattice.com")
    69  			Expect(err).To(MatchError("Couldn't connect to the receptor."))
    70  			Expect(up).To(BeFalse())
    71  			Expect(auth).To(BeFalse())
    72  		})
    73  	})
    74  })