Files
pic/tests/e2e/helpers/api_client.py
T
roof 2b29938a64
Unit Tests / test (push) Successful in 11m22s
fix: set CSRF token in PicAPIClient after login
POST requests from PicAPIClient were failing with 403 (CSRF token missing)
because the login response csrf_token was not being applied to subsequent
request headers.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-06 05:05:08 -04:00

29 lines
1.0 KiB
Python

import requests
class PicAPIClient:
def __init__(self, base_url: str):
self.base = base_url
self.s = requests.Session()
self.s.headers['Content-Type'] = 'application/json'
def login(self, username: str, password: str) -> dict:
r = self.s.post(f"{self.base}/api/auth/login", json={'username': username, 'password': password})
r.raise_for_status()
data = r.json()
csrf = data.get('csrf_token', '')
if csrf:
self.s.headers['X-CSRF-Token'] = csrf
return data
def logout(self):
self.s.post(f"{self.base}/api/auth/logout")
def me(self) -> dict:
return self.s.get(f"{self.base}/api/auth/me").json()
def get(self, path, **kw): return self.s.get(f"{self.base}{path}", **kw)
def post(self, path, **kw): return self.s.post(f"{self.base}{path}", **kw)
def put(self, path, **kw): return self.s.put(f"{self.base}{path}", **kw)
def delete(self, path, **kw): return self.s.delete(f"{self.base}{path}", **kw)