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 })