github.com/asifdxtreme/cli@v6.1.3-0.20150123051144-9ead8700b4ae+incompatible/cf/commands/user/set_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/commands/user" 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("set-space-role command", func() { 19 var ( 20 ui *testterm.FakeUI 21 requirementsFactory *testreq.FakeReqFactory 22 spaceRepo *testapi.FakeSpaceRepository 23 userRepo *testapi.FakeUserRepository 24 configRepo core_config.ReadWriter 25 ) 26 27 BeforeEach(func() { 28 configRepo = testconfig.NewRepositoryWithDefaults() 29 accessToken, err := testconfig.EncodeAccessToken(core_config.TokenInfo{Username: "current-user"}) 30 Expect(err).NotTo(HaveOccurred()) 31 configRepo.SetAccessToken(accessToken) 32 33 ui = &testterm.FakeUI{} 34 requirementsFactory = &testreq.FakeReqFactory{} 35 spaceRepo = &testapi.FakeSpaceRepository{} 36 userRepo = &testapi.FakeUserRepository{} 37 }) 38 39 runCommand := func(args ...string) bool { 40 return testcmd.RunCommand(NewSetSpaceRole(ui, configRepo, spaceRepo, userRepo), args, requirementsFactory) 41 } 42 43 It("fails with usage when not provided exactly four args", func() { 44 runCommand("foo", "bar", "baz") 45 Expect(ui.FailedWithUsage).To(BeTrue()) 46 }) 47 48 It("does not fail with usage when provided four args", func() { 49 runCommand("whatever", "these", "are", "args") 50 Expect(ui.FailedWithUsage).To(BeFalse()) 51 }) 52 53 Describe("requirements", func() { 54 It("fails when not logged in", func() { 55 Expect(runCommand("username", "org", "space", "role")).To(BeFalse()) 56 }) 57 58 It("succeeds when logged in", func() { 59 requirementsFactory.LoginSuccess = true 60 passed := runCommand("username", "org", "space", "role") 61 62 Expect(passed).To(BeTrue()) 63 Expect(requirementsFactory.UserUsername).To(Equal("username")) 64 Expect(requirementsFactory.OrganizationName).To(Equal("org")) 65 }) 66 }) 67 68 Context("when logged in", func() { 69 BeforeEach(func() { 70 requirementsFactory.LoginSuccess = true 71 72 org := models.Organization{} 73 org.Guid = "my-org-guid" 74 org.Name = "my-org" 75 76 requirementsFactory.UserFields = models.UserFields{Guid: "my-user-guid", Username: "my-user"} 77 requirementsFactory.Organization = org 78 79 spaceRepo.FindByNameInOrgSpace = models.Space{} 80 spaceRepo.FindByNameInOrgSpace.Guid = "my-space-guid" 81 spaceRepo.FindByNameInOrgSpace.Name = "my-space" 82 spaceRepo.FindByNameInOrgSpace.Organization = org.OrganizationFields 83 }) 84 85 It("sets the given space role on the given user", func() { 86 runCommand("some-user", "some-org", "some-space", "SpaceManager") 87 88 Expect(ui.Outputs).To(ContainSubstrings( 89 []string{"Assigning role ", "SpaceManager", "my-user", "my-org", "my-space", "current-user"}, 90 []string{"OK"}, 91 )) 92 93 Expect(spaceRepo.FindByNameInOrgName).To(Equal("some-space")) 94 Expect(spaceRepo.FindByNameInOrgOrgGuid).To(Equal("my-org-guid")) 95 96 Expect(userRepo.SetSpaceRoleUserGuid).To(Equal("my-user-guid")) 97 Expect(userRepo.SetSpaceRoleSpaceGuid).To(Equal("my-space-guid")) 98 Expect(userRepo.SetSpaceRoleRole).To(Equal(models.SPACE_MANAGER)) 99 }) 100 }) 101 })