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