mirror of https://github.com/tiangolo/fastapi.git
Refactor test script with `auto_error=False` case.
This commit is contained in:
parent
cb368d439b
commit
293c181031
|
|
@ -1,8 +1,6 @@
|
|||
import pytest
|
||||
from fastapi import FastAPI, Security, WebSocket
|
||||
from fastapi import FastAPI, Security
|
||||
from fastapi.security.http import HTTPAuthorizationCredentials, HTTPBase
|
||||
from fastapi.testclient import TestClient
|
||||
from starlette.websockets import WebSocketDisconnect
|
||||
|
||||
app = FastAPI()
|
||||
|
||||
|
|
@ -14,16 +12,6 @@ def read_current_user(credentials: HTTPAuthorizationCredentials = Security(secur
|
|||
return {"scheme": credentials.scheme, "credentials": credentials.credentials}
|
||||
|
||||
|
||||
@app.websocket("/users/timeline")
|
||||
async def read_user_timeline(
|
||||
websocket: WebSocket, credentials: HTTPAuthorizationCredentials = Security(security)
|
||||
):
|
||||
await websocket.accept()
|
||||
await websocket.send_json(
|
||||
{"scheme": credentials.scheme, "credentials": credentials.credentials}
|
||||
)
|
||||
|
||||
|
||||
client = TestClient(app)
|
||||
|
||||
|
||||
|
|
@ -39,21 +27,6 @@ def test_security_http_base_no_credentials():
|
|||
assert response.json() == {"detail": "Not authenticated"}
|
||||
|
||||
|
||||
def test_security_http_base_with_ws():
|
||||
with client.websocket_connect(
|
||||
"/users/timeline", headers={"Authorization": "Other foobar"}
|
||||
) as websocket:
|
||||
data = websocket.receive_json()
|
||||
assert data == {"scheme": "Other", "credentials": "foobar"}
|
||||
|
||||
|
||||
def test_security_http_base_with_ws_no_credentials():
|
||||
with pytest.raises(WebSocketDisconnect) as e:
|
||||
with client.websocket_connect("/users/timeline"):
|
||||
pass
|
||||
assert e.value.reason == "Not authenticated"
|
||||
|
||||
|
||||
def test_openapi_schema():
|
||||
response = client.get("/openapi.json")
|
||||
assert response.status_code == 200, response.text
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
from typing import Optional
|
||||
|
||||
from fastapi import FastAPI, Security
|
||||
from fastapi import FastAPI, Security, WebSocket
|
||||
from fastapi.security.http import HTTPAuthorizationCredentials, HTTPBase
|
||||
from fastapi.testclient import TestClient
|
||||
|
||||
|
|
@ -18,6 +18,19 @@ def read_current_user(
|
|||
return {"scheme": credentials.scheme, "credentials": credentials.credentials}
|
||||
|
||||
|
||||
@app.websocket("/users/timeline")
|
||||
async def read_user_timeline(
|
||||
websocket: WebSocket,
|
||||
credentials: Optional[HTTPAuthorizationCredentials] = Security(security),
|
||||
):
|
||||
await websocket.accept()
|
||||
await websocket.send_json(
|
||||
{"scheme": credentials.scheme, "credentials": credentials.credentials}
|
||||
if credentials
|
||||
else {"msg": "Create an account first"}
|
||||
)
|
||||
|
||||
|
||||
client = TestClient(app)
|
||||
|
||||
|
||||
|
|
@ -33,6 +46,20 @@ def test_security_http_base_no_credentials():
|
|||
assert response.json() == {"msg": "Create an account first"}
|
||||
|
||||
|
||||
def test_security_http_base_with_ws():
|
||||
with client.websocket_connect(
|
||||
"/users/timeline", headers={"Authorization": "Other foobar"}
|
||||
) as websocket:
|
||||
data = websocket.receive_json()
|
||||
assert data == {"scheme": "Other", "credentials": "foobar"}
|
||||
|
||||
|
||||
def test_security_http_base_with_ws_no_credentials():
|
||||
with client.websocket_connect("/users/timeline") as websocket:
|
||||
data = websocket.receive_json()
|
||||
assert data == {"msg": "Create an account first"}
|
||||
|
||||
|
||||
def test_openapi_schema():
|
||||
response = client.get("/openapi.json")
|
||||
assert response.status_code == 200, response.text
|
||||
|
|
|
|||
Loading…
Reference in New Issue