@@ -79,10 +79,15 @@ func TestAuthenticationFlow(t *testing.T) {
7979 defer ctrl .Finish ()
8080
8181 // Create mock provider
82+ mockToken := & oauth2.Token {AccessToken : "test-token" }
8283 mockProvider := NewMockProvider (ctrl )
8384 mockProvider .EXPECT ().Name ().Return ("test" ).AnyTimes ()
8485 mockProvider .EXPECT ().AuthURL ().Return ("/.auth/test" ).AnyTimes ()
8586 mockProvider .EXPECT ().RedirectURL ().Return ("/.auth/test/callback" ).AnyTimes ()
87+ mockProvider .EXPECT ().AuthCodeURL (gomock .Any (), gomock .Any ()).Return ("https://example.com/oauth" , nil )
88+ mockProvider .EXPECT ().Exchange (gomock .Any (), gomock .Any ()).Return (mockToken , nil )
89+ mockProvider .EXPECT ().GetUserID (gomock .Any (), mockToken ).Return ("test-user" , nil )
90+ mockProvider .EXPECT ().Authorization ("test-user" ).Return (true , nil ).AnyTimes ()
8691
8792 // Create AuthRouter
8893 authRouter , err := NewAuthRouter (nil , mockProvider )
@@ -103,8 +108,6 @@ func TestAuthenticationFlow(t *testing.T) {
103108 require .Equal (t , http .StatusFound , resp .StatusCode )
104109
105110 // Step 2: Start authentication
106- mockProvider .EXPECT ().AuthCodeURL (gomock .Any (), gomock .Any ()).Return ("https://example.com/oauth" , nil )
107-
108111 resp , err = client .Get (server .URL + "/.auth/test" )
109112 require .NoError (t , err )
110113 resp .Body .Close ()
@@ -115,23 +118,15 @@ func TestAuthenticationFlow(t *testing.T) {
115118 require .Equal (t , "https://example.com/oauth" , location )
116119
117120 // Step 3: Handle callback
118- mockToken := & oauth2.Token {AccessToken : "test-token" }
119- mockProvider .EXPECT ().Exchange (gomock .Any (), gomock .Any ()).Return (mockToken , nil )
120- mockProvider .EXPECT ().GetUserID (gomock .Any (), mockToken ).Return ("test-user" , nil )
121-
122121 resp , err = client .Get (server .URL + "/.auth/test/callback" )
123122 require .NoError (t , err )
124123 resp .Body .Close ()
125124
126125 require .Equal (t , http .StatusFound , resp .StatusCode )
127-
128- // Verify redirect to root
129126 location = resp .Header .Get ("Location" )
130127 require .Equal (t , "/" , location )
131128
132129 // Step 4: Access after authentication
133- mockProvider .EXPECT ().Authorization ("test-user" ).Return (true , nil )
134-
135130 resp , err = client .Get (server .URL + "/" )
136131 if err != nil {
137132 t .Fatalf ("Request failed: %v" , err )
@@ -146,10 +141,15 @@ func TestAuthenticationFlow(t *testing.T) {
146141 defer ctrl .Finish ()
147142
148143 // Create mock provider
144+ mockToken := & oauth2.Token {AccessToken : "test-token" }
149145 mockProvider := NewMockProvider (ctrl )
150146 mockProvider .EXPECT ().Name ().Return ("test" ).AnyTimes ()
151147 mockProvider .EXPECT ().AuthURL ().Return ("/.auth/test" ).AnyTimes ()
152148 mockProvider .EXPECT ().RedirectURL ().Return ("/.auth/test/callback" ).AnyTimes ()
149+ mockProvider .EXPECT ().AuthCodeURL (gomock .Any (), gomock .Any ()).Return ("https://example.com/oauth" , nil )
150+ mockProvider .EXPECT ().Exchange (gomock .Any (), gomock .Any ()).Return (mockToken , nil )
151+ mockProvider .EXPECT ().GetUserID (gomock .Any (), mockToken ).Return ("unauthorized-user" , nil )
152+ mockProvider .EXPECT ().Authorization ("unauthorized-user" ).Return (false , nil ).AnyTimes ()
153153
154154 // Create AuthRouter
155155 authRouter , err := NewAuthRouter (nil , mockProvider )
@@ -167,30 +167,26 @@ func TestAuthenticationFlow(t *testing.T) {
167167 resp .Body .Close ()
168168
169169 // Step 2: Start authentication
170- mockProvider .EXPECT ().AuthCodeURL (gomock .Any (), gomock .Any ()).Return ("https://example.com/oauth" , nil )
171-
172170 resp , err = client .Get (server .URL + "/.auth/test" )
173171 require .NoError (t , err )
174172 resp .Body .Close ()
175173
176174 // Step 3: Complete authentication
177- mockToken := & oauth2.Token {AccessToken : "test-token" }
178- mockProvider .EXPECT ().Exchange (gomock .Any (), gomock .Any ()).Return (mockToken , nil )
179- mockProvider .EXPECT ().GetUserID (gomock .Any (), mockToken ).Return ("unauthorized-user" , nil )
180-
181175 resp , err = client .Get (server .URL + "/.auth/test/callback" )
182176 require .NoError (t , err )
183177 resp .Body .Close ()
184178
185- // Step 4: Test access when authorization fails
186- mockProvider .EXPECT ().Authorization ("unauthorized-user" ).Return (false , nil )
179+ require .Equal (t , http .StatusForbidden , resp .StatusCode )
187180
181+ // Step 4: Test access when authorization fails
188182 resp , err = client .Get (server .URL + "/" )
189183 if err != nil {
190184 t .Fatalf ("Request failed: %v" , err )
191185 }
192186 defer resp .Body .Close ()
193187
194- require .Equal (t , http .StatusForbidden , resp .StatusCode )
188+ require .Equal (t , http .StatusFound , resp .StatusCode )
189+ location := resp .Header .Get ("Location" )
190+ require .Equal (t , "/.auth/login" , location )
195191 })
196192}
0 commit comments