github.com/liamawhite/cli-with-i18n@v6.32.1-0.20171122084555-dede0a5c3448+incompatible/actor/v2action/job_test.go (about) 1 package v2action_test 2 3 import ( 4 "errors" 5 "io" 6 "io/ioutil" 7 "os" 8 "path/filepath" 9 "strings" 10 11 . "github.com/liamawhite/cli-with-i18n/actor/v2action" 12 "github.com/liamawhite/cli-with-i18n/actor/v2action/v2actionfakes" 13 "github.com/liamawhite/cli-with-i18n/api/cloudcontroller/ccv2" 14 . "github.com/onsi/ginkgo" 15 . "github.com/onsi/gomega" 16 ) 17 18 var _ = Describe("Job Actions", func() { 19 var ( 20 actor *Actor 21 fakeCloudControllerClient *v2actionfakes.FakeCloudControllerClient 22 ) 23 24 BeforeEach(func() { 25 fakeCloudControllerClient = new(v2actionfakes.FakeCloudControllerClient) 26 actor = NewActor(fakeCloudControllerClient, nil, nil) 27 }) 28 29 Describe("UploadApplicationPackage", func() { 30 var ( 31 srcDir string 32 33 appGUID string 34 existingResources []Resource 35 reader io.Reader 36 readerLength int64 37 38 job Job 39 warnings Warnings 40 executeErr error 41 ) 42 43 BeforeEach(func() { 44 var err error 45 srcDir, err = ioutil.TempDir("", "upload-src-dir") 46 Expect(err).ToNot(HaveOccurred()) 47 48 subDir := filepath.Join(srcDir, "level1", "level2") 49 err = os.MkdirAll(subDir, 0777) 50 Expect(err).ToNot(HaveOccurred()) 51 52 err = ioutil.WriteFile(filepath.Join(subDir, "tmpFile1"), []byte("why hello"), 0600) 53 Expect(err).ToNot(HaveOccurred()) 54 55 err = ioutil.WriteFile(filepath.Join(srcDir, "tmpFile2"), []byte("Hello, Binky"), 0600) 56 Expect(err).ToNot(HaveOccurred()) 57 58 err = ioutil.WriteFile(filepath.Join(srcDir, "tmpFile3"), []byte("Bananarama"), 0600) 59 Expect(err).ToNot(HaveOccurred()) 60 61 appGUID = "some-app-guid" 62 existingResources = []Resource{{Filename: "some-resource"}, {Filename: "another-resource"}} 63 someString := "who reads these days" 64 reader = strings.NewReader(someString) 65 readerLength = int64(len([]byte(someString))) 66 }) 67 68 AfterEach(func() { 69 Expect(os.RemoveAll(srcDir)).NotTo(HaveOccurred()) 70 }) 71 72 JustBeforeEach(func() { 73 job, warnings, executeErr = actor.UploadApplicationPackage(appGUID, existingResources, reader, readerLength) 74 }) 75 76 Context("when the upload is successful", func() { 77 BeforeEach(func() { 78 fakeCloudControllerClient.UploadApplicationPackageReturns(ccv2.Job{GUID: "some-job-guid"}, ccv2.Warnings{"upload-warning-1", "upload-warning-2"}, nil) 79 }) 80 81 It("returns all warnings", func() { 82 Expect(executeErr).ToNot(HaveOccurred()) 83 Expect(warnings).To(ConsistOf("upload-warning-1", "upload-warning-2")) 84 Expect(job).To(Equal(Job{GUID: "some-job-guid"})) 85 86 Expect(fakeCloudControllerClient.UploadApplicationPackageCallCount()).To(Equal(1)) 87 passedAppGUID, passedExistingResources, passedReader, passedReaderLength := fakeCloudControllerClient.UploadApplicationPackageArgsForCall(0) 88 Expect(passedAppGUID).To(Equal(appGUID)) 89 Expect(passedExistingResources).To(ConsistOf(ccv2.Resource{Filename: "some-resource"}, ccv2.Resource{Filename: "another-resource"})) 90 Expect(passedReader).To(Equal(reader)) 91 Expect(passedReaderLength).To(Equal(readerLength)) 92 }) 93 }) 94 95 Context("when the upload returns an error", func() { 96 var err error 97 98 BeforeEach(func() { 99 err = errors.New("some-error") 100 fakeCloudControllerClient.UploadApplicationPackageReturns(ccv2.Job{}, ccv2.Warnings{"upload-warning-1", "upload-warning-2"}, err) 101 }) 102 103 It("returns the error", func() { 104 Expect(executeErr).To(MatchError(err)) 105 Expect(warnings).To(ConsistOf("upload-warning-1", "upload-warning-2")) 106 }) 107 }) 108 }) 109 110 Describe("PollJob", func() { 111 var ( 112 job Job 113 warnings Warnings 114 executeErr error 115 ) 116 117 JustBeforeEach(func() { 118 warnings, executeErr = actor.PollJob(job) 119 }) 120 121 Context("when the job polling is successful", func() { 122 BeforeEach(func() { 123 fakeCloudControllerClient.PollJobReturns(ccv2.Warnings{"polling-warning"}, nil) 124 }) 125 126 It("returns the warnings", func() { 127 Expect(executeErr).ToNot(HaveOccurred()) 128 Expect(warnings).To(ConsistOf("polling-warning")) 129 130 Expect(fakeCloudControllerClient.PollJobCallCount()).To(Equal(1)) 131 Expect(fakeCloudControllerClient.PollJobArgsForCall(0)).To(Equal(ccv2.Job(job))) 132 }) 133 }) 134 135 Context("when polling errors", func() { 136 var err error 137 138 BeforeEach(func() { 139 err = errors.New("some-error") 140 fakeCloudControllerClient.PollJobReturns(ccv2.Warnings{"polling-warning"}, err) 141 }) 142 143 It("returns the error", func() { 144 Expect(executeErr).To(MatchError(err)) 145 Expect(warnings).To(ConsistOf("polling-warning")) 146 }) 147 }) 148 }) 149 })