MCPcopy
hub / github.com/ory/hydra / TestNewAccessRequestWithoutClientAuth

Function TestNewAccessRequestWithoutClientAuth

fosite/access_request_handler_test.go:218–347  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

216}
217
218func TestNewAccessRequestWithoutClientAuth(t *testing.T) {
219 ctrl := gomock.NewController(t)
220 store := internal.NewMockStorage(ctrl)
221 clientManager := internal.NewMockClientManager(ctrl)
222 handler := internal.NewMockTokenEndpointHandler(ctrl)
223 handler.EXPECT().CanHandleTokenEndpointRequest(gomock.Any(), gomock.Any()).Return(true).AnyTimes()
224 handler.EXPECT().CanSkipClientAuth(gomock.Any(), gomock.Any()).Return(true).AnyTimes()
225 hasher := internal.NewMockHasher(ctrl)
226 t.Cleanup(ctrl.Finish)
227
228 client := &DefaultClient{}
229 anotherClient := &DefaultClient{ID: "another"}
230 config := &Config{ClientSecretsHasher: hasher, AudienceMatchingStrategy: DefaultAudienceMatchingStrategy}
231 fosite := &Fosite{Store: store, Config: config}
232 for k, c := range []struct {
233 header http.Header
234 form url.Values
235 mock func()
236 method string
237 expectErr error
238 expect *AccessRequest
239 handlers TokenEndpointHandlers
240 }{
241 // No grant type -> error
242 {
243 form: url.Values{},
244 mock: func() {
245 clientManager.EXPECT().GetClient(gomock.Any(), gomock.Any()).Times(0)
246 },
247 method: "POST",
248 expectErr: ErrInvalidRequest,
249 },
250 // No registered handlers -> error
251 {
252 form: url.Values{
253 "grant_type": {"foo"},
254 },
255 mock: func() {
256 clientManager.EXPECT().GetClient(gomock.Any(), gomock.Any()).Times(0)
257 },
258 method: "POST",
259 expectErr: ErrInvalidRequest,
260 handlers: TokenEndpointHandlers{},
261 },
262 // Handler can skip client auth and ignores missing client.
263 {
264 header: http.Header{
265 "Authorization": {basicAuth("foo", "bar")},
266 },
267 form: url.Values{
268 "grant_type": {"foo"},
269 },
270 mock: func() {
271 // despite error from storage, we should success, because client auth is not required
272 store.EXPECT().FositeClientManager().Return(clientManager).Times(1)
273 clientManager.EXPECT().GetClient(gomock.Any(), "foo").Return(nil, errors.New("no client")).Times(1)
274 handler.EXPECT().HandleTokenEndpointRequest(gomock.Any(), gomock.Any()).Return(nil)
275 },

Callers

nothing calls this directly

Calls 15

EXPECTMethod · 0.95
EXPECTMethod · 0.95
EXPECTMethod · 0.95
EXPECTMethod · 0.95
NewAccessRequestMethod · 0.95
NewMockStorageFunction · 0.92
NewMockClientManagerFunction · 0.92
NewMockHasherFunction · 0.92
basicAuthFunction · 0.85
NewContextFunction · 0.70
AssertObjectKeysEqualFunction · 0.70

Tested by

no test coverage detected