github.com/LukasHeimann/cloudfoundrycli/v8@v8.4.4/command/v7/share_route_command_test.go (about) 1 package v7_test 2 3 import ( 4 "github.com/LukasHeimann/cloudfoundrycli/v8/actor/actionerror" 5 "github.com/LukasHeimann/cloudfoundrycli/v8/actor/v7action" 6 "github.com/LukasHeimann/cloudfoundrycli/v8/cf/errors" 7 "github.com/LukasHeimann/cloudfoundrycli/v8/command/commandfakes" 8 "github.com/LukasHeimann/cloudfoundrycli/v8/command/flag" 9 v7 "github.com/LukasHeimann/cloudfoundrycli/v8/command/v7" 10 "github.com/LukasHeimann/cloudfoundrycli/v8/command/v7/v7fakes" 11 "github.com/LukasHeimann/cloudfoundrycli/v8/resources" 12 "github.com/LukasHeimann/cloudfoundrycli/v8/util/configv3" 13 "github.com/LukasHeimann/cloudfoundrycli/v8/util/ui" 14 . "github.com/onsi/ginkgo" 15 . "github.com/onsi/gomega" 16 . "github.com/onsi/gomega/gbytes" 17 ) 18 19 var _ = Describe("share-route Command", func() { 20 var ( 21 cmd v7.ShareRouteCommand 22 testUI *ui.UI 23 fakeConfig *commandfakes.FakeConfig 24 fakeSharedActor *commandfakes.FakeSharedActor 25 fakeActor *v7fakes.FakeActor 26 binaryName string 27 executeErr error 28 domainName string 29 orgName string 30 spaceName string 31 hostname string 32 path string 33 ) 34 35 BeforeEach(func() { 36 testUI = ui.NewTestUI(nil, NewBuffer(), NewBuffer()) 37 fakeConfig = new(commandfakes.FakeConfig) 38 fakeSharedActor = new(commandfakes.FakeSharedActor) 39 fakeActor = new(v7fakes.FakeActor) 40 41 binaryName = "myBinaryBread" 42 fakeConfig.BinaryNameReturns(binaryName) 43 44 domainName = "some-domain.com" 45 orgName = "org-name-a" 46 spaceName = "space-name-a" 47 hostname = "myHostname" 48 path = "myPath" 49 50 cmd = v7.ShareRouteCommand{ 51 BaseCommand: v7.BaseCommand{ 52 UI: testUI, 53 Config: fakeConfig, 54 SharedActor: fakeSharedActor, 55 Actor: fakeActor, 56 }, 57 RequireArgs: flag.Domain{Domain: domainName}, 58 Hostname: hostname, 59 Path: flag.V7RoutePath{Path: path}, 60 DestinationOrg: orgName, 61 DestinationSpace: spaceName, 62 } 63 64 fakeConfig.TargetedSpaceReturns(configv3.Space{Name: "some-space", GUID: "some-space-guid"}) 65 fakeConfig.TargetedOrganizationReturns(configv3.Organization{Name: "some-org"}) 66 fakeConfig.CurrentUserReturns(configv3.User{Name: "some-user"}, nil) 67 }) 68 69 JustBeforeEach(func() { 70 executeErr = cmd.Execute(nil) 71 }) 72 73 It("checks that target", func() { 74 Expect(fakeSharedActor.CheckTargetCallCount()).To(Equal(1)) 75 checkTargetedOrg, checkTargetedSpace := fakeSharedActor.CheckTargetArgsForCall(0) 76 Expect(checkTargetedOrg).To(BeTrue()) 77 Expect(checkTargetedSpace).To(BeTrue()) 78 }) 79 80 When("checking target fails", func() { 81 BeforeEach(func() { 82 fakeSharedActor.CheckTargetReturns(actionerror.NoOrganizationTargetedError{BinaryName: binaryName}) 83 }) 84 It("returns an error", func() { 85 Expect(executeErr).To(MatchError(actionerror.NoOrganizationTargetedError{BinaryName: binaryName})) 86 87 Expect(fakeSharedActor.CheckTargetCallCount()).To(Equal(1)) 88 checkTargetedOrg, checkTargetedSpace := fakeSharedActor.CheckTargetArgsForCall(0) 89 Expect(checkTargetedOrg).To(BeTrue()) 90 Expect(checkTargetedSpace).To(BeTrue()) 91 }) 92 }) 93 94 When("the user is not logged in", func() { 95 var expectedErr error 96 97 BeforeEach(func() { 98 expectedErr = errors.New("some current user error") 99 fakeActor.GetCurrentUserReturns(configv3.User{}, expectedErr) 100 }) 101 102 It("return an error", func() { 103 Expect(executeErr).To(Equal(expectedErr)) 104 }) 105 }) 106 107 When("the user is logged in and targeted", func() { 108 When("getting the domain errors", func() { 109 BeforeEach(func() { 110 fakeActor.GetDomainByNameReturns(resources.Domain{}, v7action.Warnings{"get-domain-warnings"}, errors.New("get-domain-error")) 111 }) 112 113 It("returns the error and displays warnings", func() { 114 Expect(testUI.Err).To(Say("get-domain-warnings")) 115 Expect(executeErr).To(MatchError(errors.New("get-domain-error"))) 116 117 Expect(fakeActor.GetDomainByNameCallCount()).To(Equal(1)) 118 Expect(fakeActor.GetDomainByNameArgsForCall(0)).To(Equal(domainName)) 119 120 Expect(fakeActor.GetRouteByAttributesCallCount()).To(Equal(0)) 121 122 Expect(fakeActor.GetSpaceByNameAndOrganizationCallCount()).To(Equal(0)) 123 124 Expect(fakeActor.ShareRouteCallCount()).To(Equal(0)) 125 }) 126 }) 127 128 When("getting the domain succeeds", func() { 129 BeforeEach(func() { 130 fakeActor.GetDomainByNameReturns( 131 resources.Domain{Name: domainName, GUID: "domain-guid"}, 132 v7action.Warnings{"get-domain-warnings"}, 133 nil, 134 ) 135 }) 136 137 When("the requested route does not exist", func() { 138 BeforeEach(func() { 139 fakeActor.GetRouteByAttributesReturns( 140 resources.Route{}, 141 v7action.Warnings{"get-route-warnings"}, 142 actionerror.RouteNotFoundError{}, 143 ) 144 }) 145 146 It("displays error message", func() { 147 Expect(testUI.Err).To(Say("get-domain-warnings")) 148 Expect(testUI.Err).To(Say("get-route-warnings")) 149 Expect(executeErr).To(HaveOccurred()) 150 151 Expect(fakeActor.GetDomainByNameCallCount()).To(Equal(1)) 152 Expect(fakeActor.GetDomainByNameArgsForCall(0)).To(Equal(domainName)) 153 154 Expect(fakeActor.GetRouteByAttributesCallCount()).To(Equal(1)) 155 actualDomain, actualHostname, actualPath, actualPort := fakeActor.GetRouteByAttributesArgsForCall(0) 156 Expect(actualDomain.Name).To(Equal(domainName)) 157 Expect(actualDomain.GUID).To(Equal("domain-guid")) 158 Expect(actualHostname).To(Equal(hostname)) 159 Expect(actualPath).To(Equal(path)) 160 Expect(actualPort).To(Equal(0)) 161 }) 162 }) 163 164 When("the requested route exists", func() { 165 BeforeEach(func() { 166 fakeActor.GetRouteByAttributesReturns( 167 resources.Route{GUID: "route-guid"}, 168 v7action.Warnings{"get-route-warnings"}, 169 nil, 170 ) 171 }) 172 When("getting the target space errors", func() { 173 BeforeEach(func() { 174 fakeActor.GetOrganizationByNameReturns( 175 resources.Organization{GUID: "org-guid-a"}, 176 v7action.Warnings{"get-route-warnings"}, 177 nil, 178 ) 179 fakeActor.GetSpaceByNameAndOrganizationReturns( 180 resources.Space{}, 181 v7action.Warnings{"get-route-warnings"}, 182 actionerror.SpaceNotFoundError{}, 183 ) 184 }) 185 It("returns the error and warnings", func() { 186 Expect(executeErr).To(HaveOccurred()) 187 188 Expect(fakeActor.GetDomainByNameCallCount()).To(Equal(1)) 189 Expect(fakeActor.GetDomainByNameArgsForCall(0)).To(Equal(domainName)) 190 191 Expect(fakeActor.GetRouteByAttributesCallCount()).To(Equal(1)) 192 actualDomain, actualHostname, actualPath, actualPort := fakeActor.GetRouteByAttributesArgsForCall(0) 193 Expect(actualDomain.Name).To(Equal(domainName)) 194 Expect(actualDomain.GUID).To(Equal("domain-guid")) 195 Expect(actualHostname).To(Equal(hostname)) 196 Expect(actualPath).To(Equal(path)) 197 Expect(actualPort).To(Equal(0)) 198 199 Expect(fakeActor.GetOrganizationByNameCallCount()).To(Equal(1)) 200 Expect(fakeActor.GetOrganizationByNameArgsForCall(0)).To(Equal(orgName)) 201 Expect(fakeActor.GetSpaceByNameAndOrganizationCallCount()).To(Equal(1)) 202 spaceName, orgGuid := fakeActor.GetSpaceByNameAndOrganizationArgsForCall(0) 203 Expect(spaceName).To(Equal("space-name-a")) 204 Expect(orgGuid).To(Equal("org-guid-a")) 205 206 Expect(fakeActor.ShareRouteCallCount()).To(Equal(0)) 207 }) 208 }) 209 When("getting the target org errors", func() { 210 BeforeEach(func() { 211 fakeActor.GetOrganizationByNameReturns( 212 resources.Organization{}, 213 v7action.Warnings{"get-route-warnings"}, 214 actionerror.OrganizationNotFoundError{}, 215 ) 216 }) 217 It("returns the error and warnings", func() { 218 Expect(executeErr).To(HaveOccurred()) 219 220 Expect(fakeActor.GetDomainByNameCallCount()).To(Equal(1)) 221 Expect(fakeActor.GetDomainByNameArgsForCall(0)).To(Equal(domainName)) 222 223 Expect(fakeActor.GetRouteByAttributesCallCount()).To(Equal(1)) 224 actualDomain, actualHostname, actualPath, actualPort := fakeActor.GetRouteByAttributesArgsForCall(0) 225 Expect(actualDomain.Name).To(Equal(domainName)) 226 Expect(actualDomain.GUID).To(Equal("domain-guid")) 227 Expect(actualHostname).To(Equal(hostname)) 228 Expect(actualPath).To(Equal(path)) 229 Expect(actualPort).To(Equal(0)) 230 231 Expect(fakeActor.GetOrganizationByNameCallCount()).To(Equal(1)) 232 orgName := fakeActor.GetOrganizationByNameArgsForCall(0) 233 Expect(orgName).To(Equal("org-name-a")) 234 235 Expect(fakeActor.ShareRouteCallCount()).To(Equal(0)) 236 }) 237 }) 238 When("getting the target space succeeds", func() { 239 BeforeEach(func() { 240 fakeActor.GetOrganizationByNameReturns( 241 resources.Organization{GUID: "org-guid-a"}, 242 v7action.Warnings{"get-route-warnings"}, 243 nil, 244 ) 245 fakeActor.GetSpaceByNameAndOrganizationReturns( 246 resources.Space{GUID: "space-guid-b"}, 247 v7action.Warnings{"get-route-warnings"}, 248 nil, 249 ) 250 }) 251 It("exits 0 with helpful message that the route is now being shared", func() { 252 Expect(executeErr).ShouldNot(HaveOccurred()) 253 254 Expect(fakeActor.GetDomainByNameCallCount()).To(Equal(1)) 255 Expect(fakeActor.GetDomainByNameArgsForCall(0)).To(Equal(domainName)) 256 257 Expect(fakeActor.GetRouteByAttributesCallCount()).To(Equal(1)) 258 actualDomain, actualHostname, actualPath, actualPort := fakeActor.GetRouteByAttributesArgsForCall(0) 259 Expect(actualDomain.Name).To(Equal(domainName)) 260 Expect(actualDomain.GUID).To(Equal("domain-guid")) 261 Expect(actualHostname).To(Equal(hostname)) 262 Expect(actualPath).To(Equal(path)) 263 Expect(actualPort).To(Equal(0)) 264 265 Expect(fakeActor.GetOrganizationByNameCallCount()).To(Equal(1)) 266 orgName := fakeActor.GetOrganizationByNameArgsForCall(0) 267 Expect(orgName).To(Equal("org-name-a")) 268 269 Expect(fakeActor.GetSpaceByNameAndOrganizationCallCount()).To(Equal(1)) 270 spaceName, orgGuid := fakeActor.GetSpaceByNameAndOrganizationArgsForCall(0) 271 Expect(spaceName).To(Equal("space-name-a")) 272 Expect(orgGuid).To(Equal("org-guid-a")) 273 Expect(fakeActor.ShareRouteCallCount()).To(Equal(1)) 274 }) 275 }) 276 }) 277 }) 278 }) 279 })