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