github.com/LukasHeimann/cloudfoundrycli/v8@v8.4.4/command/v7/network_policies_command_test.go (about) 1 package v7_test 2 3 import ( 4 "errors" 5 6 "github.com/LukasHeimann/cloudfoundrycli/v8/actor/actionerror" 7 "github.com/LukasHeimann/cloudfoundrycli/v8/actor/cfnetworkingaction" 8 "github.com/LukasHeimann/cloudfoundrycli/v8/command/commandfakes" 9 . "github.com/LukasHeimann/cloudfoundrycli/v8/command/v7" 10 "github.com/LukasHeimann/cloudfoundrycli/v8/command/v7/v7fakes" 11 "github.com/LukasHeimann/cloudfoundrycli/v8/util/configv3" 12 "github.com/LukasHeimann/cloudfoundrycli/v8/util/ui" 13 . "github.com/onsi/ginkgo" 14 . "github.com/onsi/gomega" 15 . "github.com/onsi/gomega/gbytes" 16 ) 17 18 var _ = Describe("network-policies Command", func() { 19 var ( 20 cmd NetworkPoliciesCommand 21 testUI *ui.UI 22 fakeConfig *commandfakes.FakeConfig 23 fakeSharedActor *commandfakes.FakeSharedActor 24 fakeActor *v7fakes.FakeActor 25 fakeNetworkPoliciesActor *v7fakes.FakeNetworkPoliciesActor 26 binaryName string 27 executeErr error 28 srcApp string 29 ) 30 31 BeforeEach(func() { 32 testUI = ui.NewTestUI(nil, NewBuffer(), NewBuffer()) 33 fakeConfig = new(commandfakes.FakeConfig) 34 fakeSharedActor = new(commandfakes.FakeSharedActor) 35 fakeActor = new(v7fakes.FakeActor) 36 fakeNetworkPoliciesActor = new(v7fakes.FakeNetworkPoliciesActor) 37 38 srcApp = "" 39 40 cmd = NetworkPoliciesCommand{ 41 BaseCommand: BaseCommand{ 42 Config: fakeConfig, 43 SharedActor: fakeSharedActor, 44 UI: testUI, 45 Actor: fakeActor, 46 }, 47 NetworkingActor: fakeNetworkPoliciesActor, 48 SourceApp: srcApp, 49 } 50 51 binaryName = "faceman" 52 fakeConfig.BinaryNameReturns(binaryName) 53 }) 54 55 JustBeforeEach(func() { 56 executeErr = cmd.Execute(nil) 57 }) 58 59 When("checking target fails", func() { 60 BeforeEach(func() { 61 fakeSharedActor.CheckTargetReturns(actionerror.NotLoggedInError{BinaryName: binaryName}) 62 }) 63 64 It("returns an error", func() { 65 Expect(executeErr).To(MatchError(actionerror.NotLoggedInError{BinaryName: binaryName})) 66 67 Expect(fakeSharedActor.CheckTargetCallCount()).To(Equal(1)) 68 checkTargetedOrg, checkTargetedSpace := fakeSharedActor.CheckTargetArgsForCall(0) 69 Expect(checkTargetedOrg).To(BeTrue()) 70 Expect(checkTargetedSpace).To(BeTrue()) 71 }) 72 }) 73 74 When("the user is logged in", func() { 75 BeforeEach(func() { 76 fakeActor.GetCurrentUserReturns(configv3.User{Name: "some-user"}, nil) 77 fakeConfig.TargetedSpaceReturns(configv3.Space{Name: "some-space", GUID: "some-space-guid"}) 78 fakeConfig.TargetedOrganizationReturns(configv3.Organization{Name: "some-org"}) 79 }) 80 81 It("outputs flavor text", func() { 82 Expect(testUI.Out).To(Say(`Listing network policies in org some-org / space some-space as some-user\.\.\.`)) 83 }) 84 85 When("fetching the user fails", func() { 86 BeforeEach(func() { 87 fakeActor.GetCurrentUserReturns(configv3.User{}, errors.New("some-error")) 88 }) 89 90 It("returns an error", func() { 91 Expect(executeErr).To(MatchError("some-error")) 92 }) 93 }) 94 95 When("listing policies is successful", func() { 96 BeforeEach(func() { 97 fakeNetworkPoliciesActor.NetworkPoliciesBySpaceReturns([]cfnetworkingaction.Policy{ 98 { 99 SourceName: "app1", 100 DestinationName: "app2", 101 Protocol: "tcp", 102 StartPort: 8080, 103 EndPort: 8080, 104 DestinationSpaceName: "some-space", 105 DestinationOrgName: "some-org", 106 }, { 107 SourceName: "app2", 108 DestinationName: "app1", 109 Protocol: "udp", 110 StartPort: 1234, 111 EndPort: 2345, 112 DestinationSpaceName: "some-space", 113 DestinationOrgName: "some-org", 114 }, 115 }, cfnetworkingaction.Warnings{"some-warning-1", "some-warning-2"}, nil) 116 }) 117 118 It("lists the policies when no error occurs", func() { 119 Expect(executeErr).ToNot(HaveOccurred()) 120 Expect(fakeNetworkPoliciesActor.NetworkPoliciesBySpaceCallCount()).To(Equal(1)) 121 passedSpaceGuid := fakeNetworkPoliciesActor.NetworkPoliciesBySpaceArgsForCall(0) 122 Expect(passedSpaceGuid).To(Equal("some-space-guid")) 123 124 Expect(testUI.Out).To(Say(`Listing network policies in org some-org / space some-space as some-user\.\.\.`)) 125 Expect(testUI.Out).To(Say("\n\n")) 126 Expect(testUI.Out).To(Say(`source\s+destination\s+protocol\s+ports\s+destination space\s+destination org`)) 127 Expect(testUI.Out).To(Say(`app1\s+app2\s+tcp\s+8080\s+some-space\s+some-org`)) 128 Expect(testUI.Out).To(Say(`app2\s+app1\s+udp\s+1234-2345\s+some-space\s+some-org`)) 129 130 Expect(testUI.Err).To(Say("some-warning-1")) 131 Expect(testUI.Err).To(Say("some-warning-2")) 132 }) 133 134 When("a source app name is passed", func() { 135 BeforeEach(func() { 136 cmd.SourceApp = "some-app" 137 fakeNetworkPoliciesActor.NetworkPoliciesBySpaceAndAppNameReturns([]cfnetworkingaction.Policy{ 138 { 139 SourceName: "app1", 140 DestinationName: "app2", 141 Protocol: "tcp", 142 StartPort: 8080, 143 EndPort: 8080, 144 DestinationSpaceName: "some-space", 145 DestinationOrgName: "some-org", 146 }, { 147 SourceName: "app2", 148 DestinationName: "app1", 149 Protocol: "udp", 150 StartPort: 1234, 151 EndPort: 2345, 152 DestinationSpaceName: "some-space", 153 DestinationOrgName: "some-org", 154 }, 155 }, cfnetworkingaction.Warnings{"some-warning-1", "some-warning-2"}, nil) 156 }) 157 158 It("lists the policies when no error occurs", func() { 159 Expect(executeErr).ToNot(HaveOccurred()) 160 Expect(fakeNetworkPoliciesActor.NetworkPoliciesBySpaceAndAppNameCallCount()).To(Equal(1)) 161 passedSpaceGuid, passedSrcAppName := fakeNetworkPoliciesActor.NetworkPoliciesBySpaceAndAppNameArgsForCall(0) 162 Expect(passedSpaceGuid).To(Equal("some-space-guid")) 163 Expect(passedSrcAppName).To(Equal("some-app")) 164 165 Expect(testUI.Out).To(Say(`Listing network policies of app %s in org some-org / space some-space as some-user\.\.\.`, cmd.SourceApp)) 166 Expect(testUI.Out).To(Say("\n\n")) 167 Expect(testUI.Out).To(Say(`source\s+destination\s+protocol\s+ports\s+destination space\s+destination org`)) 168 Expect(testUI.Out).To(Say(`app1\s+app2\s+tcp\s+8080\s+some-space\s+some-org`)) 169 Expect(testUI.Out).To(Say(`app2\s+app1\s+udp\s+1234-2345\s+some-space\s+some-org`)) 170 171 Expect(testUI.Err).To(Say("some-warning-1")) 172 Expect(testUI.Err).To(Say("some-warning-2")) 173 }) 174 }) 175 }) 176 177 When("listing the policies is not successful", func() { 178 BeforeEach(func() { 179 fakeNetworkPoliciesActor.NetworkPoliciesBySpaceReturns([]cfnetworkingaction.Policy{}, cfnetworkingaction.Warnings{"some-warning-1", "some-warning-2"}, actionerror.ApplicationNotFoundError{Name: srcApp}) 180 }) 181 182 It("displays warnings and returns the error", func() { 183 Expect(executeErr).To(MatchError(actionerror.ApplicationNotFoundError{Name: srcApp})) 184 185 Expect(testUI.Out).To(Say(`Listing network policies in org some-org / space some-space as some-user\.\.\.`)) 186 Expect(testUI.Err).To(Say("some-warning-1")) 187 Expect(testUI.Err).To(Say("some-warning-2")) 188 }) 189 }) 190 }) 191 })