github.com/pf-qiu/concourse/v6@v6.7.3-0.20201207032516-1f455d73275f/atc/api/pipelineserver/archive_test.go (about)

     1  package pipelineserver_test
     2  
     3  import (
     4  	"errors"
     5  	"net/http"
     6  	"net/http/httptest"
     7  
     8  	"code.cloudfoundry.org/lager"
     9  	"code.cloudfoundry.org/lager/lagertest"
    10  	"github.com/pf-qiu/concourse/v6/atc/api/pipelineserver"
    11  	"github.com/pf-qiu/concourse/v6/atc/db/dbfakes"
    12  	. "github.com/onsi/ginkgo"
    13  	. "github.com/onsi/gomega"
    14  	"github.com/onsi/gomega/gstruct"
    15  )
    16  
    17  //go:generate counterfeiter code.cloudfoundry.org/lager.Logger
    18  
    19  var _ = Describe("Archive Handler", func() {
    20  	var (
    21  		fakeLogger *lagertest.TestLogger
    22  		server     *pipelineserver.Server
    23  		dbPipeline *dbfakes.FakePipeline
    24  		handler    http.Handler
    25  		recorder   *httptest.ResponseRecorder
    26  		request    *http.Request
    27  	)
    28  
    29  	BeforeEach(func() {
    30  		fakeLogger = lagertest.NewTestLogger("test")
    31  		server = pipelineserver.NewServer(
    32  			fakeLogger,
    33  			new(dbfakes.FakeTeamFactory),
    34  			new(dbfakes.FakePipelineFactory),
    35  			"",
    36  		)
    37  		dbPipeline = new(dbfakes.FakePipeline)
    38  		handler = server.ArchivePipeline(dbPipeline)
    39  		recorder = httptest.NewRecorder()
    40  		request = httptest.NewRequest("PUT", "http://example.com", nil)
    41  	})
    42  
    43  	It("logs database errors", func() {
    44  		expectedError := errors.New("db error")
    45  		dbPipeline.ArchiveReturns(expectedError)
    46  
    47  		handler.ServeHTTP(recorder, request)
    48  
    49  		Expect(fakeLogger.Logs()).To(ContainElement(gstruct.MatchFields(gstruct.IgnoreExtras, gstruct.Fields{
    50  			"Message":  Equal("test.archive-pipeline"),
    51  			"LogLevel": Equal(lager.ERROR),
    52  		})))
    53  	})
    54  	It("write a debug log on every request", func() {
    55  		handler.ServeHTTP(recorder, request)
    56  
    57  		Expect(fakeLogger.Logs()).To(ContainElement(gstruct.MatchFields(gstruct.IgnoreExtras, gstruct.Fields{
    58  			"Message":  Equal("test.archive-pipeline"),
    59  			"LogLevel": Equal(lager.DEBUG),
    60  		})))
    61  	})
    62  
    63  	It("logs no errors if everything works", func() {
    64  		dbPipeline.ArchiveReturns(nil)
    65  
    66  		handler.ServeHTTP(recorder, request)
    67  
    68  		Expect(fakeLogger.Logs()).ToNot(ContainElement(gstruct.MatchFields(gstruct.IgnoreExtras, gstruct.Fields{
    69  			"Message":  Equal("test.archive-pipeline"),
    70  			"LogLevel": Equal(lager.ERROR),
    71  		})))
    72  	})
    73  })