github.com/rakutentech/cli@v6.12.5-0.20151006231303-24468b65536e+incompatible/cf/commands/service/create_user_provided_service_test.go (about) 1 package service_test 2 3 import ( 4 testapi "github.com/cloudfoundry/cli/cf/api/fakes" 5 "github.com/cloudfoundry/cli/cf/command_registry" 6 "github.com/cloudfoundry/cli/cf/configuration/core_config" 7 testcmd "github.com/cloudfoundry/cli/testhelpers/commands" 8 testconfig "github.com/cloudfoundry/cli/testhelpers/configuration" 9 testreq "github.com/cloudfoundry/cli/testhelpers/requirements" 10 testterm "github.com/cloudfoundry/cli/testhelpers/terminal" 11 . "github.com/onsi/ginkgo" 12 . "github.com/onsi/gomega" 13 14 . "github.com/cloudfoundry/cli/testhelpers/matchers" 15 ) 16 17 var _ = Describe("create-user-provided-service command", func() { 18 var ( 19 ui *testterm.FakeUI 20 config core_config.Repository 21 repo *testapi.FakeUserProvidedServiceInstanceRepository 22 requirementsFactory *testreq.FakeReqFactory 23 deps command_registry.Dependency 24 ) 25 26 updateCommandDependency := func(pluginCall bool) { 27 deps.Ui = ui 28 deps.RepoLocator = deps.RepoLocator.SetUserProvidedServiceInstanceRepository(repo) 29 deps.Config = config 30 command_registry.Commands.SetCommand(command_registry.Commands.FindCommand("create-user-provided-service").SetDependency(deps, pluginCall)) 31 } 32 33 BeforeEach(func() { 34 ui = &testterm.FakeUI{} 35 config = testconfig.NewRepositoryWithDefaults() 36 repo = &testapi.FakeUserProvidedServiceInstanceRepository{} 37 requirementsFactory = &testreq.FakeReqFactory{LoginSuccess: true, TargetedSpaceSuccess: true} 38 }) 39 40 Describe("login requirements", func() { 41 It("fails if the user is not logged in", func() { 42 requirementsFactory.LoginSuccess = false 43 Expect(testcmd.RunCliCommand("create-user-provided-service", []string{"my-service"}, requirementsFactory, updateCommandDependency, false)).To(BeFalse()) 44 }) 45 It("fails when a space is not targeted", func() { 46 requirementsFactory.TargetedSpaceSuccess = false 47 Expect(testcmd.RunCliCommand("create-user-provided-service", []string{"my-service"}, requirementsFactory, updateCommandDependency, false)).To(BeFalse()) 48 }) 49 }) 50 51 It("creates a new user provided service given just a name", func() { 52 testcmd.RunCliCommand("create-user-provided-service", []string{"my-custom-service"}, requirementsFactory, updateCommandDependency, false) 53 Expect(ui.Outputs).To(ContainSubstrings( 54 []string{"Creating user provided service"}, 55 []string{"OK"}, 56 )) 57 }) 58 59 It("accepts service parameters interactively", func() { 60 ui.Inputs = []string{"foo value", "bar value", "baz value"} 61 testcmd.RunCliCommand("create-user-provided-service", []string{"-p", `"foo, bar, baz"`, "my-custom-service"}, requirementsFactory, updateCommandDependency, false) 62 63 Expect(ui.Prompts).To(ContainSubstrings( 64 []string{"foo"}, 65 []string{"bar"}, 66 []string{"baz"}, 67 )) 68 69 Expect(repo.CreateCallCount()).To(Equal(1)) 70 name, drainUrl, params := repo.CreateArgsForCall(0) 71 Expect(name).To(Equal("my-custom-service")) 72 Expect(drainUrl).To(Equal("")) 73 Expect(params["foo"]).To(Equal("foo value")) 74 Expect(params["bar"]).To(Equal("bar value")) 75 Expect(params["baz"]).To(Equal("baz value")) 76 77 Expect(ui.Outputs).To(ContainSubstrings( 78 []string{"Creating user provided service", "my-custom-service", "my-org", "my-space", "my-user"}, 79 []string{"OK"}, 80 )) 81 }) 82 83 It("accepts service parameters as JSON without prompting", func() { 84 args := []string{"-p", `{"foo": "foo value", "bar": "bar value", "baz": 4}`, "my-custom-service"} 85 testcmd.RunCliCommand("create-user-provided-service", args, requirementsFactory, updateCommandDependency, false) 86 87 name, _, params := repo.CreateArgsForCall(0) 88 Expect(name).To(Equal("my-custom-service")) 89 90 Expect(ui.Prompts).To(BeEmpty()) 91 Expect(params).To(Equal(map[string]interface{}{ 92 "foo": "foo value", 93 "bar": "bar value", 94 "baz": float64(4), 95 })) 96 97 Expect(ui.Outputs).To(ContainSubstrings( 98 []string{"Creating user provided service"}, 99 []string{"OK"}, 100 )) 101 }) 102 103 It("creates a user provided service with a syslog drain url", func() { 104 args := []string{"-l", "syslog://example.com", "-p", `{"foo": "foo value", "bar": "bar value", "baz": "baz value"}`, "my-custom-service"} 105 testcmd.RunCliCommand("create-user-provided-service", args, requirementsFactory, updateCommandDependency, false) 106 107 _, drainUrl, _ := repo.CreateArgsForCall(0) 108 Expect(drainUrl).To(Equal("syslog://example.com")) 109 Expect(ui.Outputs).To(ContainSubstrings( 110 []string{"Creating user provided service"}, 111 []string{"OK"}, 112 )) 113 }) 114 })