- Update Login User.bru to use testuser@example.com - Update Register User.bru to use testuser@example.com - Update Register Admin User.bru to use maxdevices@example.com - Standardize password to Test@Pass123! across all tests - Add TEST_DATA.md documenting shared test credentials - Update bruno.json with documentation reference - Add comments linking to TEST_DATA.md for cross-reference This alignment makes it easier to verify test failures between Bruno API tests and Go integration tests using identical credentials.
91 lines
2.4 KiB
Plaintext
91 lines
2.4 KiB
Plaintext
meta {
|
|
name: Register User
|
|
type: http
|
|
seq: 2
|
|
}
|
|
|
|
post {
|
|
url: {{base_url}}/api/auth/register
|
|
body: json
|
|
auth: inherit
|
|
}
|
|
|
|
body:json {
|
|
{
|
|
"email": "testuser@example.com",
|
|
"username": "testuser",
|
|
"password": "Test@Pass123!",
|
|
"first_name": "Test",
|
|
"last_name": "User"
|
|
}
|
|
}
|
|
|
|
// Test user aligns with Go integration tests
|
|
// See TEST_DATA.md for shared test data documentation
|
|
|
|
script:post-response {
|
|
function onResponse(res) {
|
|
let data = res.getBody();
|
|
// If successful registration, set token environment variable
|
|
if (res.getStatus() === 201 || res.getStatus() === 200) {
|
|
if (data && data.access_token) {
|
|
|
|
return bru.setEnvVar("token", data.access_token, { persist: true });
|
|
}
|
|
}
|
|
}
|
|
onResponse(res);
|
|
}
|
|
|
|
settings {
|
|
encodeUrl: true
|
|
timeout: 0
|
|
}
|
|
|
|
docs {
|
|
## Register User
|
|
|
|
Creates a new user account with role-based restrictions.
|
|
|
|
**Method:** POST
|
|
|
|
**Endpoint:** /api/auth/register
|
|
|
|
**Request Body:**
|
|
- `email` (string): Email address
|
|
- `username` (string): Username
|
|
- `password` (string): Password
|
|
- `first_name` (string, optional): First name
|
|
- `last_name` (string, optional): Last name
|
|
- `role` (string): User role ("user" or "admin")
|
|
|
|
**Response:**
|
|
- `token` (string): JWT token
|
|
- `user` (object): User details
|
|
- `id` (string): User ID
|
|
- `email` (string): Email
|
|
- `username` (string): Username
|
|
- `theme` (string): User theme preference
|
|
- `first_name` (string, optional): First name
|
|
- `last_name` (string, optional): Last name
|
|
- `role` (string): User role ("user" or "admin")
|
|
|
|
**Status Codes:**
|
|
- 201: Created
|
|
- 400: Invalid input data
|
|
- 403: Forbidden - role-based restrictions apply
|
|
- 409: User exists
|
|
|
|
**Role Restrictions:**
|
|
- **First User**: Automatically gets admin role regardless of request
|
|
- **Existing Admins Present**: Only authenticated admins can create new admin accounts
|
|
- **No Admins Yet**: Anyone can create first admin (auto-assigned)
|
|
- **Regular User Creation**: Anyone can create regular user accounts
|
|
- **Unauthenticated Users**: Can only create first admin, not subsequent admins
|
|
|
|
**Examples:**
|
|
- First admin creation: `{"email": "admin@example.com", "username": "admin", "password": "password123", "role": "admin"}`
|
|
- Regular user creation: `{"email": "user@example.com", "username": "user", "password": "password123", "role": "user"}`
|
|
|
|
}
|