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  })