github.com/pf-qiu/concourse/v6@v6.7.3-0.20201207032516-1f455d73275f/atc/engine/put_delegate_test.go (about)

     1  package engine_test
     2  
     3  import (
     4  	"time"
     5  
     6  	. "github.com/onsi/ginkgo"
     7  	. "github.com/onsi/gomega"
     8  
     9  	"code.cloudfoundry.org/clock/fakeclock"
    10  	"code.cloudfoundry.org/lager/lagertest"
    11  	"github.com/pf-qiu/concourse/v6/atc"
    12  	"github.com/pf-qiu/concourse/v6/atc/db"
    13  	"github.com/pf-qiu/concourse/v6/atc/db/dbfakes"
    14  	"github.com/pf-qiu/concourse/v6/atc/engine"
    15  	"github.com/pf-qiu/concourse/v6/atc/event"
    16  	"github.com/pf-qiu/concourse/v6/atc/exec"
    17  	"github.com/pf-qiu/concourse/v6/atc/policy/policyfakes"
    18  	"github.com/pf-qiu/concourse/v6/atc/runtime"
    19  	"github.com/pf-qiu/concourse/v6/vars"
    20  )
    21  
    22  var _ = Describe("PutDelegate", func() {
    23  	var (
    24  		logger            *lagertest.TestLogger
    25  		fakeBuild         *dbfakes.FakeBuild
    26  		fakeClock         *fakeclock.FakeClock
    27  		fakePolicyChecker *policyfakes.FakeChecker
    28  
    29  		state exec.RunState
    30  
    31  		now = time.Date(1991, 6, 3, 5, 30, 0, 0, time.UTC)
    32  
    33  		delegate   exec.PutDelegate
    34  		info       runtime.VersionResult
    35  		exitStatus exec.ExitStatus
    36  	)
    37  
    38  	BeforeEach(func() {
    39  		logger = lagertest.NewTestLogger("test")
    40  
    41  		fakeBuild = new(dbfakes.FakeBuild)
    42  		fakeClock = fakeclock.NewFakeClock(now)
    43  		credVars := vars.StaticVariables{
    44  			"source-param": "super-secret-source",
    45  			"git-key":      "{\n123\n456\n789\n}\n",
    46  		}
    47  		state = exec.NewRunState(noopStepper, credVars, true)
    48  
    49  		info = runtime.VersionResult{
    50  			Version:  atc.Version{"foo": "bar"},
    51  			Metadata: []atc.MetadataField{{Name: "baz", Value: "shmaz"}},
    52  		}
    53  
    54  		fakePolicyChecker = new(policyfakes.FakeChecker)
    55  
    56  		delegate = engine.NewPutDelegate(fakeBuild, "some-plan-id", state, fakeClock, fakePolicyChecker)
    57  	})
    58  
    59  	Describe("Finished", func() {
    60  		JustBeforeEach(func() {
    61  			delegate.Finished(logger, exitStatus, info)
    62  		})
    63  
    64  		It("saves an event", func() {
    65  			Expect(fakeBuild.SaveEventCallCount()).To(Equal(1))
    66  			Expect(fakeBuild.SaveEventArgsForCall(0)).To(Equal(event.FinishPut{
    67  				Origin:          event.Origin{ID: event.OriginID("some-plan-id")},
    68  				Time:            now.Unix(),
    69  				ExitStatus:      int(exitStatus),
    70  				CreatedVersion:  info.Version,
    71  				CreatedMetadata: info.Metadata,
    72  			}))
    73  		})
    74  	})
    75  
    76  	Describe("SaveOutput", func() {
    77  		var plan atc.PutPlan
    78  		var source atc.Source
    79  		var resourceTypes atc.VersionedResourceTypes
    80  
    81  		JustBeforeEach(func() {
    82  			plan = atc.PutPlan{
    83  				Name:     "some-name",
    84  				Type:     "some-type",
    85  				Resource: "some-resource",
    86  			}
    87  			source = atc.Source{"some": "source"}
    88  			resourceTypes = atc.VersionedResourceTypes{}
    89  
    90  			delegate.SaveOutput(logger, plan, source, resourceTypes, info)
    91  		})
    92  
    93  		It("saves the build output", func() {
    94  			Expect(fakeBuild.SaveOutputCallCount()).To(Equal(1))
    95  			resourceType, sourceArg, resourceTypesArg, version, metadata, name, resource := fakeBuild.SaveOutputArgsForCall(0)
    96  			Expect(resourceType).To(Equal(plan.Type))
    97  			Expect(sourceArg).To(Equal(source))
    98  			Expect(resourceTypesArg).To(Equal(resourceTypes))
    99  			Expect(version).To(Equal(info.Version))
   100  			Expect(metadata).To(Equal(db.NewResourceConfigMetadataFields(info.Metadata)))
   101  			Expect(name).To(Equal(plan.Name))
   102  			Expect(resource).To(Equal(plan.Resource))
   103  		})
   104  	})
   105  })