github.com/mook-as/cf-cli@v7.0.0-beta.28.0.20200120190804-b91c115fae48+incompatible/actor/v3action/process_instance_test.go (about) 1 package v3action_test 2 3 import ( 4 "errors" 5 "time" 6 7 "code.cloudfoundry.org/cli/actor/actionerror" 8 . "code.cloudfoundry.org/cli/actor/v3action" 9 "code.cloudfoundry.org/cli/actor/v3action/v3actionfakes" 10 "code.cloudfoundry.org/cli/api/cloudcontroller/ccerror" 11 "code.cloudfoundry.org/cli/api/cloudcontroller/ccv3" 12 . "github.com/onsi/ginkgo" 13 . "github.com/onsi/gomega" 14 ) 15 16 var _ = Describe("instance actions", func() { 17 var ( 18 actor *Actor 19 fakeCloudControllerClient *v3actionfakes.FakeCloudControllerClient 20 ) 21 22 BeforeEach(func() { 23 fakeCloudControllerClient = new(v3actionfakes.FakeCloudControllerClient) 24 actor = NewActor(fakeCloudControllerClient, nil, nil, nil) 25 }) 26 27 Describe("Instance", func() { 28 Describe("StartTime", func() { 29 It("returns the time that the instance started", func() { 30 uptime, err := time.ParseDuration("86400s") 31 Expect(err).ToNot(HaveOccurred()) 32 instance := ProcessInstance{Uptime: uptime} 33 Expect(instance.StartTime()).To(BeTemporally("~", time.Now().Add(-24*time.Hour), 10*time.Second)) 34 }) 35 }) 36 }) 37 38 Describe("DeleteInstanceByApplicationNameSpaceProcessTypeAndIndex", func() { 39 var ( 40 executeErr error 41 warnings Warnings 42 ) 43 44 JustBeforeEach(func() { 45 warnings, executeErr = actor.DeleteInstanceByApplicationNameSpaceProcessTypeAndIndex("some-app-name", "some-space-guid", "some-process-type", 666) 46 }) 47 48 When("getting the application returns an error", func() { 49 BeforeEach(func() { 50 fakeCloudControllerClient.GetApplicationsReturns([]ccv3.Application{}, ccv3.Warnings{"some-get-app-warning"}, errors.New("some-get-app-error")) 51 }) 52 53 It("returns all warnings and the error", func() { 54 Expect(executeErr).To(MatchError("some-get-app-error")) 55 Expect(warnings).To(ConsistOf("some-get-app-warning")) 56 }) 57 }) 58 59 When("getting the application succeeds", func() { 60 BeforeEach(func() { 61 fakeCloudControllerClient.GetApplicationsReturns([]ccv3.Application{{GUID: "some-app-guid"}}, ccv3.Warnings{"some-get-app-warning"}, nil) 62 }) 63 64 When("deleting the instance returns ProcessNotFoundError", func() { 65 BeforeEach(func() { 66 fakeCloudControllerClient.DeleteApplicationProcessInstanceReturns(ccv3.Warnings{"some-delete-warning"}, ccerror.ProcessNotFoundError{}) 67 }) 68 69 It("returns all warnings and the ProcessNotFoundError error", func() { 70 Expect(executeErr).To(Equal(actionerror.ProcessNotFoundError{ProcessType: "some-process-type"})) 71 Expect(warnings).To(ConsistOf("some-get-app-warning", "some-delete-warning")) 72 }) 73 }) 74 75 When("deleting the instance returns InstanceNotFoundError", func() { 76 BeforeEach(func() { 77 fakeCloudControllerClient.DeleteApplicationProcessInstanceReturns(ccv3.Warnings{"some-delete-warning"}, ccerror.InstanceNotFoundError{}) 78 }) 79 80 It("returns all warnings and the ProcessInstanceNotFoundError error", func() { 81 Expect(executeErr).To(Equal(actionerror.ProcessInstanceNotFoundError{ProcessType: "some-process-type", InstanceIndex: 666})) 82 Expect(warnings).To(ConsistOf("some-get-app-warning", "some-delete-warning")) 83 }) 84 }) 85 86 When("deleting the instance returns other error", func() { 87 BeforeEach(func() { 88 fakeCloudControllerClient.DeleteApplicationProcessInstanceReturns(ccv3.Warnings{"some-delete-warning"}, errors.New("some-delete-error")) 89 }) 90 91 It("returns all warnings and the error", func() { 92 Expect(executeErr).To(MatchError("some-delete-error")) 93 Expect(warnings).To(ConsistOf("some-get-app-warning", "some-delete-warning")) 94 }) 95 }) 96 97 When("deleting the instance succeeds", func() { 98 BeforeEach(func() { 99 fakeCloudControllerClient.DeleteApplicationProcessInstanceReturns(ccv3.Warnings{"some-delete-warning"}, nil) 100 }) 101 102 It("returns all warnings and no error", func() { 103 Expect(executeErr).ToNot(HaveOccurred()) 104 Expect(warnings).To(ConsistOf("some-get-app-warning", "some-delete-warning")) 105 106 Expect(fakeCloudControllerClient.GetApplicationsCallCount()).To(Equal(1)) 107 Expect(fakeCloudControllerClient.GetApplicationsArgsForCall(0)).To(ConsistOf( 108 ccv3.Query{Key: ccv3.NameFilter, Values: []string{"some-app-name"}}, 109 ccv3.Query{Key: ccv3.SpaceGUIDFilter, Values: []string{"some-space-guid"}}, 110 )) 111 112 Expect(fakeCloudControllerClient.DeleteApplicationProcessInstanceCallCount()).To(Equal(1)) 113 appGUID, processType, instanceIndex := fakeCloudControllerClient.DeleteApplicationProcessInstanceArgsForCall(0) 114 Expect(appGUID).To(Equal("some-app-guid")) 115 Expect(processType).To(Equal("some-process-type")) 116 Expect(instanceIndex).To(Equal(666)) 117 }) 118 }) 119 }) 120 }) 121 })