github.com/franc20/ayesa_sap@v7.0.0-beta.28.0.20200124003224-302d4d52fa6c+incompatible/command/v7/domains_command_test.go (about) 1 package v7_test 2 3 import ( 4 "errors" 5 6 "code.cloudfoundry.org/cli/types" 7 8 "code.cloudfoundry.org/cli/actor/actionerror" 9 "code.cloudfoundry.org/cli/actor/v7action" 10 "code.cloudfoundry.org/cli/command/commandfakes" 11 . "code.cloudfoundry.org/cli/command/v7" 12 "code.cloudfoundry.org/cli/command/v7/v7fakes" 13 "code.cloudfoundry.org/cli/util/configv3" 14 "code.cloudfoundry.org/cli/util/ui" 15 16 . "github.com/onsi/ginkgo" 17 . "github.com/onsi/gomega" 18 . "github.com/onsi/gomega/gbytes" 19 ) 20 21 var _ = Describe("domains Command", func() { 22 var ( 23 cmd DomainsCommand 24 testUI *ui.UI 25 fakeConfig *commandfakes.FakeConfig 26 fakeSharedActor *commandfakes.FakeSharedActor 27 fakeActor *v7fakes.FakeDomainsActor 28 executeErr error 29 args []string 30 binaryName string 31 ) 32 33 const tableHeaders = `name\s+availability\s+internal` 34 35 JustBeforeEach(func() { 36 executeErr = cmd.Execute(args) 37 }) 38 39 BeforeEach(func() { 40 testUI = ui.NewTestUI(nil, NewBuffer(), NewBuffer()) 41 fakeConfig = new(commandfakes.FakeConfig) 42 fakeSharedActor = new(commandfakes.FakeSharedActor) 43 fakeActor = new(v7fakes.FakeDomainsActor) 44 args = nil 45 46 cmd = DomainsCommand{ 47 UI: testUI, 48 Config: fakeConfig, 49 SharedActor: fakeSharedActor, 50 Actor: fakeActor, 51 } 52 53 binaryName = "faceman" 54 fakeConfig.BinaryNameReturns(binaryName) 55 }) 56 57 When("the environment is not setup correctly", func() { 58 When("checking target fails", func() { 59 BeforeEach(func() { 60 fakeSharedActor.CheckTargetReturns(actionerror.NotLoggedInError{BinaryName: binaryName}) 61 }) 62 63 It("returns an error", func() { 64 Expect(executeErr).To(MatchError(actionerror.NotLoggedInError{BinaryName: binaryName})) 65 66 Expect(fakeSharedActor.CheckTargetCallCount()).To(Equal(1)) 67 checkTargetedOrg, checkTargetedSpace := fakeSharedActor.CheckTargetArgsForCall(0) 68 Expect(checkTargetedOrg).To(BeTrue()) 69 Expect(checkTargetedSpace).To(BeFalse()) 70 }) 71 }) 72 73 When("when there is no org targeted", func() { 74 BeforeEach(func() { 75 fakeSharedActor.CheckTargetReturns(actionerror.NoOrganizationTargetedError{BinaryName: binaryName}) 76 }) 77 78 It("returns an error", func() { 79 Expect(executeErr).To(MatchError(actionerror.NoOrganizationTargetedError{BinaryName: binaryName})) 80 checkTargetedOrg, checkTargetedSpace := fakeSharedActor.CheckTargetArgsForCall(0) 81 Expect(checkTargetedOrg).To(BeTrue()) 82 Expect(checkTargetedSpace).To(BeFalse()) 83 }) 84 }) 85 }) 86 87 Context("When the environment is setup correctly", func() { 88 BeforeEach(func() { 89 fakeConfig.CurrentUserReturns(configv3.User{Name: "banana"}, nil) 90 }) 91 92 When("DomainsActor returns an error", func() { 93 var expectedErr error 94 95 BeforeEach(func() { 96 warnings := v7action.Warnings{"warning-1", "warning-2"} 97 expectedErr = errors.New("some-error") 98 fakeActor.GetOrganizationDomainsReturns(nil, warnings, expectedErr) 99 }) 100 101 It("prints that error with warnings", func() { 102 Expect(executeErr).To(Equal(expectedErr)) 103 104 Expect(testUI.Err).To(Say("warning-1")) 105 Expect(testUI.Err).To(Say("warning-2")) 106 Expect(testUI.Out).ToNot(Say(tableHeaders)) 107 }) 108 }) 109 110 When("GetDomains returns some domains", func() { 111 var domains []v7action.Domain 112 113 BeforeEach(func() { 114 domains = []v7action.Domain{ 115 {Name: "domain1", GUID: "domain-guid-1", Internal: types.NullBool{IsSet: true, Value: true}}, 116 {Name: "domain3", GUID: "domain-guid-3", Internal: types.NullBool{IsSet: false, Value: false}, OrganizationGUID: "owning-org-guid"}, 117 {Name: "domain2", GUID: "domain-guid-2", Internal: types.NullBool{IsSet: true, Value: false}}, 118 } 119 120 fakeActor.GetOrganizationDomainsReturns( 121 domains, 122 v7action.Warnings{"actor-warning-1", "actor-warning-2", "actor-warning-3"}, 123 nil, 124 ) 125 126 fakeConfig.TargetedOrganizationReturns(configv3.Organization{ 127 GUID: "some-org-guid", 128 Name: "some-org", 129 }) 130 }) 131 132 It("asks the DomainsActor for a list of domains", func() { 133 Expect(fakeActor.GetOrganizationDomainsCallCount()).To(Equal(1)) 134 }) 135 136 It("prints warnings", func() { 137 Expect(testUI.Err).To(Say("actor-warning-1")) 138 Expect(testUI.Err).To(Say("actor-warning-2")) 139 Expect(testUI.Err).To(Say("actor-warning-3")) 140 }) 141 142 It("prints the list of domains in alphabetical order", func() { 143 Expect(executeErr).NotTo(HaveOccurred()) 144 Expect(testUI.Out).To(Say(tableHeaders)) 145 Expect(testUI.Out).To(Say(`domain1\s+shared\s+true`)) 146 Expect(testUI.Out).To(Say(`domain2\s+shared`)) 147 Expect(testUI.Out).To(Say(`domain3\s+private`)) 148 }) 149 150 It("prints the flavor text", func() { 151 Expect(testUI.Out).To(Say("Getting domains in org some-org as banana...\n\n")) 152 }) 153 }) 154 155 When("GetDomains returns no domains", func() { 156 var domains []v7action.Domain 157 158 BeforeEach(func() { 159 domains = []v7action.Domain{} 160 161 fakeActor.GetOrganizationDomainsReturns( 162 domains, 163 v7action.Warnings{"actor-warning-1", "actor-warning-2", "actor-warning-3"}, 164 nil, 165 ) 166 167 fakeConfig.TargetedOrganizationReturns(configv3.Organization{ 168 GUID: "some-org-guid", 169 Name: "some-org", 170 }) 171 }) 172 173 It("asks the DomainsActor for a list of domains", func() { 174 Expect(fakeActor.GetOrganizationDomainsCallCount()).To(Equal(1)) 175 }) 176 177 It("prints warnings", func() { 178 Expect(testUI.Err).To(Say("actor-warning-1")) 179 Expect(testUI.Err).To(Say("actor-warning-2")) 180 Expect(testUI.Err).To(Say("actor-warning-3")) 181 }) 182 183 It("does not print table headers", func() { 184 Expect(testUI.Out).NotTo(Say(tableHeaders)) 185 }) 186 187 It("prints a message indicating that no domains were found", func() { 188 Expect(executeErr).NotTo(HaveOccurred()) 189 Expect(testUI.Out).To(Say("No domains found.")) 190 }) 191 192 It("prints the flavor text", func() { 193 Expect(testUI.Out).To(Say("Getting domains in org some-org as banana...\n\n")) 194 }) 195 }) 196 Context("when a labels flag is set", func() { 197 BeforeEach(func() { 198 cmd.Labels = "fish=moose" 199 }) 200 201 It("passes the flag to the API", func() { 202 Expect(fakeActor.GetOrganizationDomainsCallCount()).To(Equal(1)) 203 _, labelSelector := fakeActor.GetOrganizationDomainsArgsForCall(0) 204 Expect(labelSelector).To(Equal("fish=moose")) 205 }) 206 }) 207 }) 208 })