github.com/loafoe/cli@v7.1.0+incompatible/command/v7/create_shared_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 "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("create-shared-domain Command", func() { 21 var ( 22 cmd CreateSharedDomainCommand 23 testUI *ui.UI 24 fakeConfig *commandfakes.FakeConfig 25 fakeSharedActor *commandfakes.FakeSharedActor 26 fakeActor *v7fakes.FakeActor 27 28 executeErr error 29 30 binaryName string 31 domainName string 32 ) 33 34 BeforeEach(func() { 35 testUI = ui.NewTestUI(nil, NewBuffer(), NewBuffer()) 36 fakeConfig = new(commandfakes.FakeConfig) 37 fakeSharedActor = new(commandfakes.FakeSharedActor) 38 fakeActor = new(v7fakes.FakeActor) 39 40 domainName = "example.com" 41 42 cmd = CreateSharedDomainCommand{ 43 RequiredArgs: flag.Domain{ 44 Domain: domainName, 45 }, 46 BaseCommand: BaseCommand{ 47 UI: testUI, 48 Config: fakeConfig, 49 SharedActor: fakeSharedActor, 50 Actor: fakeActor, 51 }, 52 } 53 54 binaryName = "faceman" 55 fakeConfig.BinaryNameReturns(binaryName) 56 }) 57 58 JustBeforeEach(func() { 59 executeErr = cmd.Execute(nil) 60 }) 61 62 When("the environment is not set up correctly", func() { 63 BeforeEach(func() { 64 fakeSharedActor.CheckTargetReturns(actionerror.NotLoggedInError{BinaryName: binaryName}) 65 }) 66 67 It("returns an error", func() { 68 Expect(executeErr).To(MatchError(actionerror.NotLoggedInError{BinaryName: binaryName})) 69 70 Expect(fakeSharedActor.CheckTargetCallCount()).To(Equal(1)) 71 checkTargetedOrg, checkTargetedSpace := fakeSharedActor.CheckTargetArgsForCall(0) 72 Expect(checkTargetedOrg).To(BeFalse()) 73 Expect(checkTargetedSpace).To(BeFalse()) 74 }) 75 }) 76 77 When("the environment is setup correctly", func() { 78 BeforeEach(func() { 79 fakeConfig.CurrentUserReturns(configv3.User{Name: "the-user"}, nil) 80 }) 81 82 It("should print text indicating it is creating a domain", func() { 83 Expect(executeErr).NotTo(HaveOccurred()) 84 Expect(testUI.Out).To(Say(`Creating shared domain %s as the-user\.\.\.`, domainName)) 85 }) 86 87 When("creating the domain errors", func() { 88 BeforeEach(func() { 89 fakeActor.CreateSharedDomainReturns(v7action.Warnings{"warnings-1", "warnings-2"}, errors.New("err-create-domain")) 90 }) 91 92 It("returns an error and displays warnings", func() { 93 Expect(executeErr).To(MatchError("err-create-domain")) 94 Expect(testUI.Err).To(Say("warnings-1")) 95 Expect(testUI.Err).To(Say("warnings-2")) 96 }) 97 }) 98 99 When("the provided router group does not exist", func() { 100 BeforeEach(func() { 101 fakeActor.CreateSharedDomainReturns(v7action.Warnings{"warnings-1", "warnings-2"}, errors.New("bad-router-group")) 102 cmd.RouterGroup = "bogus" 103 }) 104 105 It("returns an error and displays warnings", func() { 106 Expect(executeErr).To(MatchError("bad-router-group")) 107 Expect(testUI.Err).To(Say("warnings-1")) 108 Expect(testUI.Err).To(Say("warnings-2")) 109 }) 110 }) 111 112 When("creating the domain is successful", func() { 113 BeforeEach(func() { 114 fakeActor.CreateSharedDomainReturns(v7action.Warnings{"warnings-1", "warnings-2"}, nil) 115 cmd.Internal = true 116 cmd.RouterGroup = "router-group" 117 }) 118 119 It("prints all warnings, ok and then a tip", func() { 120 Expect(executeErr).ToNot(HaveOccurred()) 121 Expect(testUI.Err).To(Say("warnings-1")) 122 Expect(testUI.Err).To(Say("warnings-2")) 123 Expect(testUI.Out).To(Say("OK")) 124 Expect(testUI.Out).To(Say("TIP: Domain '%s' is shared with all orgs. Run 'cf domains' to view available domains.", domainName)) 125 }) 126 127 It("creates the domain", func() { 128 Expect(fakeActor.CreateSharedDomainCallCount()).To(Equal(1)) 129 expectedDomainName, expectedInternal, expectedRouterGroup := fakeActor.CreateSharedDomainArgsForCall(0) 130 Expect(expectedDomainName).To(Equal(domainName)) 131 Expect(expectedInternal).To(BeTrue()) 132 Expect(expectedRouterGroup).To(Equal("router-group")) 133 }) 134 }) 135 }) 136 })