Skip to content
Open
Show file tree
Hide file tree
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
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
venv/
__pycache__/
.pytest_cache/
*.pyc
.env
26 changes: 26 additions & 0 deletions main.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel

app = FastAPI()

class User(BaseModel):
id: int
name: str
email: str

users_db = []

@app.get("/")
def health_check():
return {"message": "FastAPI is running successfully"}

@app.post("/users", status_code=201)
def create_user(user: User):
if any(u["id"] == user.id for u in users_db):
raise HTTPException(status_code=400, detail="User already exists")
users_db.append(user.model_dump())
return user

@app.get("/users")
def get_users():
return users_db
Empty file added tests/__init__.py
Empty file.
29 changes: 29 additions & 0 deletions tests/test_users.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
from fastapi.testclient import TestClient
import sys
import os

sys.path.append(os.path.dirname(os.path.dirname(__file__)))

from main import app

client = TestClient(app)

def test_create_user():
response = client.post(
"/users",
json={"id": 1, "name": "Tharun", "email": "tharun@test.com"}
)
assert response.status_code == 201
assert response.json()["name"] == "Tharun"

def test_get_users():
response = client.get("/users")
assert response.status_code == 200
assert isinstance(response.json(), list)

def test_duplicate_user_not_allowed():
response = client.post(
"/users",
json={"id": 1, "name": "Duplicate", "email": "dup@test.com"}
)
assert response.status_code == 400