github.com/pf-qiu/concourse/v6@v6.7.3-0.20201207032516-1f455d73275f/atc/api/pipelineserver/reject_archived_handler_factory_test.go (about) 1 package pipelineserver_test 2 3 import ( 4 "errors" 5 "io/ioutil" 6 "net/http" 7 "net/http/httptest" 8 9 "github.com/pf-qiu/concourse/v6/atc/api/pipelineserver" 10 "github.com/pf-qiu/concourse/v6/atc/db/dbfakes" 11 12 . "github.com/onsi/ginkgo" 13 . "github.com/onsi/gomega" 14 ) 15 16 var _ = Describe("Rejected Archived Handler", func() { 17 var ( 18 response *http.Response 19 server *httptest.Server 20 delegate *delegateHandler 21 22 dbTeamFactory *dbfakes.FakeTeamFactory 23 fakeTeam *dbfakes.FakeTeam 24 fakePipeline *dbfakes.FakePipeline 25 26 handler http.Handler 27 ) 28 29 BeforeEach(func() { 30 delegate = &delegateHandler{} 31 32 dbTeamFactory = new(dbfakes.FakeTeamFactory) 33 fakeTeam = new(dbfakes.FakeTeam) 34 fakePipeline = new(dbfakes.FakePipeline) 35 36 handlerFactory := pipelineserver.NewRejectArchivedHandlerFactory(dbTeamFactory) 37 handler = handlerFactory.RejectArchived(delegate.GetHandler(fakePipeline)) 38 }) 39 40 JustBeforeEach(func() { 41 server = httptest.NewServer(handler) 42 43 request, err := http.NewRequest("POST", server.URL+"?:team_name=some-team&:pipeline_name=some-pipeline", nil) 44 Expect(err).NotTo(HaveOccurred()) 45 46 response, err = new(http.Client).Do(request) 47 Expect(err).NotTo(HaveOccurred()) 48 }) 49 50 var _ = AfterEach(func() { 51 server.Close() 52 }) 53 54 Context("when a team is found", func() { 55 BeforeEach(func() { 56 dbTeamFactory.FindTeamReturns(fakeTeam, true, nil) 57 }) 58 Context("when a pipeline is found", func() { 59 BeforeEach(func() { 60 fakeTeam.PipelineReturns(fakePipeline, true, nil) 61 }) 62 Context("when a pipeline is archived", func() { 63 BeforeEach(func() { 64 fakePipeline.ArchivedReturns(true) 65 }) 66 It("returns 409", func() { 67 Expect(response.StatusCode).To(Equal(http.StatusConflict)) 68 }) 69 It("returns an error in the body", func() { 70 body, err := ioutil.ReadAll(response.Body) 71 Expect(err).NotTo(HaveOccurred()) 72 Expect(body).To(ContainSubstring("action not allowed for an archived pipeline")) 73 }) 74 }) 75 Context("when a pipeline is not archived", func() { 76 BeforeEach(func() { 77 fakePipeline.ArchivedReturns(false) 78 }) 79 It("returns the delegate handler", func() { 80 Expect(delegate.IsCalled).To(BeTrue()) 81 }) 82 }) 83 }) 84 Context("when a pipeline is not found", func() { 85 BeforeEach(func() { 86 fakeTeam.PipelineReturns(nil, false, nil) 87 }) 88 It("returns 404", func() { 89 Expect(response.StatusCode).To(Equal(http.StatusNotFound)) 90 }) 91 }) 92 Context("when getting a pipeline returns an error", func() { 93 BeforeEach(func() { 94 fakeTeam.PipelineReturns(nil, false, errors.New("some error")) 95 }) 96 It("returns 500", func() { 97 Expect(response.StatusCode).To(Equal(http.StatusInternalServerError)) 98 }) 99 }) 100 }) 101 Context("when a team is not found", func() { 102 BeforeEach(func() { 103 dbTeamFactory.FindTeamReturns(nil, false, nil) 104 }) 105 It("returns 404", func() { 106 Expect(response.StatusCode).To(Equal(http.StatusNotFound)) 107 }) 108 }) 109 Context("when finding a team returns an error", func() { 110 BeforeEach(func() { 111 dbTeamFactory.FindTeamReturns(nil, false, errors.New("some error")) 112 }) 113 It("returns 500", func() { 114 Expect(response.StatusCode).To(Equal(http.StatusInternalServerError)) 115 }) 116 }) 117 })