github.com/rakutentech/cli@v6.12.5-0.20151006231303-24468b65536e+incompatible/cf/commands/user/unset_space_role_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("unset-space-role command", func() { 19 20 var ( 21 ui *testterm.FakeUI 22 configRepo core_config.Repository 23 requirementsFactory *testreq.FakeReqFactory 24 userRepo *testapi.FakeUserRepository 25 spaceRepo *testapi.FakeSpaceRepository 26 deps command_registry.Dependency 27 ) 28 29 updateCommandDependency := func(pluginCall bool) { 30 deps.Ui = ui 31 deps.Config = configRepo 32 deps.RepoLocator = deps.RepoLocator.SetUserRepository(userRepo) 33 deps.RepoLocator = deps.RepoLocator.SetSpaceRepository(spaceRepo) 34 command_registry.Commands.SetCommand(command_registry.Commands.FindCommand("unset-space-role").SetDependency(deps, pluginCall)) 35 } 36 37 callUnsetSpaceRole := func(args []string, spaceRepo *testapi.FakeSpaceRepository, userRepo *testapi.FakeUserRepository, requirementsFactory *testreq.FakeReqFactory) (*testterm.FakeUI, bool) { 38 ui = &testterm.FakeUI{} 39 configRepo = testconfig.NewRepositoryWithDefaults() 40 passed := testcmd.RunCliCommand("unset-space-role", args, requirementsFactory, updateCommandDependency, false) 41 return ui, passed 42 } 43 It("fails with usage when not called with exactly four args", func() { 44 requirementsFactory, spaceRepo, userRepo = getUnsetSpaceRoleDeps() 45 46 ui, _ := callUnsetSpaceRole([]string{"username", "org", "space"}, spaceRepo, userRepo, requirementsFactory) 47 Expect(ui.Outputs).To(ContainSubstrings( 48 []string{"Incorrect Usage", "Requires", "arguments"}, 49 )) 50 }) 51 52 It("fails requirements when not logged in", func() { 53 requirementsFactory, spaceRepo, userRepo = getUnsetSpaceRoleDeps() 54 args := []string{"username", "org", "space", "role"} 55 56 requirementsFactory.LoginSuccess = false 57 _, passed := callUnsetSpaceRole(args, spaceRepo, userRepo, requirementsFactory) 58 Expect(passed).To(BeFalse()) 59 }) 60 61 It("unsets the user's space role", func() { 62 user := models.UserFields{} 63 user.Username = "some-user" 64 user.Guid = "some-user-guid" 65 org := models.Organization{} 66 org.Name = "some-org" 67 org.Guid = "some-org-guid" 68 69 requirementsFactory, spaceRepo, userRepo = getUnsetSpaceRoleDeps() 70 requirementsFactory.LoginSuccess = true 71 requirementsFactory.UserFields = user 72 requirementsFactory.Organization = org 73 spaceRepo.FindByNameInOrgSpace = models.Space{} 74 spaceRepo.FindByNameInOrgSpace.Name = "some-space" 75 spaceRepo.FindByNameInOrgSpace.Guid = "some-space-guid" 76 77 args := []string{"my-username", "my-org", "my-space", "SpaceManager"} 78 79 ui, _ := callUnsetSpaceRole(args, spaceRepo, userRepo, requirementsFactory) 80 81 Expect(spaceRepo.FindByNameInOrgName).To(Equal("my-space")) 82 Expect(spaceRepo.FindByNameInOrgOrgGuid).To(Equal("some-org-guid")) 83 84 Expect(ui.Outputs).To(ContainSubstrings( 85 []string{"Removing role", "SpaceManager", "some-user", "some-org", "some-space", "my-user"}, 86 []string{"OK"}, 87 )) 88 Expect(userRepo.UnsetSpaceRoleRole).To(Equal(models.SPACE_MANAGER)) 89 Expect(userRepo.UnsetSpaceRoleUserGuid).To(Equal("some-user-guid")) 90 Expect(userRepo.UnsetSpaceRoleSpaceGuid).To(Equal("some-space-guid")) 91 }) 92 }) 93 94 func getUnsetSpaceRoleDeps() (requirementsFactory *testreq.FakeReqFactory, spaceRepo *testapi.FakeSpaceRepository, userRepo *testapi.FakeUserRepository) { 95 requirementsFactory = &testreq.FakeReqFactory{} 96 spaceRepo = &testapi.FakeSpaceRepository{} 97 userRepo = &testapi.FakeUserRepository{} 98 return 99 }