Skip to content
This repository was archived by the owner on Feb 22, 2026. It is now read-only.
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
75 changes: 75 additions & 0 deletions py-be/tests/test_reg.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
"""Integration tests for the POST /reg registration endpoint."""

from app.models.base import User


def test_register_user_success(db_session, client):
payload = {"username": "newuser", "email": "newuser@example.com", "password": "secret123"}
res = client.post("/reg", json=payload)
assert res.status_code == 201
data = res.json()
assert "id" in data and isinstance(data["id"], int)

# Ensure DB persistence
user = db_session.query(User).filter_by(id=data["id"]).first()
assert user is not None
assert user.username == "newuser"
assert user.email == "newuser@example.com"


def test_register_user_missing_fields(client):
# Missing password
res = client.post("/reg", json={"username": "x", "email": "x@example.com"})
assert res.status_code == 422

# Missing email
res = client.post("/reg", json={"username": "x", "password": "p"})
assert res.status_code == 422

# Missing username
res = client.post("/reg", json={"email": "x@example.com", "password": "p"})
assert res.status_code == 422


def test_register_user_invalid_email(client):
res = client.post(
"/reg", json={"username": "bademail", "email": "not-an-email", "password": "p"}
)
# Pydantic EmailStr should reject invalid email with 422
assert res.status_code == 422


def test_register_user_duplicate_username(db_session, client):
# Create initial user
res = client.post(
"/reg",
json={"username": "dupuser", "email": "dup1@example.com", "password": "p"},
)
assert res.status_code == 201

# Attempt duplicate username with different email
res = client.post(
"/reg",
json={"username": "dupuser", "email": "dup2@example.com", "password": "p"},
)
assert res.status_code == 400
assert res.json()["detail"] == "User with this username or email already exists"


def test_register_user_duplicate_email(db_session, client):
# Create initial user
res = client.post(
"/reg",
json={"username": "u1", "email": "dup@example.com", "password": "p"},
)
assert res.status_code == 201

# Attempt duplicate email with different username
res = client.post(
"/reg",
json={"username": "u2", "email": "dup@example.com", "password": "p"},
)
assert res.status_code == 400
assert res.json()["detail"] == "User with this username or email already exists"


Loading