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