github.com/asifdxtreme/cli@v6.1.3-0.20150123051144-9ead8700b4ae+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/commands/user"
     6  	"github.com/cloudfoundry/cli/cf/models"
     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("unset-space-role command", func() {
    18  	It("fails with usage when not called with exactly four args", func() {
    19  		requirementsFactory, spaceRepo, userRepo := getUnsetSpaceRoleDeps()
    20  
    21  		ui, _ := callUnsetSpaceRole([]string{"username", "org", "space"}, spaceRepo, userRepo, requirementsFactory)
    22  		Expect(ui.FailedWithUsage).To(BeTrue())
    23  	})
    24  
    25  	It("fails requirements when not logged in", func() {
    26  		requirementsFactory, spaceRepo, userRepo := getUnsetSpaceRoleDeps()
    27  		args := []string{"username", "org", "space", "role"}
    28  
    29  		requirementsFactory.LoginSuccess = false
    30  		_, passed := callUnsetSpaceRole(args, spaceRepo, userRepo, requirementsFactory)
    31  		Expect(passed).To(BeFalse())
    32  	})
    33  
    34  	It("unsets the user's space role", func() {
    35  		user := models.UserFields{}
    36  		user.Username = "some-user"
    37  		user.Guid = "some-user-guid"
    38  		org := models.Organization{}
    39  		org.Name = "some-org"
    40  		org.Guid = "some-org-guid"
    41  
    42  		requirementsFactory, spaceRepo, userRepo := getUnsetSpaceRoleDeps()
    43  		requirementsFactory.LoginSuccess = true
    44  		requirementsFactory.UserFields = user
    45  		requirementsFactory.Organization = org
    46  		spaceRepo.FindByNameInOrgSpace = models.Space{}
    47  		spaceRepo.FindByNameInOrgSpace.Name = "some-space"
    48  		spaceRepo.FindByNameInOrgSpace.Guid = "some-space-guid"
    49  
    50  		args := []string{"my-username", "my-org", "my-space", "SpaceManager"}
    51  
    52  		ui, _ := callUnsetSpaceRole(args, spaceRepo, userRepo, requirementsFactory)
    53  
    54  		Expect(spaceRepo.FindByNameInOrgName).To(Equal("my-space"))
    55  		Expect(spaceRepo.FindByNameInOrgOrgGuid).To(Equal("some-org-guid"))
    56  
    57  		Expect(ui.Outputs).To(ContainSubstrings(
    58  			[]string{"Removing role", "SpaceManager", "some-user", "some-org", "some-space", "my-user"},
    59  			[]string{"OK"},
    60  		))
    61  		Expect(userRepo.UnsetSpaceRoleRole).To(Equal(models.SPACE_MANAGER))
    62  		Expect(userRepo.UnsetSpaceRoleUserGuid).To(Equal("some-user-guid"))
    63  		Expect(userRepo.UnsetSpaceRoleSpaceGuid).To(Equal("some-space-guid"))
    64  	})
    65  })
    66  
    67  func getUnsetSpaceRoleDeps() (requirementsFactory *testreq.FakeReqFactory, spaceRepo *testapi.FakeSpaceRepository, userRepo *testapi.FakeUserRepository) {
    68  	requirementsFactory = &testreq.FakeReqFactory{}
    69  	spaceRepo = &testapi.FakeSpaceRepository{}
    70  	userRepo = &testapi.FakeUserRepository{}
    71  	return
    72  }
    73  
    74  func callUnsetSpaceRole(args []string, spaceRepo *testapi.FakeSpaceRepository, userRepo *testapi.FakeUserRepository, requirementsFactory *testreq.FakeReqFactory) (*testterm.FakeUI, bool) {
    75  	ui := &testterm.FakeUI{}
    76  	config := testconfig.NewRepositoryWithDefaults()
    77  	cmd := NewUnsetSpaceRole(ui, config, spaceRepo, userRepo)
    78  	passed := testcmd.RunCommand(cmd, args, requirementsFactory)
    79  	return ui, passed
    80  }