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