github.com/franc20/ayesa_sap@v7.0.0-beta.28.0.20200124003224-302d4d52fa6c+incompatible/command/v7/unset_space_role_command_test.go (about)

     1  package v7_test
     2  
     3  import (
     4  	"code.cloudfoundry.org/cli/actor/v7action"
     5  	"code.cloudfoundry.org/cli/api/cloudcontroller/ccv3/constant"
     6  	"code.cloudfoundry.org/cli/cf/errors"
     7  	"code.cloudfoundry.org/cli/command/flag"
     8  	"code.cloudfoundry.org/cli/command/translatableerror"
     9  	"code.cloudfoundry.org/cli/command/v7/v7fakes"
    10  	"code.cloudfoundry.org/cli/util/configv3"
    11  
    12  	"code.cloudfoundry.org/cli/command/commandfakes"
    13  	. "code.cloudfoundry.org/cli/command/v7"
    14  	"code.cloudfoundry.org/cli/util/ui"
    15  	. "github.com/onsi/ginkgo"
    16  	. "github.com/onsi/gomega"
    17  	. "github.com/onsi/gomega/gbytes"
    18  )
    19  
    20  var _ = Describe("unset-space-role Command", func() {
    21  	var (
    22  		cmd             UnsetSpaceRoleCommand
    23  		testUI          *ui.UI
    24  		fakeConfig      *commandfakes.FakeConfig
    25  		fakeSharedActor *commandfakes.FakeSharedActor
    26  		fakeActor       *v7fakes.FakeUnsetSpaceRoleActor
    27  		binaryName      string
    28  		executeErr      error
    29  		input           *Buffer
    30  	)
    31  
    32  	BeforeEach(func() {
    33  		input = NewBuffer()
    34  		testUI = ui.NewTestUI(input, NewBuffer(), NewBuffer())
    35  		fakeConfig = new(commandfakes.FakeConfig)
    36  		fakeSharedActor = new(commandfakes.FakeSharedActor)
    37  		fakeActor = new(v7fakes.FakeUnsetSpaceRoleActor)
    38  
    39  		cmd = UnsetSpaceRoleCommand{
    40  			UI:          testUI,
    41  			Config:      fakeConfig,
    42  			SharedActor: fakeSharedActor,
    43  			Actor:       fakeActor,
    44  		}
    45  
    46  		binaryName = "faceman"
    47  		fakeConfig.BinaryNameReturns(binaryName)
    48  	})
    49  
    50  	JustBeforeEach(func() {
    51  		executeErr = cmd.Execute(nil)
    52  	})
    53  
    54  	BeforeEach(func() {
    55  		fakeConfig.CurrentUserReturns(configv3.User{Name: "current-user"}, nil)
    56  
    57  		fakeActor.GetOrganizationByNameReturns(
    58  			v7action.Organization{
    59  				GUID:     "some-org-guid",
    60  				Name:     "some-org-name",
    61  				Metadata: nil,
    62  			},
    63  			v7action.Warnings{"get-org-warning"},
    64  			nil,
    65  		)
    66  
    67  		fakeActor.GetSpaceByNameAndOrganizationReturns(
    68  			v7action.Space{GUID: "some-space-guid", Name: "some-space-name"},
    69  			v7action.Warnings{"get-space-warning"},
    70  			nil,
    71  		)
    72  	})
    73  
    74  	When("neither origin nor client flag is provided", func() {
    75  		BeforeEach(func() {
    76  			cmd.Args.Organization = "some-org-name"
    77  			cmd.Args.Space = "some-space-name"
    78  			cmd.Args.Role = flag.SpaceRole{Role: "SpaceDeveloper"}
    79  			cmd.Args.Username = "target-user-name"
    80  		})
    81  
    82  		It("deletes the space role", func() {
    83  			Expect(fakeActor.DeleteSpaceRoleCallCount()).To(Equal(1))
    84  			givenRoleType, givenSpaceGUID, givenUserName, givenOrigin, givenIsClient := fakeActor.DeleteSpaceRoleArgsForCall(0)
    85  			Expect(givenRoleType).To(Equal(constant.SpaceDeveloperRole))
    86  			Expect(givenSpaceGUID).To(Equal("some-space-guid"))
    87  			Expect(givenUserName).To(Equal("target-user-name"))
    88  			Expect(givenOrigin).To(Equal("uaa"))
    89  			Expect(givenIsClient).To(BeFalse())
    90  		})
    91  
    92  		It("displays flavor text and returns without error", func() {
    93  			Expect(testUI.Out).To(Say("Removing role SpaceDeveloper from user target-user-name in org some-org-name / space some-space-name as current-user..."))
    94  			Expect(testUI.Out).To(Say("OK"))
    95  			Expect(executeErr).NotTo(HaveOccurred())
    96  		})
    97  	})
    98  
    99  	When("origin flag is provided", func() {
   100  		BeforeEach(func() {
   101  			cmd.Args.Organization = "some-org-name"
   102  			cmd.Args.Space = "some-space-name"
   103  			cmd.Args.Role = flag.SpaceRole{Role: "SpaceAuditor"}
   104  			cmd.Args.Username = "target-user-name"
   105  			cmd.Origin = "ldap"
   106  		})
   107  
   108  		It("deletes the space role", func() {
   109  			Expect(fakeActor.DeleteSpaceRoleCallCount()).To(Equal(1))
   110  			givenRoleType, givenSpaceGUID, givenUserName, givenOrigin, givenIsClient := fakeActor.DeleteSpaceRoleArgsForCall(0)
   111  			Expect(givenRoleType).To(Equal(constant.SpaceAuditorRole))
   112  			Expect(givenSpaceGUID).To(Equal("some-space-guid"))
   113  			Expect(givenUserName).To(Equal("target-user-name"))
   114  			Expect(givenOrigin).To(Equal("ldap"))
   115  			Expect(givenIsClient).To(BeFalse())
   116  		})
   117  
   118  		It("displays flavor text and returns without error", func() {
   119  			Expect(testUI.Out).To(Say("Removing role SpaceAuditor from user target-user-name in org some-org-name / space some-space-name as current-user..."))
   120  			Expect(testUI.Out).To(Say("OK"))
   121  			Expect(executeErr).NotTo(HaveOccurred())
   122  		})
   123  	})
   124  
   125  	When("client flag is provided", func() {
   126  		BeforeEach(func() {
   127  			cmd.Args.Organization = "some-org-name"
   128  			cmd.Args.Space = "some-space-name"
   129  			cmd.Args.Role = flag.SpaceRole{Role: "SpaceAuditor"}
   130  			cmd.Args.Username = "target-user-name"
   131  			cmd.IsClient = true
   132  		})
   133  
   134  		It("does not try to get the user", func() {
   135  			Expect(fakeActor.GetUserCallCount()).To(Equal(0))
   136  		})
   137  
   138  		It("deletes the space role correctly", func() {
   139  			givenRoleType, givenSpaceGUID, givenUserName, givenOrigin, givenIsClient := fakeActor.DeleteSpaceRoleArgsForCall(0)
   140  			Expect(givenRoleType).To(Equal(constant.SpaceAuditorRole))
   141  			Expect(givenSpaceGUID).To(Equal("some-space-guid"))
   142  			Expect(givenUserName).To(Equal("target-user-name"))
   143  			Expect(givenOrigin).To(Equal("uaa"))
   144  			Expect(givenIsClient).To(BeTrue())
   145  		})
   146  
   147  		It("displays flavor text and returns without error", func() {
   148  			Expect(testUI.Out).To(Say("Removing role SpaceAuditor from user target-user-name in org some-org-name / space some-space-name as current-user..."))
   149  			Expect(testUI.Out).To(Say("OK"))
   150  			Expect(executeErr).NotTo(HaveOccurred())
   151  		})
   152  	})
   153  
   154  	When("both client and origin flags are provided", func() {
   155  		BeforeEach(func() {
   156  			cmd.Args.Organization = "some-org-name"
   157  			cmd.Args.Space = "some-space-name"
   158  			cmd.Args.Role = flag.SpaceRole{Role: "SpaceAuditor"}
   159  			cmd.Args.Username = "target-user-name"
   160  			cmd.Origin = "ldap"
   161  			cmd.IsClient = true
   162  		})
   163  
   164  		It("returns an error", func() {
   165  			Expect(executeErr).To(MatchError(translatableerror.ArgumentCombinationError{
   166  				Args: []string{"--client", "--origin"},
   167  			}))
   168  		})
   169  	})
   170  
   171  	When("the role does not exist", func() {
   172  		BeforeEach(func() {
   173  			cmd.Args.Organization = "some-org-name"
   174  			cmd.Args.Space = "some-space-name"
   175  			cmd.Args.Role = flag.SpaceRole{Role: "SpaceAuditor"}
   176  			cmd.Args.Username = "target-user-name"
   177  
   178  			fakeActor.DeleteSpaceRoleReturns(
   179  				v7action.Warnings{"delete-role-warning"},
   180  				nil,
   181  			)
   182  		})
   183  
   184  		It("displays warnings and returns without error", func() {
   185  			Expect(testUI.Err).To(Say("delete-role-warning"))
   186  			Expect(testUI.Out).To(Say("OK"))
   187  			Expect(executeErr).NotTo(HaveOccurred())
   188  		})
   189  	})
   190  
   191  	When("invalid role arg is given", func() {
   192  		BeforeEach(func() {
   193  			cmd.Args.Role = flag.SpaceRole{Role: "Astronaut"}
   194  		})
   195  
   196  		It("returns an error", func() {
   197  			Expect(executeErr).To(MatchError("Invalid role type."))
   198  		})
   199  	})
   200  
   201  	When("getting the org fails", func() {
   202  		BeforeEach(func() {
   203  			cmd.Args.Role = flag.SpaceRole{Role: "SpaceAuditor"}
   204  
   205  			fakeActor.GetOrganizationByNameReturns(
   206  				v7action.Organization{},
   207  				v7action.Warnings{"get-user-warning"},
   208  				errors.New("get-org-error"),
   209  			)
   210  		})
   211  
   212  		It("displays warnings and returns an error", func() {
   213  			Expect(testUI.Err).To(Say("get-user-warning"))
   214  			Expect(executeErr).To(MatchError("get-org-error"))
   215  		})
   216  	})
   217  
   218  	When("getting the space fails", func() {
   219  		BeforeEach(func() {
   220  			cmd.Args.Role = flag.SpaceRole{Role: "SpaceAuditor"}
   221  
   222  			fakeActor.GetSpaceByNameAndOrganizationReturns(
   223  				v7action.Space{},
   224  				v7action.Warnings{"get-space-warning"},
   225  				errors.New("get-space-error"),
   226  			)
   227  		})
   228  
   229  		It("displays warnings and returns an error", func() {
   230  			Expect(testUI.Err).To(Say("get-space-warning"))
   231  			Expect(executeErr).To(MatchError("get-space-error"))
   232  		})
   233  	})
   234  
   235  	When("deleting the space role fails", func() {
   236  		BeforeEach(func() {
   237  			cmd.Args.Organization = "some-org-name"
   238  			cmd.Args.Space = "some-space-name"
   239  			cmd.Args.Role = flag.SpaceRole{Role: "SpaceAuditor"}
   240  			cmd.Args.Username = "target-user-name"
   241  
   242  			fakeActor.DeleteSpaceRoleReturns(
   243  				v7action.Warnings{"delete-role-warning"},
   244  				errors.New("delete-role-error"),
   245  			)
   246  		})
   247  
   248  		It("displays warnings and returns without error", func() {
   249  			Expect(testUI.Err).To(Say("delete-role-warning"))
   250  			Expect(executeErr).To(MatchError("delete-role-error"))
   251  		})
   252  	})
   253  })