github.com/loafoe/cli@v7.1.0+incompatible/command/v7/security_groups_command_test.go (about) 1 package v7_test 2 3 import ( 4 "code.cloudfoundry.org/cli/actor/actionerror" 5 "code.cloudfoundry.org/cli/actor/v7action" 6 "code.cloudfoundry.org/cli/cf/errors" 7 "code.cloudfoundry.org/cli/command/commandfakes" 8 . "code.cloudfoundry.org/cli/command/v7" 9 "code.cloudfoundry.org/cli/command/v7/v7fakes" 10 "code.cloudfoundry.org/cli/resources" 11 "code.cloudfoundry.org/cli/util/configv3" 12 "code.cloudfoundry.org/cli/util/ui" 13 . "github.com/onsi/ginkgo" 14 . "github.com/onsi/gomega" 15 . "github.com/onsi/gomega/gbytes" 16 ) 17 18 var _ = Describe("Security Groups Command", func() { 19 var ( 20 cmd SecurityGroupsCommand 21 testUI *ui.UI 22 fakeConfig *commandfakes.FakeConfig 23 fakeSharedActor *commandfakes.FakeSharedActor 24 fakeActor *v7fakes.FakeActor 25 executeErr error 26 ) 27 28 BeforeEach(func() { 29 testUI = ui.NewTestUI(nil, NewBuffer(), NewBuffer()) 30 fakeConfig = new(commandfakes.FakeConfig) 31 fakeSharedActor = new(commandfakes.FakeSharedActor) 32 fakeActor = new(v7fakes.FakeActor) 33 fakeConfig.TargetedOrganizationNameReturns("some-org") 34 35 cmd = SecurityGroupsCommand{ 36 BaseCommand: BaseCommand{ 37 UI: testUI, 38 Config: fakeConfig, 39 SharedActor: fakeSharedActor, 40 Actor: fakeActor, 41 }, 42 } 43 }) 44 45 JustBeforeEach(func() { 46 executeErr = cmd.Execute(nil) 47 }) 48 49 When("checking the target fails", func() { 50 BeforeEach(func() { 51 fakeSharedActor.CheckTargetReturns( 52 actionerror.NotLoggedInError{BinaryName: "binaryName"}) 53 }) 54 55 It("returns an error", func() { 56 Expect(executeErr).To(MatchError(actionerror.NotLoggedInError{BinaryName: "binaryName"})) 57 58 Expect(fakeSharedActor.CheckTargetCallCount()).To(Equal(1)) 59 targetedOrganizationRequired, targetedSpaceRequired := fakeSharedActor.CheckTargetArgsForCall(0) 60 Expect(targetedOrganizationRequired).To(Equal(false)) 61 Expect(targetedSpaceRequired).To(Equal(false)) 62 }) 63 }) 64 65 When("getting the security groups fails", func() { 66 BeforeEach(func() { 67 fakeConfig.CurrentUserReturns( 68 configv3.User{ 69 Name: "some-user", 70 }, 71 nil) 72 73 fakeActor.GetSecurityGroupsReturns( 74 []v7action.SecurityGroupSummary{}, 75 v7action.Warnings{"warning-1", "warning-2"}, 76 errors.New("Aah I'm an error")) 77 }) 78 79 It("returns a translatable error and outputs all warnings", func() { 80 Expect(testUI.Out).To(Say("Getting security groups as some-user...")) 81 82 Expect(executeErr).To(MatchError(errors.New("Aah I'm an error"))) 83 Expect(fakeActor.GetSecurityGroupsCallCount()).To(Equal(1)) 84 Expect(testUI.Err).To(Say("warning-1")) 85 Expect(testUI.Err).To(Say("warning-2")) 86 }) 87 }) 88 89 When("getting the security groups succeeds", func() { 90 BeforeEach(func() { 91 fakeConfig.CurrentUserReturns(configv3.User{Name: "some-user"}, nil) 92 fakeConfig.TargetedOrganizationReturns(configv3.Organization{Name: "some-org", GUID: "some-org-guid"}) 93 }) 94 95 When("there are no security groups", func() { 96 BeforeEach(func() { 97 fakeActor.GetSecurityGroupsReturns( 98 []v7action.SecurityGroupSummary{}, 99 v7action.Warnings{"warning-1", "warning-2"}, 100 nil, 101 ) 102 }) 103 104 It("displays an empty state message", func() { 105 Expect(executeErr).ToNot(HaveOccurred()) 106 Expect(fakeActor.GetSecurityGroupsCallCount()).To(Equal(1)) 107 108 Expect(testUI.Out).To(Say("Getting security groups as some-user...")) 109 Expect(testUI.Err).To(Say("warning-1")) 110 Expect(testUI.Err).To(Say("warning-2")) 111 112 Expect(testUI.Out).To(Say("No security groups found.")) 113 }) 114 }) 115 116 When("there are security groups", func() { 117 BeforeEach(func() { 118 fakeActor.GetSecurityGroupsReturns( 119 []v7action.SecurityGroupSummary{{ 120 Name: "security-group-1", 121 Rules: []resources.Rule{}, 122 SecurityGroupSpaces: []v7action.SecurityGroupSpace{{ 123 OrgName: "org-1", 124 SpaceName: "space-1", 125 Lifecycle: "running", 126 }, { 127 OrgName: "<all>", 128 SpaceName: "<all>", 129 Lifecycle: "staging", 130 }, { 131 OrgName: "org-1", 132 SpaceName: "space-1", 133 Lifecycle: "staging", 134 }}, 135 }, { 136 Name: "security-group-2", 137 Rules: []resources.Rule{}, 138 SecurityGroupSpaces: []v7action.SecurityGroupSpace{{ 139 OrgName: "<all>", 140 SpaceName: "<all>", 141 Lifecycle: "running", 142 }}, 143 }, { 144 Name: "security-group-3", 145 Rules: []resources.Rule{}, 146 SecurityGroupSpaces: []v7action.SecurityGroupSpace{}, 147 }}, 148 v7action.Warnings{"warning-1", "warning-2"}, 149 nil, 150 ) 151 }) 152 153 It("displays the security groups", func() { 154 Expect(executeErr).ToNot(HaveOccurred()) 155 Expect(fakeActor.GetSecurityGroupsCallCount()).To(Equal(1)) 156 157 Expect(testUI.Out).To(Say("Getting security groups as some-user...")) 158 Expect(testUI.Err).To(Say("warning-1")) 159 Expect(testUI.Err).To(Say("warning-2")) 160 161 Expect(testUI.Out).To(Say(`name\s+organization\s+space\s+lifecycle`)) 162 Expect(testUI.Out).To(Say(`security-group-1\s+org-1\s+space-1\s+running`)) 163 Expect(testUI.Out).To(Say(`security-group-1\s+<all>\s+<all>\s+staging`)) 164 Expect(testUI.Out).To(Say(`security-group-1\s+org-1\s+space-1\s+staging`)) 165 Expect(testUI.Out).To(Say(`security-group-2\s+<all>\s+<all>\s+running`)) 166 Expect(testUI.Out).To(Say(`security-group-3\s+`)) 167 }) 168 }) 169 }) 170 })