3.1 KiB
🧪 Test Users & Data Scenarios - GoHorseJobs
When running the platform locally (via start.sh) or on the DEV server (local.gohorsejobs.com), the seeder-api provisions a rich set of test accounts representing distinct personas.
All accounts use the exact same password to simplify development.
Universal Test Password: Admin@2025!
👥 Core Personas (The "Golden" Accounts)
These are the primary accounts you should use for daily development and E2E testing.
| Role | Identifier (Username) | Purpose | |
|---|---|---|---|
| Superadmin | lol |
lol@gohorsejobs.com |
Complete system access. Bypass company walls. Manage features. |
| Superadmin | superadmin |
admin@gohorsejobs.com |
Secondary global admin. |
| Admin | admin |
moderator@gohorsejobs.com |
Reviews pending companies/jobs in backoffice. |
| Recruiter | recruiter |
hr@techcorp.com |
Posts jobs, manages applicants for "TechCorp" (Company ID: 1). |
| Recruiter | jane_hr |
jane.doe@startup.io |
Recruiter for a pending/unapproved company to test gating. |
| Candidate | candidate |
carlos.dev@gmail.com |
Standard job seeker. Pre-filled resume and skills. Has 3 active applications. |
| Candidate | newbie |
new.user@hotmail.com |
Fresh account with 0 applications and empty profile to test onboarding flows. |
🏢 Auto-Generated Companies & Jobs
The DB seeder simulates a healthy marketplace.
If you run npm run seed:lite, the DB receives:
- 50 Companies: Ranging from "TechCorp" (Active) to "SuspiciousLTDA" (Pending/Rejected).
- 100 Jobs: Distributed among the active companies. Various statuses (
published,draft,closed). - 200 Applications: Dummy candidates applying to random jobs, in varied pipelines (
pending,reviewing,accepted).
🚨 Login & Auth "Gotchas"
1. Invalid Credentials Right After Fresh Seed
If you completely reset the DB using start.sh (Option 6) or manually clear Postgres, and your first login returns "Invalid credentials", do not panic and do not manually change the DB hash.
- Cause: The Node.js seeder calculates the bcrypt hash using an environment variable called
PASSWORD_PEPPER(gohorse-pepper). If this variable was empty or mismatched with the Backend API, the hash is physically wrong. - Fix: Ensure your
.envfiles in bothbackendandseeder-apicontainPASSWORD_PEPPER=gohorse-pepper. Then simply runcd seeder-api && npm run seedagain to fix the hashes.
2. Login Payload Fields
The frontend sends:
{
"email": "lol",
"password": "..."
}
Important: Even though the frontend passes the username lol, the JSON key must be "email". The Go backend natively handles resolving "email" against the identifier OR email database columns.
3. Account Status Flags
The users table has an is_active boolean. If a user is manually deactivated by an admin, the login endpoint will return a generic 401 Unauthorized (or specific Account Locked error depending on the exact route version) to prevent user enumeration.