github.com/pf-qiu/concourse/v6@v6.7.3-0.20201207032516-1f455d73275f/tsa/deleter_test.go (about)

     1  package tsa_test
     2  
     3  import (
     4  	"context"
     5  
     6  	"github.com/pf-qiu/concourse/v6/tsa"
     7  
     8  	"code.cloudfoundry.org/lager/lagerctx"
     9  	"code.cloudfoundry.org/lager/lagertest"
    10  	"github.com/pf-qiu/concourse/v6/atc"
    11  	. "github.com/onsi/ginkgo"
    12  	. "github.com/onsi/gomega"
    13  	"github.com/onsi/gomega/ghttp"
    14  	"github.com/tedsuo/rata"
    15  	"golang.org/x/oauth2"
    16  )
    17  
    18  var _ = Describe("Deleter", func() {
    19  	var (
    20  		deleter *tsa.Deleter
    21  
    22  		ctx     context.Context
    23  		worker  atc.Worker
    24  		fakeATC *ghttp.Server
    25  	)
    26  
    27  	BeforeEach(func() {
    28  		ctx = lagerctx.NewContext(context.Background(), lagertest.NewTestLogger("test"))
    29  
    30  		worker = atc.Worker{
    31  			Name: "some-worker",
    32  		}
    33  
    34  		fakeATC = ghttp.NewServer()
    35  
    36  		atcEndpoint := rata.NewRequestGenerator(fakeATC.URL(), atc.Routes)
    37  
    38  		token := &oauth2.Token{TokenType: "Bearer", AccessToken: "yo"}
    39  		httpClient := oauth2.NewClient(oauth2.NoContext, oauth2.StaticTokenSource(token))
    40  
    41  		deleter = &tsa.Deleter{
    42  			ATCEndpoint: atcEndpoint,
    43  			HTTPClient:  httpClient,
    44  		}
    45  	})
    46  
    47  	AfterEach(func() {
    48  		fakeATC.Close()
    49  	})
    50  
    51  	It("tells the ATC to retire the worker", func() {
    52  		fakeATC.AppendHandlers(ghttp.CombineHandlers(
    53  			ghttp.VerifyRequest("DELETE", "/api/v1/workers/some-worker"),
    54  			ghttp.VerifyHeaderKV("Authorization", "Bearer yo"),
    55  			ghttp.RespondWith(200, nil, nil),
    56  		))
    57  
    58  		err := deleter.Delete(ctx, worker)
    59  		Expect(err).NotTo(HaveOccurred())
    60  
    61  		Expect(fakeATC.ReceivedRequests()).To(HaveLen(1))
    62  	})
    63  
    64  	Context("when the ATC does not respond to retire the worker", func() {
    65  		BeforeEach(func() {
    66  			fakeATC.AppendHandlers(ghttp.CombineHandlers(
    67  				ghttp.VerifyRequest("DELETE", "/api/v1/workers/some-worker"),
    68  				ghttp.RespondWith(500, nil, nil),
    69  			))
    70  		})
    71  
    72  		It("errors", func() {
    73  			err := deleter.Delete(ctx, worker)
    74  			Expect(err).To(HaveOccurred())
    75  
    76  			Expect(err).To(MatchError(ContainSubstring("500")))
    77  			Expect(fakeATC.ReceivedRequests()).To(HaveLen(1))
    78  		})
    79  	})
    80  })