github.com/sleungcy/cli@v7.1.0+incompatible/actor/v7pushaction/create_docker_package_for_application_test.go (about) 1 package v7pushaction_test 2 3 import ( 4 "errors" 5 6 "code.cloudfoundry.org/cli/actor/v7action" 7 . "code.cloudfoundry.org/cli/actor/v7pushaction" 8 "code.cloudfoundry.org/cli/actor/v7pushaction/v7pushactionfakes" 9 "code.cloudfoundry.org/cli/api/cloudcontroller/ccv3/constant" 10 "code.cloudfoundry.org/cli/resources" 11 . "github.com/onsi/ginkgo" 12 . "github.com/onsi/gomega" 13 . "github.com/onsi/gomega/gstruct" 14 ) 15 16 var _ = Describe("CreateDockerPackageForApplication", func() { 17 var ( 18 actor *Actor 19 fakeV7Actor *v7pushactionfakes.FakeV7Actor 20 21 returnedPushPlan PushPlan 22 paramPlan PushPlan 23 fakeProgressBar *v7pushactionfakes.FakeProgressBar 24 25 warnings Warnings 26 executeErr error 27 28 events []Event 29 ) 30 31 BeforeEach(func() { 32 actor, fakeV7Actor, _ = getTestPushActor() 33 34 fakeProgressBar = new(v7pushactionfakes.FakeProgressBar) 35 36 paramPlan = PushPlan{ 37 Application: resources.Application{ 38 GUID: "some-app-guid", 39 }, 40 DockerImageCredentials: v7action.DockerImageCredentials{ 41 Path: "some-docker-image", 42 Password: "some-docker-password", 43 Username: "some-docker-username", 44 }, 45 } 46 }) 47 48 JustBeforeEach(func() { 49 events = EventFollower(func(eventStream chan<- *PushEvent) { 50 returnedPushPlan, warnings, executeErr = actor.CreateDockerPackageForApplication(paramPlan, eventStream, fakeProgressBar) 51 }) 52 }) 53 54 Describe("package upload", func() { 55 BeforeEach(func() { 56 fakeV7Actor.CreateApplicationInSpaceReturns( 57 resources.Application{ 58 GUID: "some-app-guid", 59 Name: paramPlan.Application.Name, 60 LifecycleType: constant.AppLifecycleTypeDocker, 61 }, 62 v7action.Warnings{"some-app-warnings"}, 63 nil) 64 }) 65 66 When("creating the package is successful", func() { 67 BeforeEach(func() { 68 fakeV7Actor.CreateDockerPackageByApplicationReturns( 69 v7action.Package{GUID: "some-package-guid"}, 70 v7action.Warnings{"some-package-warnings"}, 71 nil) 72 }) 73 74 It("sets the docker image", func() { 75 Expect(executeErr).ToNot(HaveOccurred()) 76 Expect(warnings).To(ConsistOf("some-package-warnings")) 77 Expect(events).To(ConsistOf(SetDockerImage, SetDockerImageComplete)) 78 Expect(fakeV7Actor.CreateDockerPackageByApplicationCallCount()).To(Equal(1)) 79 80 appGUID, dockerCredentials := fakeV7Actor.CreateDockerPackageByApplicationArgsForCall(0) 81 Expect(appGUID).To(Equal("some-app-guid")) 82 Expect(dockerCredentials).To(MatchFields(IgnoreExtras, 83 Fields{ 84 "Path": Equal("some-docker-image"), 85 "Username": Equal("some-docker-username"), 86 "Password": Equal("some-docker-password"), 87 })) 88 89 Expect(fakeV7Actor.PollPackageArgsForCall(0)).To(MatchFields(IgnoreExtras, 90 Fields{ 91 "GUID": Equal("some-package-guid"), 92 })) 93 }) 94 }) 95 96 When("creating the package errors", func() { 97 var someErr error 98 99 BeforeEach(func() { 100 someErr = errors.New("I AM A BANANA") 101 fakeV7Actor.CreateDockerPackageByApplicationReturns(v7action.Package{}, v7action.Warnings{"some-package-warnings"}, someErr) 102 }) 103 104 It("returns errors and warnings", func() { 105 Expect(executeErr).To(MatchError(someErr)) 106 Expect(events).To(ConsistOf(SetDockerImage)) 107 Expect(warnings).To(ConsistOf("some-package-warnings")) 108 }) 109 }) 110 }) 111 112 Describe("polling package", func() { 113 When("the the polling is successful", func() { 114 BeforeEach(func() { 115 fakeV7Actor.PollPackageReturns(v7action.Package{GUID: "some-package-guid"}, v7action.Warnings{"some-poll-package-warning"}, nil) 116 }) 117 118 It("returns warnings", func() { 119 Expect(events).To(ConsistOf(SetDockerImage, SetDockerImageComplete)) 120 Expect(warnings).To(ConsistOf("some-poll-package-warning")) 121 }) 122 123 It("sets the package guid on push plan", func() { 124 Expect(returnedPushPlan.PackageGUID).To(Equal("some-package-guid")) 125 }) 126 }) 127 128 When("the the polling returns an error", func() { 129 var someErr error 130 131 BeforeEach(func() { 132 someErr = errors.New("I AM A BANANA") 133 fakeV7Actor.PollPackageReturns(v7action.Package{}, v7action.Warnings{"some-poll-package-warning"}, someErr) 134 }) 135 136 It("returns errors and warnings", func() { 137 Expect(events).To(ConsistOf(SetDockerImage, SetDockerImageComplete)) 138 Expect(executeErr).To(MatchError(someErr)) 139 }) 140 }) 141 }) 142 })