github.com/mook-as/cf-cli@v7.0.0-beta.28.0.20200120190804-b91c115fae48+incompatible/command/v7/share_private_domain_command_test.go (about) 1 package v7_test 2 3 import ( 4 "errors" 5 6 "code.cloudfoundry.org/cli/actor/actionerror" 7 "code.cloudfoundry.org/cli/actor/v7action" 8 "code.cloudfoundry.org/cli/command/commandfakes" 9 "code.cloudfoundry.org/cli/command/flag" 10 . "code.cloudfoundry.org/cli/command/v7" 11 "code.cloudfoundry.org/cli/command/v7/v7fakes" 12 "code.cloudfoundry.org/cli/util/configv3" 13 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("share-private-domain command", func() { 22 var ( 23 cmd SharePrivateDomainCommand 24 DomainName = "some-domain-name" 25 OrgName = "some-org-name" 26 fakeActor *v7fakes.FakeSharePrivateDomainActor 27 fakeConfig *commandfakes.FakeConfig 28 fakeSharedActor *commandfakes.FakeSharedActor 29 testUI *ui.UI 30 binaryName string 31 32 executeErr error 33 ) 34 35 BeforeEach(func() { 36 testUI = ui.NewTestUI(nil, NewBuffer(), NewBuffer()) 37 fakeActor = new(v7fakes.FakeSharePrivateDomainActor) 38 fakeConfig = new(commandfakes.FakeConfig) 39 fakeSharedActor = new(commandfakes.FakeSharedActor) 40 cmd = SharePrivateDomainCommand{ 41 Actor: fakeActor, 42 UI: testUI, 43 Config: fakeConfig, 44 SharedActor: fakeSharedActor, 45 } 46 cmd.RequiredArgs = flag.OrgDomain{ 47 Organization: OrgName, 48 Domain: DomainName, 49 } 50 binaryName = "faceman" 51 fakeConfig.BinaryNameReturns(binaryName) 52 53 }) 54 55 JustBeforeEach(func() { 56 executeErr = cmd.Execute(nil) 57 }) 58 59 When("the user is not logged in", func() { 60 BeforeEach(func() { 61 fakeSharedActor.CheckTargetReturns(actionerror.NotLoggedInError{}) 62 }) 63 64 It("checks target and returns the error", func() { 65 Expect(fakeSharedActor.CheckTargetCallCount()).To(Equal(1)) 66 checkedOrg, checkedSpace := fakeSharedActor.CheckTargetArgsForCall(0) 67 Expect(checkedOrg).To(Equal(false)) 68 Expect(checkedSpace).To(Equal(false)) 69 70 Expect(executeErr).To(MatchError(actionerror.NotLoggedInError{})) 71 }) 72 }) 73 74 When("getting the current user fails", func() { 75 BeforeEach(func() { 76 fakeConfig.CurrentUserReturns(configv3.User{}, errors.New("current-user-error")) 77 }) 78 79 It("returns an error", func() { 80 Expect(fakeSharedActor.CheckTargetCallCount()).To(Equal(1)) 81 checkedOrg, checkedSpace := fakeSharedActor.CheckTargetArgsForCall(0) 82 Expect(checkedOrg).To(Equal(false)) 83 Expect(checkedSpace).To(Equal(false)) 84 85 Expect(executeErr).To(MatchError(errors.New("current-user-error"))) 86 }) 87 }) 88 89 When("the environment is setup correctly", func() { 90 BeforeEach(func() { 91 fakeConfig.CurrentUserReturns(configv3.User{Name: "the-user"}, nil) 92 }) 93 94 It("should print text indicating it is sharing a domain", func() { 95 Expect(executeErr).NotTo(HaveOccurred()) 96 Expect(testUI.Out).To(Say(`Sharing domain %s with org %s as the-user\.\.\.`, DomainName, OrgName)) 97 }) 98 99 When("sharing the domain errors", func() { 100 BeforeEach(func() { 101 fakeActor.SharePrivateDomainReturns(v7action.Warnings{"warnings-1", "warnings-2"}, errors.New("err-share-domain")) 102 }) 103 104 It("returns an error and displays warnings", func() { 105 Expect(executeErr).To(MatchError("err-share-domain")) 106 Expect(testUI.Err).To(Say("warnings-1")) 107 Expect(testUI.Err).To(Say("warnings-2")) 108 }) 109 }) 110 111 When("sharing the domain is successful", func() { 112 BeforeEach(func() { 113 fakeActor.SharePrivateDomainReturns(v7action.Warnings{"warnings-1", "warnings-2"}, nil) 114 }) 115 116 It("prints all warnings and OK", func() { 117 Expect(executeErr).ToNot(HaveOccurred()) 118 Expect(testUI.Err).To(Say("warnings-1")) 119 Expect(testUI.Err).To(Say("warnings-2")) 120 Expect(testUI.Out).To(Say("OK")) 121 }) 122 123 It("shares the domain", func() { 124 Expect(fakeActor.SharePrivateDomainCallCount()).To(Equal(1)) 125 expectedDomainName, expectedOrgName := fakeActor.SharePrivateDomainArgsForCall(0) 126 Expect(expectedDomainName).To(Equal(DomainName)) 127 Expect(expectedOrgName).To(Equal(OrgName)) 128 }) 129 }) 130 }) 131 132 })