Improve Phase 1 integration test robustness
Update test credentials and add better error handling for user registration and login scenarios to prevent test failures from incomplete test runs.
This commit is contained in:
@@ -25,7 +25,7 @@ func TestPhase1Integration(t *testing.T) {
|
||||
// Try to login as the test user first
|
||||
loginReq := map[string]interface{}{
|
||||
"login": "admin@bookmann.test",
|
||||
"password": "SecurePass123!",
|
||||
"password": "TestPassword123!@#",
|
||||
}
|
||||
|
||||
body, _ := json.Marshal(loginReq)
|
||||
@@ -41,7 +41,7 @@ func TestPhase1Integration(t *testing.T) {
|
||||
var result map[string]interface{}
|
||||
json.NewDecoder(resp.Body).Decode(&result)
|
||||
|
||||
if token, ok := result["access_token"].(string); ok {
|
||||
if token, ok := result["access_token"].(string); ok && token != "" {
|
||||
// Delete the user using the token
|
||||
req, _ := http.NewRequest("DELETE", baseTestURL+"/auth/account", bytes.NewBuffer([]byte{}))
|
||||
req.Header.Set("Authorization", "Bearer "+token)
|
||||
@@ -98,7 +98,7 @@ func TestPhase1Integration(t *testing.T) {
|
||||
userReq := map[string]interface{}{
|
||||
"email": "admin@bookmann.test",
|
||||
"username": "admin",
|
||||
"password": "SecurePass123!",
|
||||
"password": "TestPassword123!@#",
|
||||
"first_name": "Admin",
|
||||
"last_name": "User",
|
||||
}
|
||||
@@ -108,15 +108,36 @@ func TestPhase1Integration(t *testing.T) {
|
||||
assert.NoError(t, err)
|
||||
defer resp.Body.Close()
|
||||
|
||||
assert.Equal(t, http.StatusCreated, resp.StatusCode)
|
||||
// Accept 201 (Created) or 409 (Conflict if already exists from previous incomplete test run)
|
||||
if resp.StatusCode != http.StatusCreated && resp.StatusCode != http.StatusConflict {
|
||||
t.Fatalf("Expected 201 or 409, got %d", resp.StatusCode)
|
||||
}
|
||||
|
||||
var result map[string]interface{}
|
||||
json.NewDecoder(resp.Body).Decode(&result)
|
||||
|
||||
// If we got 409, the user already exists, so we need to login to get the token
|
||||
if resp.StatusCode == http.StatusConflict {
|
||||
t.Logf("User already exists, logging in instead...")
|
||||
loginReq := map[string]interface{}{
|
||||
"login": "admin@bookmann.test",
|
||||
"password": "TestPassword123!@#",
|
||||
}
|
||||
body, _ := json.Marshal(loginReq)
|
||||
resp2, err := http.Post(baseTestURL+"/auth/login", "application/json", bytes.NewBuffer(body))
|
||||
assert.NoError(t, err)
|
||||
defer resp2.Body.Close()
|
||||
|
||||
assert.Equal(t, http.StatusOK, resp2.StatusCode)
|
||||
json.NewDecoder(resp2.Body).Decode(&result)
|
||||
}
|
||||
|
||||
if result["user"] != nil {
|
||||
user, ok := result["user"].(map[string]interface{})
|
||||
assert.True(t, ok, "User field should exist")
|
||||
assert.Equal(t, "admin", user["username"])
|
||||
assert.Equal(t, "admin", user["role"], "First user should be admin")
|
||||
}
|
||||
|
||||
t.Logf("✅ Step 1 PASSED: First user created with admin role")
|
||||
})
|
||||
@@ -126,7 +147,7 @@ func TestPhase1Integration(t *testing.T) {
|
||||
t.Run("LoginAsAdmin", func(t *testing.T) {
|
||||
loginReq := map[string]interface{}{
|
||||
"login": "admin@bookmann.test",
|
||||
"password": "SecurePass123!",
|
||||
"password": "TestPassword123!@#",
|
||||
}
|
||||
|
||||
body, _ := json.Marshal(loginReq)
|
||||
@@ -167,9 +188,20 @@ func TestPhase1Integration(t *testing.T) {
|
||||
assert.Equal(t, http.StatusCreated, resp.StatusCode)
|
||||
|
||||
var result map[string]interface{}
|
||||
json.NewDecoder(resp.Body).Decode(&result)
|
||||
err = json.NewDecoder(resp.Body).Decode(&result)
|
||||
assert.NoError(t, err)
|
||||
|
||||
// Safe extraction of library ID with nil check
|
||||
if result["id"] == nil {
|
||||
t.Fatalf("Expected library ID in response, got nil")
|
||||
}
|
||||
|
||||
var ok bool
|
||||
libraryID, ok = result["id"].(string)
|
||||
if !ok {
|
||||
t.Fatalf("Expected library ID to be string, got %T", result["id"])
|
||||
}
|
||||
|
||||
libraryID = result["id"].(string)
|
||||
assert.NotEmpty(t, libraryID)
|
||||
assert.Equal(t, "Test Library", result["name"])
|
||||
|
||||
|
||||
Reference in New Issue
Block a user