Skip to content

Commit 44ebb69

Browse files
committed
refactor: improve test organization and fix authorization flow handling
1 parent 3b45904 commit 44ebb69

2 files changed

Lines changed: 15 additions & 20 deletions

File tree

pkg/auth/auth.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,6 @@ func (a *AuthRouter) SetupRoutes(router gin.IRouter) {
104104
} else {
105105
c.Redirect(http.StatusFound, redirectURL.(string))
106106
}
107-
108107
})
109108

110109
router.GET(provider.AuthURL(), func(c *gin.Context) {

pkg/auth/auth_test.go

Lines changed: 15 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)