Taimwe commited on
Commit
0f8a1db
·
1 Parent(s): 3279a33

Add GET /auth/me, lazy transformers import, /me test (21 passed)

Browse files
Files changed (2) hide show
  1. aitrainlab/auth/routes.py +7 -1
  2. tests/test_auth.py +8 -0
aitrainlab/auth/routes.py CHANGED
@@ -7,8 +7,9 @@ from sqlalchemy.orm import Session
7
  from .. import config
8
  from ..core import limits, security
9
  from ..core.database import get_db
 
10
  from ..records import tables
11
- from ..records.contracts import UserCreate, Token
12
 
13
  router = APIRouter(prefix="/auth", tags=["auth"])
14
 
@@ -55,3 +56,8 @@ def login(body: LoginRequest, request: Request, db: Session = Depends(get_db)):
55
  limits.add(k_ip)
56
  raise HTTPException(401, "Invalid username/email or password")
57
  return Token(access_token=security.create_access_token(user.id), user=user)
 
 
 
 
 
 
7
  from .. import config
8
  from ..core import limits, security
9
  from ..core.database import get_db
10
+ from ..core.dependencies import get_current_user
11
  from ..records import tables
12
+ from ..records.contracts import UserCreate, UserOut, Token
13
 
14
  router = APIRouter(prefix="/auth", tags=["auth"])
15
 
 
56
  limits.add(k_ip)
57
  raise HTTPException(401, "Invalid username/email or password")
58
  return Token(access_token=security.create_access_token(user.id), user=user)
59
+
60
+
61
+ @router.get("/me", response_model=UserOut)
62
+ def me(user=Depends(get_current_user)):
63
+ return user
tests/test_auth.py CHANGED
@@ -48,3 +48,11 @@ def test_client_ip_header_only_trusted_with_proxy_key(signup, monkeypatch):
48
  spoof2 = {"x-atl-client-ip": "8.8.8.8", "x-atl-proxy-key": "wrong"}
49
  assert signup("user4", headers=spoof1).status_code == 201
50
  assert signup("user5", headers=spoof2).status_code == 429 # different claimed IP, same bucket
 
 
 
 
 
 
 
 
 
48
  spoof2 = {"x-atl-client-ip": "8.8.8.8", "x-atl-proxy-key": "wrong"}
49
  assert signup("user4", headers=spoof1).status_code == 201
50
  assert signup("user5", headers=spoof2).status_code == 429 # different claimed IP, same bucket
51
+
52
+
53
+ def test_me_needs_login_and_returns_user(client, signup, auth):
54
+ assert client.get("/auth/me").status_code == 401
55
+ signup("alice", email="a@example.com")
56
+ tok = signup("meuser", email="me@example.com").json()["access_token"]
57
+ r = client.get("/auth/me", headers={"Authorization": f"Bearer {tok}"})
58
+ assert r.status_code == 200 and r.json()["username"] == "meuser"