github.com/arunkumar7540/cli@v6.45.0+incompatible/actor/sharedaction/check_target_test.go (about)

     1  package sharedaction_test
     2  
     3  import (
     4  	"code.cloudfoundry.org/cli/actor/actionerror"
     5  	. "code.cloudfoundry.org/cli/actor/sharedaction"
     6  	"code.cloudfoundry.org/cli/actor/sharedaction/sharedactionfakes"
     7  	"errors"
     8  	. "github.com/onsi/ginkgo"
     9  	. "github.com/onsi/ginkgo/extensions/table"
    10  	. "github.com/onsi/gomega"
    11  )
    12  
    13  var _ = Describe("Checking target", func() {
    14  	var (
    15  		actor      *Actor
    16  		binaryName string
    17  		fakeConfig *sharedactionfakes.FakeConfig
    18  	)
    19  
    20  	BeforeEach(func() {
    21  		binaryName = "faceman"
    22  		fakeConfig = new(sharedactionfakes.FakeConfig)
    23  		fakeConfig.BinaryNameReturns(binaryName)
    24  		actor = NewActor(fakeConfig)
    25  	})
    26  
    27  	Describe("CheckTarget", func() {
    28  		When("the user is not logged in", func() {
    29  			It("returns an error", func() {
    30  				err := actor.CheckTarget(false, false)
    31  				Expect(err).To(MatchError(actionerror.NotLoggedInError{
    32  					BinaryName: binaryName,
    33  				}))
    34  			})
    35  		})
    36  
    37  		When("the user is logged in", func() {
    38  			BeforeEach(func() {
    39  				fakeConfig.AccessTokenReturns("some-access-token")
    40  				fakeConfig.RefreshTokenReturns("some-refresh-token")
    41  			})
    42  
    43  			DescribeTable("targeting org check",
    44  				func(isOrgTargeted bool, checkForTargeted bool, expectedError error) {
    45  					fakeConfig.HasTargetedOrganizationReturns(isOrgTargeted)
    46  
    47  					err := actor.CheckTarget(checkForTargeted, false)
    48  
    49  					if expectedError != nil {
    50  						Expect(err).To(MatchError(expectedError))
    51  					} else {
    52  						Expect(err).ToNot(HaveOccurred())
    53  					}
    54  				},
    55  
    56  				Entry("it returns an error", false, true, actionerror.NoOrganizationTargetedError{BinaryName: "faceman"}),
    57  				Entry("it does not return an error", false, false, nil),
    58  				Entry("it does not return an error", true, false, nil),
    59  				Entry("it does not return an error", true, true, nil),
    60  			)
    61  
    62  			When("the organization is targeted", func() {
    63  				BeforeEach(func() {
    64  					fakeConfig.HasTargetedOrganizationReturns(true)
    65  				})
    66  
    67  				DescribeTable("targeting space check",
    68  					func(isSpaceTargeted bool, checkForTargeted bool, expectedError error) {
    69  						fakeConfig.HasTargetedSpaceReturns(isSpaceTargeted)
    70  
    71  						err := actor.CheckTarget(true, checkForTargeted)
    72  
    73  						if expectedError != nil {
    74  							Expect(err).To(MatchError(expectedError))
    75  						} else {
    76  							Expect(err).ToNot(HaveOccurred())
    77  						}
    78  					},
    79  
    80  					Entry("it returns an error", false, true, actionerror.NoSpaceTargetedError{BinaryName: "faceman"}),
    81  					Entry("it does not return an error", false, false, nil),
    82  					Entry("it does not return an error", true, false, nil),
    83  					Entry("it does not return an error", true, true, nil),
    84  				)
    85  			})
    86  		})
    87  	})
    88  
    89  	Describe("RequireCurrentUser", func() {
    90  		var (
    91  			user string
    92  			err  error
    93  		)
    94  
    95  		JustBeforeEach(func() {
    96  			user, err = actor.RequireCurrentUser()
    97  		})
    98  
    99  		When("access token and refresh token are empty", func() {
   100  			BeforeEach(func() {
   101  				fakeConfig.AccessTokenReturns("")
   102  				fakeConfig.RefreshTokenReturns("")
   103  			})
   104  
   105  			It("returns a NotLoggedInError with binary name", func() {
   106  				Expect(err).To(MatchError(actionerror.NotLoggedInError{
   107  					BinaryName: binaryName,
   108  				}))
   109  			})
   110  		})
   111  
   112  		When("access token is available", func() {
   113  			BeforeEach(func() {
   114  				fakeConfig.AccessTokenReturns("some-access-token")
   115  			})
   116  
   117  			When("getting current user returns an error", func() {
   118  				BeforeEach(func() {
   119  					fakeConfig.CurrentUserNameReturns("", errors.New("get-user-error"))
   120  				})
   121  
   122  				It("returns the error", func() {
   123  					Expect(err).To(MatchError("get-user-error"))
   124  				})
   125  			})
   126  
   127  			When("getting current user succeeds", func() {
   128  				BeforeEach(func() {
   129  					fakeConfig.CurrentUserNameReturns("some-user", nil)
   130  				})
   131  
   132  				It("returns the user", func() {
   133  					Expect(err).To(BeNil())
   134  					Expect(user).To(Equal("some-user"))
   135  				})
   136  			})
   137  		})
   138  
   139  		When("refresh token is available", func() {
   140  			BeforeEach(func() {
   141  				fakeConfig.RefreshTokenReturns("some-refresh-token")
   142  			})
   143  
   144  			When("getting current user returns an error", func() {
   145  				BeforeEach(func() {
   146  					fakeConfig.CurrentUserNameReturns("", errors.New("get-user-error"))
   147  				})
   148  
   149  				It("returns the error", func() {
   150  					Expect(err).To(MatchError("get-user-error"))
   151  				})
   152  			})
   153  
   154  			When("getting current user succeeds", func() {
   155  				BeforeEach(func() {
   156  					fakeConfig.CurrentUserNameReturns("some-user", nil)
   157  				})
   158  
   159  				It("returns the user object", func() {
   160  					Expect(err).To(BeNil())
   161  					Expect(user).To(Equal("some-user"))
   162  				})
   163  			})
   164  		})
   165  	})
   166  
   167  	Describe("RequireTargetedOrg", func() {
   168  		var (
   169  			org string
   170  			err error
   171  		)
   172  
   173  		JustBeforeEach(func() {
   174  			org, err = actor.RequireTargetedOrg()
   175  		})
   176  
   177  		When("no org is targeted", func() {
   178  			BeforeEach(func() {
   179  				fakeConfig.HasTargetedOrganizationReturns(false)
   180  			})
   181  
   182  			It("returns a NoOrganizationTargetedError with the binary name", func() {
   183  				Expect(err).To(MatchError(actionerror.NoOrganizationTargetedError{
   184  					BinaryName: binaryName,
   185  				}))
   186  				Expect(org).To(BeEmpty())
   187  			})
   188  		})
   189  
   190  		When("an org is targeted", func() {
   191  			BeforeEach(func() {
   192  				fakeConfig.HasTargetedOrganizationReturns(true)
   193  				fakeConfig.TargetedOrganizationNameReturns("some-name")
   194  			})
   195  
   196  			It("returns the org name", func() {
   197  				Expect(err).To(BeNil())
   198  				Expect(org).To(Equal("some-name"))
   199  			})
   200  		})
   201  	})
   202  })