github.com/franc20/ayesa_sap@v7.0.0-beta.28.0.20200124003224-302d4d52fa6c+incompatible/command/v6/remove_network_policy_command_test.go (about) 1 package v6_test 2 3 import ( 4 "code.cloudfoundry.org/cli/actor/actionerror" 5 "code.cloudfoundry.org/cli/actor/cfnetworkingaction" 6 "code.cloudfoundry.org/cli/actor/v3action" 7 "code.cloudfoundry.org/cli/command/commandfakes" 8 "code.cloudfoundry.org/cli/command/flag" 9 "code.cloudfoundry.org/cli/command/translatableerror" 10 . "code.cloudfoundry.org/cli/command/v6" 11 "code.cloudfoundry.org/cli/command/v6/v6fakes" 12 "code.cloudfoundry.org/cli/util/configv3" 13 "code.cloudfoundry.org/cli/util/ui" 14 . "github.com/onsi/ginkgo" 15 . "github.com/onsi/gomega" 16 . "github.com/onsi/gomega/gbytes" 17 ) 18 19 var _ = Describe("remove-network-policy Command", func() { 20 var ( 21 cmd RemoveNetworkPolicyCommand 22 testUI *ui.UI 23 fakeConfig *commandfakes.FakeConfig 24 fakeSharedActor *commandfakes.FakeSharedActor 25 fakeNetworkPolicyActor *v6fakes.FakeRemoveNetworkPolicyActor 26 fakeMembershipActor *v6fakes.FakeMembershipActor 27 binaryName string 28 executeErr error 29 srcApp string 30 destApp string 31 protocol string 32 ) 33 34 BeforeEach(func() { 35 testUI = ui.NewTestUI(nil, NewBuffer(), NewBuffer()) 36 fakeConfig = new(commandfakes.FakeConfig) 37 fakeSharedActor = new(commandfakes.FakeSharedActor) 38 fakeNetworkPolicyActor = new(v6fakes.FakeRemoveNetworkPolicyActor) 39 fakeMembershipActor = new(v6fakes.FakeMembershipActor) 40 41 srcApp = "some-app" 42 destApp = "some-other-app" 43 protocol = "tcp" 44 45 cmd = RemoveNetworkPolicyCommand{ 46 UI: testUI, 47 Config: fakeConfig, 48 SharedActor: fakeSharedActor, 49 NetworkPolicyActor: fakeNetworkPolicyActor, 50 MembershipActor: fakeMembershipActor, 51 RequiredArgs: flag.RemoveNetworkPolicyArgs{SourceApp: srcApp}, 52 DestinationApp: destApp, 53 Protocol: flag.NetworkProtocol{Protocol: protocol}, 54 Port: flag.NetworkPort{StartPort: 8080, EndPort: 8081}, 55 } 56 57 binaryName = "faceman" 58 fakeConfig.BinaryNameReturns(binaryName) 59 }) 60 61 JustBeforeEach(func() { 62 executeErr = cmd.Execute(nil) 63 }) 64 65 When("checking target fails", func() { 66 BeforeEach(func() { 67 fakeSharedActor.CheckTargetReturns(actionerror.NotLoggedInError{BinaryName: binaryName}) 68 }) 69 70 It("returns an error", func() { 71 Expect(executeErr).To(MatchError(actionerror.NotLoggedInError{BinaryName: binaryName})) 72 73 Expect(fakeSharedActor.CheckTargetCallCount()).To(Equal(1)) 74 checkTargetedOrg, checkTargetedSpace := fakeSharedActor.CheckTargetArgsForCall(0) 75 Expect(checkTargetedOrg).To(BeTrue()) 76 Expect(checkTargetedSpace).To(BeTrue()) 77 }) 78 }) 79 80 When("the user is logged in", func() { 81 BeforeEach(func() { 82 fakeConfig.CurrentUserReturns(configv3.User{Name: "some-user"}, nil) 83 fakeConfig.TargetedSpaceReturns(configv3.Space{Name: "some-space", GUID: "some-space-guid"}) 84 fakeConfig.TargetedOrganizationReturns(configv3.Organization{Name: "some-org"}) 85 }) 86 87 It("outputs flavor text", func() { 88 Expect(testUI.Out).To(Say(`Removing network policy from app %s to app %s in org some-org / space some-space as some-user\.\.\.`, srcApp, destApp)) 89 }) 90 91 When("the policy deletion is successful", func() { 92 BeforeEach(func() { 93 fakeNetworkPolicyActor.RemoveNetworkPolicyReturns(cfnetworkingaction.Warnings{"some-warning-1", "some-warning-2"}, nil) 94 }) 95 96 It("displays OK", func() { 97 Expect(executeErr).ToNot(HaveOccurred()) 98 Expect(fakeMembershipActor.GetOrganizationByNameCallCount()).To(Equal(0)) 99 Expect(fakeMembershipActor.GetSpaceByNameAndOrganizationCallCount()).To(Equal(0)) 100 Expect(fakeNetworkPolicyActor.RemoveNetworkPolicyCallCount()).To(Equal(1)) 101 passedSrcSpaceGuid, passedSrcAppName, passedDestSpaceGuid, passedDestAppName, passedProtocol, passedStartPort, passedEndPort := fakeNetworkPolicyActor.RemoveNetworkPolicyArgsForCall(0) 102 Expect(passedSrcSpaceGuid).To(Equal("some-space-guid")) 103 Expect(passedSrcAppName).To(Equal("some-app")) 104 Expect(passedDestSpaceGuid).To(Equal("some-space-guid")) 105 Expect(passedDestAppName).To(Equal("some-other-app")) 106 Expect(passedProtocol).To(Equal("tcp")) 107 Expect(passedStartPort).To(Equal(8080)) 108 Expect(passedEndPort).To(Equal(8081)) 109 110 Expect(testUI.Out).To(Say(`Removing network policy from app %s to app %s in org some-org / space some-space as some-user\.\.\.`, srcApp, destApp)) 111 Expect(testUI.Err).To(Say("some-warning-1")) 112 Expect(testUI.Err).To(Say("some-warning-2")) 113 Expect(testUI.Out).To(Say("OK")) 114 }) 115 }) 116 117 When("when a valid org and space is provided", func() { 118 BeforeEach(func() { 119 cmd.DestinationOrg = "dest-org" 120 cmd.DestinationSpace = "dest-space" 121 fakeMembershipActor.GetOrganizationByNameReturns(v3action.Organization{GUID: "some-org-guid"}, v3action.Warnings{"some-warning-1"}, nil) 122 fakeMembershipActor.GetSpaceByNameAndOrganizationReturns(v3action.Space{GUID: "some-dest-guid"}, v3action.Warnings{"some-warning-2"}, nil) 123 }) 124 125 It("displays OK", func() { 126 Expect(executeErr).ToNot(HaveOccurred()) 127 Expect(fakeNetworkPolicyActor.RemoveNetworkPolicyCallCount()).To(Equal(1)) 128 passedSrcSpaceGuid, passedSrcAppName, passedDestSpaceGuid, passedDestAppName, passedProtocol, passedStartPort, passedEndPort := fakeNetworkPolicyActor.RemoveNetworkPolicyArgsForCall(0) 129 Expect(passedSrcSpaceGuid).To(Equal("some-space-guid")) 130 Expect(passedSrcAppName).To(Equal("some-app")) 131 Expect(passedDestSpaceGuid).To(Equal("some-dest-guid")) 132 Expect(passedDestAppName).To(Equal("some-other-app")) 133 Expect(passedProtocol).To(Equal("tcp")) 134 Expect(passedStartPort).To(Equal(8080)) 135 Expect(passedEndPort).To(Equal(8081)) 136 137 Expect(testUI.Out).To(Say(`Removing network policy from app %s in org some-org / space some-space to app %s in org dest-org / space dest-space as some-user\.\.\.`, srcApp, destApp)) 138 Expect(testUI.Err).To(Say("some-warning-1")) 139 Expect(testUI.Err).To(Say("some-warning-2")) 140 Expect(testUI.Out).To(Say("OK")) 141 }) 142 }) 143 144 When("a destination space but no destination org is specified", func() { 145 BeforeEach(func() { 146 cmd.DestinationSpace = "dest-space" 147 fakeMembershipActor.GetSpaceByNameAndOrganizationReturns(v3action.Space{GUID: "some-dest-guid"}, v3action.Warnings{}, nil) 148 }) 149 150 It("displays OK when no error occurs", func() { 151 Expect(executeErr).ToNot(HaveOccurred()) 152 Expect(fakeNetworkPolicyActor.RemoveNetworkPolicyCallCount()).To(Equal(1)) 153 Expect(fakeMembershipActor.GetOrganizationByNameCallCount()).To(Equal(0)) 154 passedSrcSpaceGuid, passedSrcAppName, passedDestSpaceGuid, passedDestAppName, passedProtocol, passedStartPort, passedEndPort := fakeNetworkPolicyActor.RemoveNetworkPolicyArgsForCall(0) 155 Expect(passedSrcSpaceGuid).To(Equal("some-space-guid")) 156 Expect(passedSrcAppName).To(Equal("some-app")) 157 Expect(passedDestSpaceGuid).To(Equal("some-dest-guid")) 158 Expect(passedDestAppName).To(Equal("some-other-app")) 159 Expect(passedProtocol).To(Equal("tcp")) 160 Expect(passedStartPort).To(Equal(8080)) 161 Expect(passedEndPort).To(Equal(8081)) 162 163 Expect(testUI.Out).To(Say(`Removing network policy from app %s in org some-org / space some-space to app %s in org some-org / space dest-space as some-user\.\.\.`, srcApp, destApp)) 164 Expect(testUI.Out).To(Say("OK")) 165 }) 166 }) 167 168 When("a destination org is provided without a destination space", func() { 169 BeforeEach(func() { 170 cmd.DestinationOrg = "coolorg" 171 }) 172 173 It("responds with an error", func() { 174 Expect(executeErr).To(MatchError(translatableerror.NetworkPolicyDestinationOrgWithoutSpaceError{})) 175 }) 176 }) 177 178 When("an invalid org is provided", func() { 179 BeforeEach(func() { 180 cmd.DestinationOrg = "coolorg" 181 cmd.DestinationSpace = "coolspace" 182 warnings := v3action.Warnings{"some-org-warning-1", "some-org-warning-2"} 183 fakeMembershipActor.GetOrganizationByNameReturns(v3action.Organization{}, warnings, actionerror.OrganizationNotFoundError{Name: "coolorg"}) 184 }) 185 186 It("responds with an error", func() { 187 passedOrgName := fakeMembershipActor.GetOrganizationByNameArgsForCall(0) 188 Expect(passedOrgName).To(Equal("coolorg")) 189 Expect(executeErr).To(MatchError(actionerror.OrganizationNotFoundError{Name: "coolorg"})) 190 }) 191 192 It("prints the warnings", func() { 193 Expect(testUI.Err).To(Say("some-org-warning-1")) 194 Expect(testUI.Err).To(Say("some-org-warning-2")) 195 }) 196 }) 197 198 When("an invalid space is provided", func() { 199 BeforeEach(func() { 200 cmd.DestinationOrg = "coolorg" 201 cmd.DestinationSpace = "coolspace" 202 warnings := v3action.Warnings{"some-space-warning-1", "some-space-warning-2"} 203 fakeMembershipActor.GetOrganizationByNameReturns(v3action.Organization{GUID: "some-org-guid"}, v3action.Warnings{}, nil) 204 fakeMembershipActor.GetSpaceByNameAndOrganizationReturns(v3action.Space{}, warnings, actionerror.SpaceNotFoundError{Name: "coolspace"}) 205 }) 206 207 It("responds with an error", func() { 208 passedSpaceName, passedOrgGUID := fakeMembershipActor.GetSpaceByNameAndOrganizationArgsForCall(0) 209 Expect(passedSpaceName).To(Equal("coolspace")) 210 Expect(passedOrgGUID).To(Equal("some-org-guid")) 211 Expect(executeErr).To(MatchError(actionerror.SpaceNotFoundError{Name: "coolspace"})) 212 }) 213 214 It("prints the warnings", func() { 215 Expect(testUI.Err).To(Say("some-space-warning-1")) 216 Expect(testUI.Err).To(Say("some-space-warning-2")) 217 }) 218 }) 219 220 When("the policy does not exist", func() { 221 BeforeEach(func() { 222 fakeNetworkPolicyActor.RemoveNetworkPolicyReturns(cfnetworkingaction.Warnings{"some-warning-1", "some-warning-2"}, actionerror.PolicyDoesNotExistError{}) 223 }) 224 225 It("displays OK", func() { 226 Expect(executeErr).ToNot(HaveOccurred()) 227 Expect(fakeNetworkPolicyActor.RemoveNetworkPolicyCallCount()).To(Equal(1)) 228 passedSrcSpaceGuid, passedSrcAppName, passedDestSpaceGuid, passedDestAppName, passedProtocol, passedStartPort, passedEndPort := fakeNetworkPolicyActor.RemoveNetworkPolicyArgsForCall(0) 229 Expect(passedSrcSpaceGuid).To(Equal("some-space-guid")) 230 Expect(passedSrcAppName).To(Equal("some-app")) 231 Expect(passedDestSpaceGuid).To(Equal("some-space-guid")) 232 Expect(passedDestAppName).To(Equal("some-other-app")) 233 Expect(passedProtocol).To(Equal("tcp")) 234 Expect(passedStartPort).To(Equal(8080)) 235 Expect(passedEndPort).To(Equal(8081)) 236 237 Expect(testUI.Out).To(Say(`Removing network policy from app %s to app %s in org some-org / space some-space as some-user\.\.\.`, srcApp, destApp)) 238 Expect(testUI.Err).To(Say("some-warning-1")) 239 Expect(testUI.Err).To(Say("some-warning-2")) 240 Expect(testUI.Out).To(Say("Policy does not exist.")) 241 Expect(testUI.Out).To(Say("OK")) 242 }) 243 }) 244 245 When("the policy deletion is not successful", func() { 246 BeforeEach(func() { 247 fakeNetworkPolicyActor.RemoveNetworkPolicyReturns(cfnetworkingaction.Warnings{"some-warning-1", "some-warning-2"}, actionerror.ApplicationNotFoundError{Name: srcApp}) 248 }) 249 250 It("does not display OK", func() { 251 Expect(executeErr).To(MatchError(actionerror.ApplicationNotFoundError{Name: srcApp})) 252 253 Expect(testUI.Out).To(Say(`Removing network policy from app %s to app %s in org some-org / space some-space as some-user\.\.\.`, srcApp, destApp)) 254 Expect(testUI.Err).To(Say("some-warning-1")) 255 Expect(testUI.Err).To(Say("some-warning-2")) 256 Expect(testUI.Out).ToNot(Say("OK")) 257 }) 258 }) 259 }) 260 })