Source file
src/github.com/ory/fosite/authorize_response_writer_test.go
1
21
22 package fosite_test
23
24 import (
25 "context"
26 "testing"
27
28 "github.com/golang/mock/gomock"
29 "github.com/pkg/errors"
30 "github.com/stretchr/testify/assert"
31
32 "github.com/ory/fosite"
33 . "github.com/ory/fosite"
34 . "github.com/ory/fosite/internal"
35 )
36
37 func TestNewAuthorizeResponse(t *testing.T) {
38 ctrl := gomock.NewController(t)
39 handlers := []*MockAuthorizeEndpointHandler{NewMockAuthorizeEndpointHandler(ctrl)}
40 ar := NewMockAuthorizeRequester(ctrl)
41 defer ctrl.Finish()
42
43 ctx := context.Background()
44 oauth2 := &Fosite{
45 AuthorizeEndpointHandlers: AuthorizeEndpointHandlers{handlers[0]},
46 }
47 duo := &Fosite{
48 AuthorizeEndpointHandlers: AuthorizeEndpointHandlers{handlers[0], handlers[0]},
49 }
50 ar.EXPECT().SetSession(gomock.Eq(new(DefaultSession))).AnyTimes()
51 fooErr := errors.New("foo")
52 for k, c := range []struct {
53 isErr bool
54 mock func()
55 expectErr error
56 }{
57 {
58 mock: func() {
59 handlers[0].EXPECT().HandleAuthorizeEndpointRequest(gomock.Any(), gomock.Any(), gomock.Any()).Return(fooErr)
60 },
61 isErr: true,
62 expectErr: fooErr,
63 },
64 {
65 mock: func() {
66 handlers[0].EXPECT().HandleAuthorizeEndpointRequest(gomock.Any(), gomock.Any(), gomock.Any()).Return(nil)
67 ar.EXPECT().DidHandleAllResponseTypes().Return(true)
68 ar.EXPECT().GetDefaultResponseMode().Return(ResponseModeFragment)
69 ar.EXPECT().GetResponseMode().Return(ResponseModeDefault)
70 },
71 isErr: false,
72 },
73 {
74 mock: func() {
75 oauth2 = duo
76 handlers[0].EXPECT().HandleAuthorizeEndpointRequest(gomock.Any(), gomock.Any(), gomock.Any()).Return(nil)
77 handlers[0].EXPECT().HandleAuthorizeEndpointRequest(gomock.Any(), gomock.Any(), gomock.Any()).Return(nil)
78 ar.EXPECT().DidHandleAllResponseTypes().Return(true)
79 ar.EXPECT().GetDefaultResponseMode().Return(ResponseModeFragment)
80 ar.EXPECT().GetResponseMode().Return(ResponseModeDefault)
81 },
82 isErr: false,
83 },
84 {
85 mock: func() {
86 oauth2 = duo
87 handlers[0].EXPECT().HandleAuthorizeEndpointRequest(gomock.Any(), gomock.Any(), gomock.Any()).Return(nil)
88 handlers[0].EXPECT().HandleAuthorizeEndpointRequest(gomock.Any(), gomock.Any(), gomock.Any()).Return(fooErr)
89 },
90 isErr: true,
91 expectErr: fooErr,
92 },
93 {
94 mock: func() {
95 oauth2 = duo
96 handlers[0].EXPECT().HandleAuthorizeEndpointRequest(gomock.Any(), gomock.Any(), gomock.Any()).Return(nil)
97 handlers[0].EXPECT().HandleAuthorizeEndpointRequest(gomock.Any(), gomock.Any(), gomock.Any()).Return(nil)
98 ar.EXPECT().DidHandleAllResponseTypes().Return(true)
99 ar.EXPECT().GetDefaultResponseMode().Return(ResponseModeFragment)
100 ar.EXPECT().GetResponseMode().Return(ResponseModeQuery).Times(2)
101 ar.EXPECT().GetResponseTypes().Return([]string{"token", "code"})
102 },
103 isErr: true,
104 expectErr: ErrUnsupportedResponseMode.WithHintf("Insecure response_mode '%s' for the response_type '%s'.", ResponseModeQuery, fosite.Arguments{"token", "code"}),
105 },
106 } {
107 c.mock()
108 responder, err := oauth2.NewAuthorizeResponse(ctx, ar, new(DefaultSession))
109 assert.Equal(t, c.isErr, err != nil, "%d: %s", k, err)
110 if err != nil {
111 assert.Equal(t, c.expectErr, err, "%d: %s", k, err)
112 assert.Nil(t, responder, "%d", k)
113 } else {
114 assert.NotNil(t, responder, "%d", k)
115 }
116 t.Logf("Passed test case %d", k)
117 }
118 }
119
View as plain text