refactor(tests): Update all test files to use TestServerSetup pattern
This commit is contained in:
@@ -13,13 +13,12 @@ import (
|
||||
// TestRefreshTokenFlow comprehensive tests for token refresh functionality
|
||||
func TestRefreshTokenFlow(t *testing.T) {
|
||||
t.Run("RefreshToken_MissingToken", func(t *testing.T) {
|
||||
ts, _, _ := setupTestServer(t)
|
||||
defer ts.Close()
|
||||
setup := setupTestServer(t)
|
||||
|
||||
req := map[string]interface{}{}
|
||||
body, _ := json.Marshal(req)
|
||||
|
||||
httpReq, _ := http.NewRequest("POST", ts.URL+"/api/auth/refresh", bytes.NewBuffer(body))
|
||||
httpReq, _ := http.NewRequest("POST", setup.Server.URL+"/api/auth/refresh", bytes.NewBuffer(body))
|
||||
httpReq.Header.Set("Content-Type", "application/json")
|
||||
|
||||
client := &http.Client{}
|
||||
@@ -31,15 +30,14 @@ func TestRefreshTokenFlow(t *testing.T) {
|
||||
})
|
||||
|
||||
t.Run("RefreshToken_InvalidTokenFormat", func(t *testing.T) {
|
||||
ts, _, _ := setupTestServer(t)
|
||||
defer ts.Close()
|
||||
setup := setupTestServer(t)
|
||||
|
||||
req := map[string]interface{}{
|
||||
"refresh_token": "not-a-valid-jwt-token",
|
||||
}
|
||||
body, _ := json.Marshal(req)
|
||||
|
||||
httpReq, _ := http.NewRequest("POST", ts.URL+"/api/auth/refresh", bytes.NewBuffer(body))
|
||||
httpReq, _ := http.NewRequest("POST", setup.Server.URL+"/api/auth/refresh", bytes.NewBuffer(body))
|
||||
httpReq.Header.Set("Content-Type", "application/json")
|
||||
|
||||
client := &http.Client{}
|
||||
@@ -51,8 +49,7 @@ func TestRefreshTokenFlow(t *testing.T) {
|
||||
})
|
||||
|
||||
t.Run("RefreshToken_ExpiredToken", func(t *testing.T) {
|
||||
ts, _, _ := setupTestServer(t)
|
||||
defer ts.Close()
|
||||
setup := setupTestServer(t)
|
||||
|
||||
// This would require an expired token - for now test with invalid token
|
||||
req := map[string]interface{}{
|
||||
@@ -60,7 +57,7 @@ func TestRefreshTokenFlow(t *testing.T) {
|
||||
}
|
||||
body, _ := json.Marshal(req)
|
||||
|
||||
httpReq, _ := http.NewRequest("POST", ts.URL+"/api/auth/refresh", bytes.NewBuffer(body))
|
||||
httpReq, _ := http.NewRequest("POST", setup.Server.URL+"/api/auth/refresh", bytes.NewBuffer(body))
|
||||
httpReq.Header.Set("Content-Type", "application/json")
|
||||
|
||||
client := &http.Client{}
|
||||
@@ -72,8 +69,7 @@ func TestRefreshTokenFlow(t *testing.T) {
|
||||
})
|
||||
|
||||
t.Run("RefreshToken_ValidToken", func(t *testing.T) {
|
||||
ts, _, _ := setupTestServer(t)
|
||||
defer ts.Close()
|
||||
setup := setupTestServer(t)
|
||||
|
||||
// First, login to get tokens
|
||||
loginReq := map[string]string{
|
||||
@@ -82,7 +78,7 @@ func TestRefreshTokenFlow(t *testing.T) {
|
||||
}
|
||||
|
||||
loginBody, _ := json.Marshal(loginReq)
|
||||
loginHTTP, _ := http.NewRequest("POST", ts.URL+"/api/auth/login", bytes.NewBuffer(loginBody))
|
||||
loginHTTP, _ := http.NewRequest("POST", setup.Server.URL+"/api/auth/login", bytes.NewBuffer(loginBody))
|
||||
loginHTTP.Header.Set("Content-Type", "application/json")
|
||||
|
||||
client := &http.Client{}
|
||||
@@ -104,7 +100,7 @@ func TestRefreshTokenFlow(t *testing.T) {
|
||||
}
|
||||
refreshBody, _ := json.Marshal(refreshReq)
|
||||
|
||||
refreshHTTP, _ := http.NewRequest("POST", ts.URL+"/api/auth/refresh", bytes.NewBuffer(refreshBody))
|
||||
refreshHTTP, _ := http.NewRequest("POST", setup.Server.URL+"/api/auth/refresh", bytes.NewBuffer(refreshBody))
|
||||
refreshHTTP.Header.Set("Content-Type", "application/json")
|
||||
|
||||
refreshResp, err := client.Do(refreshHTTP)
|
||||
@@ -126,11 +122,10 @@ func TestRefreshTokenFlow(t *testing.T) {
|
||||
})
|
||||
|
||||
t.Run("RefreshToken_InvalidRequestBody", func(t *testing.T) {
|
||||
ts, _, _ := setupTestServer(t)
|
||||
defer ts.Close()
|
||||
setup := setupTestServer(t)
|
||||
|
||||
// Send invalid JSON
|
||||
httpReq, _ := http.NewRequest("POST", ts.URL+"/api/auth/refresh", bytes.NewBuffer([]byte("invalid json")))
|
||||
httpReq, _ := http.NewRequest("POST", setup.Server.URL+"/api/auth/refresh", bytes.NewBuffer([]byte("invalid json")))
|
||||
httpReq.Header.Set("Content-Type", "application/json")
|
||||
|
||||
client := &http.Client{}
|
||||
@@ -142,15 +137,14 @@ func TestRefreshTokenFlow(t *testing.T) {
|
||||
})
|
||||
|
||||
t.Run("RefreshToken_MissingContentType", func(t *testing.T) {
|
||||
ts, _, _ := setupTestServer(t)
|
||||
defer ts.Close()
|
||||
setup := setupTestServer(t)
|
||||
|
||||
req := map[string]interface{}{
|
||||
"refresh_token": "some-token",
|
||||
}
|
||||
body, _ := json.Marshal(req)
|
||||
|
||||
httpReq, _ := http.NewRequest("POST", ts.URL+"/api/auth/refresh", bytes.NewBuffer(body))
|
||||
httpReq, _ := http.NewRequest("POST", setup.Server.URL+"/api/auth/refresh", bytes.NewBuffer(body))
|
||||
// Don't set Content-Type
|
||||
|
||||
client := &http.Client{}
|
||||
@@ -166,8 +160,7 @@ func TestRefreshTokenFlow(t *testing.T) {
|
||||
// TestRefreshTokenSecurity tests security aspects of token refresh
|
||||
func TestRefreshTokenSecurity(t *testing.T) {
|
||||
t.Run("RefreshToken_ReuseProtection", func(t *testing.T) {
|
||||
ts, _, _ := setupTestServer(t)
|
||||
defer ts.Close()
|
||||
setup := setupTestServer(t)
|
||||
|
||||
// Login to get tokens
|
||||
loginReq := map[string]string{
|
||||
@@ -176,7 +169,7 @@ func TestRefreshTokenSecurity(t *testing.T) {
|
||||
}
|
||||
|
||||
loginBody, _ := json.Marshal(loginReq)
|
||||
loginHTTP, _ := http.NewRequest("POST", ts.URL+"/api/auth/login", bytes.NewBuffer(loginBody))
|
||||
loginHTTP, _ := http.NewRequest("POST", setup.Server.URL+"/api/auth/login", bytes.NewBuffer(loginBody))
|
||||
loginHTTP.Header.Set("Content-Type", "application/json")
|
||||
|
||||
client := &http.Client{}
|
||||
@@ -197,7 +190,7 @@ func TestRefreshTokenSecurity(t *testing.T) {
|
||||
}
|
||||
refreshBody, _ := json.Marshal(refreshReq)
|
||||
|
||||
refreshHTTP1, _ := http.NewRequest("POST", ts.URL+"/api/auth/refresh", bytes.NewBuffer(refreshBody))
|
||||
refreshHTTP1, _ := http.NewRequest("POST", setup.Server.URL+"/api/auth/refresh", bytes.NewBuffer(refreshBody))
|
||||
refreshHTTP1.Header.Set("Content-Type", "application/json")
|
||||
|
||||
refreshResp1, err := client.Do(refreshHTTP1)
|
||||
@@ -207,7 +200,7 @@ func TestRefreshTokenSecurity(t *testing.T) {
|
||||
assert.Equal(t, http.StatusOK, refreshResp1.StatusCode)
|
||||
|
||||
// Try to reuse the same refresh token (should fail if refresh token rotation is enabled)
|
||||
refreshHTTP2, _ := http.NewRequest("POST", ts.URL+"/api/auth/refresh", bytes.NewBuffer(refreshBody))
|
||||
refreshHTTP2, _ := http.NewRequest("POST", setup.Server.URL+"/api/auth/refresh", bytes.NewBuffer(refreshBody))
|
||||
refreshHTTP2.Header.Set("Content-Type", "application/json")
|
||||
|
||||
refreshResp2, err := client.Do(refreshHTTP2)
|
||||
@@ -220,8 +213,7 @@ func TestRefreshTokenSecurity(t *testing.T) {
|
||||
})
|
||||
|
||||
t.Run("RefreshToken_TokenTampering", func(t *testing.T) {
|
||||
ts, _, _ := setupTestServer(t)
|
||||
defer ts.Close()
|
||||
setup := setupTestServer(t)
|
||||
|
||||
// Login to get a valid token
|
||||
loginReq := map[string]string{
|
||||
@@ -230,7 +222,7 @@ func TestRefreshTokenSecurity(t *testing.T) {
|
||||
}
|
||||
|
||||
loginBody, _ := json.Marshal(loginReq)
|
||||
loginHTTP, _ := http.NewRequest("POST", ts.URL+"/api/auth/login", bytes.NewBuffer(loginBody))
|
||||
loginHTTP, _ := http.NewRequest("POST", setup.Server.URL+"/api/auth/login", bytes.NewBuffer(loginBody))
|
||||
loginHTTP.Header.Set("Content-Type", "application/json")
|
||||
|
||||
client := &http.Client{}
|
||||
@@ -254,7 +246,7 @@ func TestRefreshTokenSecurity(t *testing.T) {
|
||||
}
|
||||
refreshBody, _ := json.Marshal(refreshReq)
|
||||
|
||||
refreshHTTP, _ := http.NewRequest("POST", ts.URL+"/api/auth/refresh", bytes.NewBuffer(refreshBody))
|
||||
refreshHTTP, _ := http.NewRequest("POST", setup.Server.URL+"/api/auth/refresh", bytes.NewBuffer(refreshBody))
|
||||
refreshHTTP.Header.Set("Content-Type", "application/json")
|
||||
|
||||
refreshResp, err := client.Do(refreshHTTP)
|
||||
@@ -269,15 +261,14 @@ func TestRefreshTokenSecurity(t *testing.T) {
|
||||
// TestRefreshTokenEdgeCases tests edge cases for token refresh
|
||||
func TestRefreshTokenEdgeCases(t *testing.T) {
|
||||
t.Run("RefreshToken_EmptyStringToken", func(t *testing.T) {
|
||||
ts, _, _ := setupTestServer(t)
|
||||
defer ts.Close()
|
||||
setup := setupTestServer(t)
|
||||
|
||||
req := map[string]interface{}{
|
||||
"refresh_token": "",
|
||||
}
|
||||
body, _ := json.Marshal(req)
|
||||
|
||||
httpReq, _ := http.NewRequest("POST", ts.URL+"/api/auth/refresh", bytes.NewBuffer(body))
|
||||
httpReq, _ := http.NewRequest("POST", setup.Server.URL+"/api/auth/refresh", bytes.NewBuffer(body))
|
||||
httpReq.Header.Set("Content-Type", "application/json")
|
||||
|
||||
client := &http.Client{}
|
||||
@@ -289,15 +280,14 @@ func TestRefreshTokenEdgeCases(t *testing.T) {
|
||||
})
|
||||
|
||||
t.Run("RefreshToken_NullToken", func(t *testing.T) {
|
||||
ts, _, _ := setupTestServer(t)
|
||||
defer ts.Close()
|
||||
setup := setupTestServer(t)
|
||||
|
||||
req := map[string]interface{}{
|
||||
"refresh_token": nil,
|
||||
}
|
||||
body, _ := json.Marshal(req)
|
||||
|
||||
httpReq, _ := http.NewRequest("POST", ts.URL+"/api/auth/refresh", bytes.NewBuffer(body))
|
||||
httpReq, _ := http.NewRequest("POST", setup.Server.URL+"/api/auth/refresh", bytes.NewBuffer(body))
|
||||
httpReq.Header.Set("Content-Type", "application/json")
|
||||
|
||||
client := &http.Client{}
|
||||
@@ -309,8 +299,7 @@ func TestRefreshTokenEdgeCases(t *testing.T) {
|
||||
})
|
||||
|
||||
t.Run("RefreshToken_ResponseStructure", func(t *testing.T) {
|
||||
ts, _, _ := setupTestServer(t)
|
||||
defer ts.Close()
|
||||
setup := setupTestServer(t)
|
||||
|
||||
// Login to get tokens
|
||||
loginReq := map[string]string{
|
||||
@@ -319,7 +308,7 @@ func TestRefreshTokenEdgeCases(t *testing.T) {
|
||||
}
|
||||
|
||||
loginBody, _ := json.Marshal(loginReq)
|
||||
loginHTTP, _ := http.NewRequest("POST", ts.URL+"/api/auth/login", bytes.NewBuffer(loginBody))
|
||||
loginHTTP, _ := http.NewRequest("POST", setup.Server.URL+"/api/auth/login", bytes.NewBuffer(loginBody))
|
||||
loginHTTP.Header.Set("Content-Type", "application/json")
|
||||
|
||||
client := &http.Client{}
|
||||
@@ -340,7 +329,7 @@ func TestRefreshTokenEdgeCases(t *testing.T) {
|
||||
}
|
||||
refreshBody, _ := json.Marshal(refreshReq)
|
||||
|
||||
refreshHTTP, _ := http.NewRequest("POST", ts.URL+"/api/auth/refresh", bytes.NewBuffer(refreshBody))
|
||||
refreshHTTP, _ := http.NewRequest("POST", setup.Server.URL+"/api/auth/refresh", bytes.NewBuffer(refreshBody))
|
||||
refreshHTTP.Header.Set("Content-Type", "application/json")
|
||||
|
||||
refreshResp, err := client.Do(refreshHTTP)
|
||||
@@ -361,8 +350,7 @@ func TestRefreshTokenEdgeCases(t *testing.T) {
|
||||
})
|
||||
|
||||
t.Run("RefreshToken_TokenType", func(t *testing.T) {
|
||||
ts, _, _ := setupTestServer(t)
|
||||
defer ts.Close()
|
||||
setup := setupTestServer(t)
|
||||
|
||||
// Login to get tokens
|
||||
loginReq := map[string]string{
|
||||
@@ -371,7 +359,7 @@ func TestRefreshTokenEdgeCases(t *testing.T) {
|
||||
}
|
||||
|
||||
loginBody, _ := json.Marshal(loginReq)
|
||||
loginHTTP, _ := http.NewRequest("POST", ts.URL+"/api/auth/login", bytes.NewBuffer(loginBody))
|
||||
loginHTTP, _ := http.NewRequest("POST", setup.Server.URL+"/api/auth/login", bytes.NewBuffer(loginBody))
|
||||
loginHTTP.Header.Set("Content-Type", "application/json")
|
||||
|
||||
client := &http.Client{}
|
||||
@@ -392,7 +380,7 @@ func TestRefreshTokenEdgeCases(t *testing.T) {
|
||||
}
|
||||
refreshBody, _ := json.Marshal(refreshReq)
|
||||
|
||||
refreshHTTP, _ := http.NewRequest("POST", ts.URL+"/api/auth/refresh", bytes.NewBuffer(refreshBody))
|
||||
refreshHTTP, _ := http.NewRequest("POST", setup.Server.URL+"/api/auth/refresh", bytes.NewBuffer(refreshBody))
|
||||
refreshHTTP.Header.Set("Content-Type", "application/json")
|
||||
|
||||
refreshResp, err := client.Do(refreshHTTP)
|
||||
|
||||
Reference in New Issue
Block a user