github.com/franc20/ayesa_sap@v7.0.0-beta.28.0.20200124003224-302d4d52fa6c+incompatible/actor/v2action/application_instance_test.go (about) 1 package v2action_test 2 3 import ( 4 "errors" 5 6 "code.cloudfoundry.org/cli/actor/actionerror" 7 . "code.cloudfoundry.org/cli/actor/v2action" 8 "code.cloudfoundry.org/cli/actor/v2action/v2actionfakes" 9 "code.cloudfoundry.org/cli/api/cloudcontroller/ccerror" 10 "code.cloudfoundry.org/cli/api/cloudcontroller/ccv2" 11 "code.cloudfoundry.org/cli/api/cloudcontroller/ccv2/constant" 12 . "github.com/onsi/ginkgo" 13 . "github.com/onsi/gomega" 14 ) 15 16 var _ = Describe("Application Instance Actions", func() { 17 var ( 18 actor *Actor 19 fakeCloudControllerClient *v2actionfakes.FakeCloudControllerClient 20 ) 21 22 BeforeEach(func() { 23 fakeCloudControllerClient = new(v2actionfakes.FakeCloudControllerClient) 24 actor = NewActor(fakeCloudControllerClient, nil, nil) 25 }) 26 27 Describe("ApplicationInstance", func() { 28 var instance ApplicationInstance 29 30 BeforeEach(func() { 31 instance = ApplicationInstance{} 32 }) 33 34 Describe("Crashed", func() { 35 Context("instance is crashed", func() { 36 It("returns true", func() { 37 instance.State = constant.ApplicationInstanceCrashed 38 Expect(instance.Crashed()).To(BeTrue()) 39 }) 40 }) 41 42 Context("instance is *not* crashed", func() { 43 It("returns false", func() { 44 instance.State = constant.ApplicationInstanceRunning 45 Expect(instance.Crashed()).To(BeFalse()) 46 }) 47 }) 48 }) 49 50 Describe("Flapping", func() { 51 Context("instance is flapping", func() { 52 It("returns true", func() { 53 instance.State = constant.ApplicationInstanceFlapping 54 Expect(instance.Flapping()).To(BeTrue()) 55 }) 56 }) 57 58 Context("instance is *not* flapping", func() { 59 It("returns false", func() { 60 instance.State = constant.ApplicationInstanceCrashed 61 Expect(instance.Flapping()).To(BeFalse()) 62 }) 63 }) 64 }) 65 66 Describe("Running", func() { 67 Context("instance is running", func() { 68 It("returns true", func() { 69 instance.State = constant.ApplicationInstanceRunning 70 Expect(instance.Running()).To(BeTrue()) 71 }) 72 }) 73 74 Context("instance is *not* running", func() { 75 It("returns false", func() { 76 instance.State = constant.ApplicationInstanceCrashed 77 Expect(instance.Running()).To(BeFalse()) 78 }) 79 }) 80 }) 81 }) 82 83 Describe("GetApplicationInstancesByApplication", func() { 84 When("the application exists", func() { 85 BeforeEach(func() { 86 fakeCloudControllerClient.GetApplicationApplicationInstancesReturns( 87 map[int]ccv2.ApplicationInstance{ 88 0: {ID: 0, Details: "hello", Since: 1485985587.12345, State: constant.ApplicationInstanceRunning}, 89 1: {ID: 1, Details: "hi", Since: 1485985587.567}, 90 }, 91 ccv2.Warnings{"instance-warning-1", "instance-warning-2"}, 92 nil) 93 }) 94 95 It("returns the application instances and all warnings", func() { 96 instances, warnings, err := actor.GetApplicationInstancesByApplication("some-app-guid") 97 Expect(err).ToNot(HaveOccurred()) 98 Expect(instances).To(ConsistOf( 99 ApplicationInstance{ 100 ID: 0, 101 Details: "hello", 102 Since: 1485985587.12345, 103 State: constant.ApplicationInstanceRunning, 104 }, 105 ApplicationInstance{ 106 ID: 1, 107 Details: "hi", 108 Since: 1485985587.567, 109 }, 110 )) 111 Expect(warnings).To(ConsistOf("instance-warning-1", "instance-warning-2")) 112 113 Expect(fakeCloudControllerClient.GetApplicationApplicationInstancesCallCount()).To(Equal(1)) 114 Expect(fakeCloudControllerClient.GetApplicationApplicationInstancesArgsForCall(0)).To(Equal("some-app-guid")) 115 }) 116 }) 117 118 When("an error is encountered", func() { 119 var expectedErr error 120 121 BeforeEach(func() { 122 expectedErr = errors.New("banana") 123 fakeCloudControllerClient.GetApplicationApplicationInstancesReturns( 124 nil, 125 ccv2.Warnings{"instances-warning"}, 126 expectedErr) 127 }) 128 129 It("returns the error and all warnings", func() { 130 _, warnings, err := actor.GetApplicationInstancesByApplication("some-app-guid") 131 Expect(err).To(MatchError(expectedErr)) 132 Expect(warnings).To(ConsistOf("instances-warning")) 133 }) 134 135 When("the application does not exist", func() { 136 BeforeEach(func() { 137 fakeCloudControllerClient.GetApplicationApplicationInstancesReturns( 138 nil, 139 nil, 140 ccerror.ResourceNotFoundError{}) 141 }) 142 143 It("returns an ApplicationInstancesNotFoundError", func() { 144 _, _, err := actor.GetApplicationInstancesByApplication("some-app-guid") 145 Expect(err).To(MatchError(actionerror.ApplicationInstancesNotFoundError{ApplicationGUID: "some-app-guid"})) 146 }) 147 }) 148 149 When("the app has not been staged yet", func() { 150 When("getting instances returns a CF-NotStaged error", func() { 151 BeforeEach(func() { 152 fakeCloudControllerClient.GetApplicationApplicationInstancesReturns( 153 nil, 154 nil, 155 ccerror.NotStagedError{}) 156 }) 157 158 It("returns an ApplicationInstancesNotFoundError", func() { 159 _, _, err := actor.GetApplicationInstancesByApplication("some-app-guid") 160 Expect(err).To(MatchError(actionerror.ApplicationInstancesNotFoundError{ApplicationGUID: "some-app-guid"})) 161 }) 162 }) 163 }) 164 165 When("getting instances returns a CF-InstancesError", func() { 166 BeforeEach(func() { 167 fakeCloudControllerClient.GetApplicationApplicationInstancesReturns( 168 nil, 169 nil, 170 ccerror.InstancesError{}) 171 }) 172 173 It("returns an ApplicationInstancesNotFoundError", func() { 174 _, _, err := actor.GetApplicationInstancesByApplication("some-app-guid") 175 Expect(err).To(MatchError(actionerror.ApplicationInstancesNotFoundError{ApplicationGUID: "some-app-guid"})) 176 }) 177 }) 178 }) 179 }) 180 })