github.com/franc20/ayesa_sap@v7.0.0-beta.28.0.20200124003224-302d4d52fa6c+incompatible/command/v6/create_org_command_test.go (about) 1 package v6_test 2 3 import ( 4 "errors" 5 6 "code.cloudfoundry.org/cli/actor/actionerror" 7 "code.cloudfoundry.org/cli/actor/v2action" 8 "code.cloudfoundry.org/cli/command/commandfakes" 9 "code.cloudfoundry.org/cli/command/flag" 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("CreateOrgCommand", func() { 20 var ( 21 fakeConfig *commandfakes.FakeConfig 22 fakeActor *v6fakes.FakeCreateOrgActor 23 fakeSharedActor *commandfakes.FakeSharedActor 24 testUI *ui.UI 25 orgName string 26 cmd CreateOrgCommand 27 28 executeErr error 29 ) 30 31 BeforeEach(func() { 32 testUI = ui.NewTestUI(nil, NewBuffer(), NewBuffer()) 33 fakeConfig = new(commandfakes.FakeConfig) 34 fakeActor = new(v6fakes.FakeCreateOrgActor) 35 fakeSharedActor = new(commandfakes.FakeSharedActor) 36 orgName = "some-org" 37 38 cmd = CreateOrgCommand{ 39 UI: testUI, 40 Config: fakeConfig, 41 Actor: fakeActor, 42 SharedActor: fakeSharedActor, 43 RequiredArgs: flag.Organization{Organization: orgName}, 44 } 45 }) 46 47 JustBeforeEach(func() { 48 executeErr = cmd.Execute(nil) 49 }) 50 51 When("checking the target fails", func() { 52 var binaryName string 53 54 BeforeEach(func() { 55 binaryName = "faceman" 56 fakeConfig.BinaryNameReturns(binaryName) 57 fakeSharedActor.CheckTargetReturns(actionerror.NotLoggedInError{BinaryName: binaryName}) 58 }) 59 60 It("returns an error", func() { 61 Expect(executeErr).To(MatchError(actionerror.NotLoggedInError{BinaryName: "faceman"})) 62 63 Expect(fakeSharedActor.CheckTargetCallCount()).To(Equal(1)) 64 checkTargetedOrg, checkTargetedSpace := fakeSharedActor.CheckTargetArgsForCall(0) 65 Expect(checkTargetedOrg).To(BeFalse()) 66 Expect(checkTargetedSpace).To(BeFalse()) 67 }) 68 }) 69 70 When("checking the target succeeds", func() { 71 When("fetching the current user succeeds", func() { 72 var username string 73 74 BeforeEach(func() { 75 username = "some-guy" 76 77 fakeConfig.CurrentUserReturns(configv3.User{ 78 Name: username, 79 }, nil) 80 }) 81 82 When("the -q is passed", func() { 83 var quotaName string 84 85 BeforeEach(func() { 86 quotaName = "some-quota-name" 87 cmd.Quota = quotaName 88 }) 89 90 It("provides the quota when creating the org", func() { 91 Expect(executeErr).ToNot(HaveOccurred()) 92 _, inputQuota := fakeActor.CreateOrganizationArgsForCall(0) 93 Expect(inputQuota).To(Equal("some-quota-name")) 94 }) 95 }) 96 97 When("creating the org succeeds", func() { 98 BeforeEach(func() { 99 fakeActor.CreateOrganizationReturns( 100 v2action.Organization{GUID: "fake-org-id"}, 101 v2action.Warnings{"warn-1", "warn-2"}, 102 nil, 103 ) 104 }) 105 106 It("creates the org and displays warnings", func() { 107 Expect(executeErr).ToNot(HaveOccurred()) 108 Expect(fakeConfig.CurrentUserCallCount()).To(Equal(1)) 109 Expect(testUI.Out).To(Say(`Creating org %s as %s\.\.\.`, orgName, username)) 110 Expect(testUI.Err).To(Say("warn-1\nwarn-2\n")) 111 Expect(testUI.Out).To(Say("OK\n\n")) 112 113 Expect(fakeActor.CreateOrganizationCallCount()).To(Equal(1)) 114 inputOrg, quota := fakeActor.CreateOrganizationArgsForCall(0) 115 Expect(inputOrg).To(Equal("some-org")) 116 Expect(quota).To(BeEmpty()) 117 }) 118 119 When("making the user an org manager succeeds", func() { 120 BeforeEach(func() { 121 fakeActor.GrantOrgManagerByUsernameReturns( 122 v2action.Warnings{"warn-role"}, 123 nil, 124 ) 125 }) 126 127 It("displays warnings and a tip", func() { 128 Expect(executeErr).ToNot(HaveOccurred()) 129 Expect(fakeConfig.CurrentUserCallCount()).To(Equal(1)) 130 Expect(testUI.Out).To(Say(`Assigning role OrgManager to user %s in org %s\.\.\.`, username, orgName)) 131 Expect(testUI.Err).To(Say("warn-role\n")) 132 Expect(testUI.Out).To(Say("OK\n\n")) 133 Expect(testUI.Out).To(Say(`TIP: Use 'cf target -o "%s"' to target new org`, orgName)) 134 135 Expect(fakeActor.GrantOrgManagerByUsernameCallCount()).To(Equal(1)) 136 orgID, inputUsername := fakeActor.GrantOrgManagerByUsernameArgsForCall(0) 137 Expect(orgID).To(Equal("fake-org-id")) 138 Expect(inputUsername).To(Equal(username)) 139 }) 140 }) 141 142 When("making the user an org manager fails", func() { 143 BeforeEach(func() { 144 fakeActor.GrantOrgManagerByUsernameReturns( 145 v2action.Warnings{"warn-role"}, 146 errors.New("some-error"), 147 ) 148 }) 149 150 It("returns an error and prints warnings", func() { 151 Expect(executeErr).To(MatchError("some-error")) 152 Expect(testUI.Err).To(Say("warn-role\n")) 153 }) 154 }) 155 }) 156 157 When("creating the org fails", func() { 158 BeforeEach(func() { 159 fakeActor.CreateOrganizationReturns( 160 v2action.Organization{}, 161 v2action.Warnings{"warn-1", "warn-2"}, 162 errors.New("failed to create"), 163 ) 164 }) 165 166 It("returns an error and prints warnings", func() { 167 Expect(executeErr).To(MatchError("failed to create")) 168 Expect(testUI.Err).To(Say("warn-1\nwarn-2")) 169 }) 170 }) 171 172 When("creating the org failed because the name was taken", func() { 173 BeforeEach(func() { 174 fakeActor.CreateOrganizationReturns( 175 v2action.Organization{}, 176 v2action.Warnings{"warn-1", "warn-2"}, 177 actionerror.OrganizationNameTakenError{Name: orgName}, 178 ) 179 }) 180 181 It("should print warnings and return nil because this error is not fatal", func() { 182 Expect(executeErr).NotTo(HaveOccurred()) 183 Expect(testUI.Err).To(Say("warn-1\nwarn-2")) 184 Expect(testUI.Err).To(Say("Org %s already exists", orgName)) 185 Expect(fakeActor.GrantOrgManagerByUsernameCallCount()).To(Equal(0)) 186 }) 187 }) 188 }) 189 190 When("fetching the user fails", func() { 191 BeforeEach(func() { 192 fakeConfig.CurrentUserReturns(configv3.User{}, errors.New("gotta log in")) 193 }) 194 195 It("returns an error", func() { 196 Expect(executeErr).To(MatchError("gotta log in")) 197 }) 198 }) 199 }) 200 })