github.com/rakutentech/cli@v6.12.5-0.20151006231303-24468b65536e+incompatible/cf/commands/user/delete_user_test.go (about) 1 package user_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 "github.com/cloudfoundry/cli/cf/models" 8 testcmd "github.com/cloudfoundry/cli/testhelpers/commands" 9 testconfig "github.com/cloudfoundry/cli/testhelpers/configuration" 10 testreq "github.com/cloudfoundry/cli/testhelpers/requirements" 11 testterm "github.com/cloudfoundry/cli/testhelpers/terminal" 12 . "github.com/onsi/ginkgo" 13 . "github.com/onsi/gomega" 14 15 . "github.com/cloudfoundry/cli/testhelpers/matchers" 16 ) 17 18 var _ = Describe("delete-user command", func() { 19 var ( 20 ui *testterm.FakeUI 21 configRepo core_config.Repository 22 userRepo *testapi.FakeUserRepository 23 requirementsFactory *testreq.FakeReqFactory 24 deps command_registry.Dependency 25 ) 26 27 updateCommandDependency := func(pluginCall bool) { 28 deps.Ui = ui 29 deps.Config = configRepo 30 deps.RepoLocator = deps.RepoLocator.SetUserRepository(userRepo) 31 command_registry.Commands.SetCommand(command_registry.Commands.FindCommand("delete-user").SetDependency(deps, pluginCall)) 32 } 33 34 BeforeEach(func() { 35 ui = &testterm.FakeUI{Inputs: []string{"y"}} 36 userRepo = &testapi.FakeUserRepository{} 37 requirementsFactory = &testreq.FakeReqFactory{LoginSuccess: true} 38 configRepo = testconfig.NewRepositoryWithDefaults() 39 40 token, err := testconfig.EncodeAccessToken(core_config.TokenInfo{ 41 UserGuid: "admin-user-guid", 42 Username: "admin-user", 43 }) 44 Expect(err).ToNot(HaveOccurred()) 45 configRepo.SetAccessToken(token) 46 }) 47 48 runCommand := func(args ...string) bool { 49 return testcmd.RunCliCommand("delete-user", args, requirementsFactory, updateCommandDependency, false) 50 } 51 52 Describe("requirements", func() { 53 It("fails when not logged in", func() { 54 requirementsFactory.LoginSuccess = false 55 56 Expect(runCommand("my-user")).To(BeFalse()) 57 }) 58 59 It("fails with usage when no arguments are given", func() { 60 runCommand() 61 Expect(ui.Outputs).To(ContainSubstrings( 62 []string{"Incorrect Usage", "Requires an argument"}, 63 )) 64 }) 65 }) 66 67 Context("when the given user exists", func() { 68 BeforeEach(func() { 69 userRepo.FindByUsernameUserFields = models.UserFields{ 70 Username: "user-name", 71 Guid: "user-guid", 72 } 73 }) 74 75 It("deletes a user with the given name", func() { 76 runCommand("user-name") 77 78 Expect(ui.Prompts).To(ContainSubstrings([]string{"Really delete the user user-name"})) 79 80 Expect(ui.Outputs).To(ContainSubstrings( 81 []string{"Deleting user", "user-name", "admin-user"}, 82 []string{"OK"}, 83 )) 84 85 Expect(userRepo.FindByUsernameUsername).To(Equal("user-name")) 86 Expect(userRepo.DeleteUserGuid).To(Equal("user-guid")) 87 }) 88 89 It("does not delete the user when no confirmation is given", func() { 90 ui.Inputs = []string{"nope"} 91 runCommand("user") 92 93 Expect(ui.Prompts).To(ContainSubstrings([]string{"Really delete"})) 94 Expect(userRepo.FindByUsernameUsername).To(Equal("")) 95 Expect(userRepo.DeleteUserGuid).To(Equal("")) 96 }) 97 98 It("deletes without confirmation when the -f flag is given", func() { 99 ui.Inputs = []string{} 100 runCommand("-f", "user-name") 101 102 Expect(ui.Outputs).To(ContainSubstrings( 103 []string{"Deleting user", "user-name"}, 104 []string{"OK"}, 105 )) 106 107 Expect(userRepo.FindByUsernameUsername).To(Equal("user-name")) 108 Expect(userRepo.DeleteUserGuid).To(Equal("user-guid")) 109 }) 110 }) 111 112 Context("when the given user does not exist", func() { 113 BeforeEach(func() { 114 userRepo.FindByUsernameNotFound = true 115 }) 116 117 It("prints a warning", func() { 118 runCommand("-f", "user-name") 119 120 Expect(ui.Outputs).To(ContainSubstrings( 121 []string{"Deleting user", "user-name"}, 122 []string{"OK"}, 123 )) 124 125 Expect(ui.WarnOutputs).To(ContainSubstrings([]string{"user-name", "does not exist"})) 126 127 Expect(userRepo.FindByUsernameUsername).To(Equal("user-name")) 128 Expect(userRepo.DeleteUserGuid).To(Equal("")) 129 }) 130 }) 131 })