gohorsejobs/backend/tests/integration/jobs_integration_test.go

71 lines
1.8 KiB
Go

//go:build integration
// +build integration
package integration
import (
"net/http"
"testing"
)
func TestIntegration_Jobs(t *testing.T) {
client := newTestClient()
companyID, userID := setupTestCompanyAndUser(t)
defer cleanupTestData() // Clean up after test
t.Run("Create Job - Unauthorized", func(t *testing.T) {
client.setAuthToken("")
resp, err := client.post("/api/v1/jobs", map[string]interface{}{
"title": "Unauthorized Job",
})
if err != nil {
t.Fatalf("Request failed: %v", err)
}
defer resp.Body.Close()
if resp.StatusCode != http.StatusUnauthorized {
t.Errorf("Expected 401, got %d", resp.StatusCode)
}
})
t.Run("Create Job - Authorized", func(t *testing.T) {
token := createAuthToken(t, userID, companyID, []string{"admin"})
client.setAuthToken(token)
jobPayload := map[string]interface{}{
"companyId": companyID,
"title": "Integration Test Job",
"description": "A job created by integration test with sufficient length",
"salaryMin": 5000,
"salaryMax": 8000,
"salaryType": "monthly",
"employmentType": "full-time",
"workingHours": "flexible",
"location": "Remote",
"status": "published",
}
resp, err := client.post("/api/v1/jobs", jobPayload)
if err != nil {
t.Fatalf("Request failed: %v", err)
}
defer resp.Body.Close()
if resp.StatusCode != http.StatusCreated && resp.StatusCode != http.StatusOK {
t.Errorf("Expected 201/200, got %d", resp.StatusCode)
}
})
t.Run("List Jobs - Public", func(t *testing.T) {
client.setAuthToken("")
resp, err := client.get("/api/v1/jobs?limit=10")
if err != nil {
t.Fatalf("Request failed: %v", err)
}
defer resp.Body.Close()
if resp.StatusCode != http.StatusOK {
t.Errorf("Expected 200, got %d", resp.StatusCode)
}
})
}