github.com/mook-as/cf-cli@v7.0.0-beta.28.0.20200120190804-b91c115fae48+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.FakeCreateSharedDomainActor 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.FakeCreateSharedDomainActor) 39 40 domainName = "example.com" 41 42 cmd = CreateSharedDomainCommand{ 43 RequiredArgs: flag.Domain{ 44 Domain: domainName, 45 }, 46 UI: testUI, 47 Config: fakeConfig, 48 SharedActor: fakeSharedActor, 49 Actor: fakeActor, 50 } 51 52 binaryName = "faceman" 53 fakeConfig.BinaryNameReturns(binaryName) 54 }) 55 56 JustBeforeEach(func() { 57 executeErr = cmd.Execute(nil) 58 }) 59 60 When("the environment is not set up correctly", func() { 61 BeforeEach(func() { 62 fakeSharedActor.CheckTargetReturns(actionerror.NotLoggedInError{BinaryName: binaryName}) 63 }) 64 65 It("returns an error", func() { 66 Expect(executeErr).To(MatchError(actionerror.NotLoggedInError{BinaryName: binaryName})) 67 68 Expect(fakeSharedActor.CheckTargetCallCount()).To(Equal(1)) 69 checkTargetedOrg, checkTargetedSpace := fakeSharedActor.CheckTargetArgsForCall(0) 70 Expect(checkTargetedOrg).To(BeFalse()) 71 Expect(checkTargetedSpace).To(BeFalse()) 72 }) 73 }) 74 75 When("the environment is setup correctly", func() { 76 BeforeEach(func() { 77 fakeConfig.CurrentUserReturns(configv3.User{Name: "the-user"}, nil) 78 }) 79 80 It("should print text indicating it is creating a domain", func() { 81 Expect(executeErr).NotTo(HaveOccurred()) 82 Expect(testUI.Out).To(Say(`Creating shared domain %s as the-user\.\.\.`, domainName)) 83 }) 84 85 When("creating the domain errors", func() { 86 BeforeEach(func() { 87 fakeActor.CreateSharedDomainReturns(v7action.Warnings{"warnings-1", "warnings-2"}, errors.New("err-create-domain")) 88 }) 89 90 It("returns an error and displays warnings", func() { 91 Expect(executeErr).To(MatchError("err-create-domain")) 92 Expect(testUI.Err).To(Say("warnings-1")) 93 Expect(testUI.Err).To(Say("warnings-2")) 94 }) 95 }) 96 97 When("creating the domain is successful", func() { 98 BeforeEach(func() { 99 fakeActor.CreateSharedDomainReturns(v7action.Warnings{"warnings-1", "warnings-2"}, nil) 100 cmd.Internal = true 101 }) 102 103 It("prints all warnings, ok and then a tip", func() { 104 Expect(executeErr).ToNot(HaveOccurred()) 105 Expect(testUI.Err).To(Say("warnings-1")) 106 Expect(testUI.Err).To(Say("warnings-2")) 107 Expect(testUI.Out).To(Say("OK")) 108 Expect(testUI.Out).To(Say("TIP: Domain '%s' is shared with all orgs. Run 'cf domains' to view available domains.", domainName)) 109 }) 110 111 It("creates the domain", func() { 112 Expect(fakeActor.CreateSharedDomainCallCount()).To(Equal(1)) 113 expectedDomainName, expectedInternal := fakeActor.CreateSharedDomainArgsForCall(0) 114 Expect(expectedDomainName).To(Equal(domainName)) 115 Expect(expectedInternal).To(BeTrue()) 116 }) 117 }) 118 }) 119 })