Coverage for tests/test_tutorial/test_websockets/test_tutorial002_an.py: 100%
69 statements
« prev ^ index » next coverage.py v7.6.1, created at 2025-01-13 13:38 +0000
« prev ^ index » next coverage.py v7.6.1, created at 2025-01-13 13:38 +0000
1import pytest 1pqrst
2from fastapi.testclient import TestClient 1pqrst
3from fastapi.websockets import WebSocketDisconnect 1pqrst
5from docs_src.websockets.tutorial002_an import app 1pqrst
8def test_main(): 1pqrst
9 client = TestClient(app) 1uvwxy
10 response = client.get("/") 1uvwxy
11 assert response.status_code == 200, response.text 1uvwxy
12 assert b"<!DOCTYPE html>" in response.content 1uvwxy
15def test_websocket_with_cookie(): 1pqrst
16 client = TestClient(app, cookies={"session": "fakesession"}) 1fghij
17 with pytest.raises(WebSocketDisconnect): 1fghij
18 with client.websocket_connect("/items/foo/ws") as websocket: 1fghij
19 message = "Message one" 1fghij
20 websocket.send_text(message) 1fghij
21 data = websocket.receive_text() 1fghij
22 assert data == "Session cookie or query token value is: fakesession" 1fghij
23 data = websocket.receive_text() 1fghij
24 assert data == f"Message text was: {message}, for item ID: foo" 1fghij
25 message = "Message two" 1fghij
26 websocket.send_text(message) 1fghij
27 data = websocket.receive_text() 1fghij
28 assert data == "Session cookie or query token value is: fakesession" 1fghij
29 data = websocket.receive_text() 1fghij
30 assert data == f"Message text was: {message}, for item ID: foo" 1fghij
33def test_websocket_with_header(): 1pqrst
34 client = TestClient(app) 1klmno
35 with pytest.raises(WebSocketDisconnect): 1klmno
36 with client.websocket_connect("/items/bar/ws?token=some-token") as websocket: 1klmno
37 message = "Message one" 1klmno
38 websocket.send_text(message) 1klmno
39 data = websocket.receive_text() 1klmno
40 assert data == "Session cookie or query token value is: some-token" 1klmno
41 data = websocket.receive_text() 1klmno
42 assert data == f"Message text was: {message}, for item ID: bar" 1klmno
43 message = "Message two" 1klmno
44 websocket.send_text(message) 1klmno
45 data = websocket.receive_text() 1klmno
46 assert data == "Session cookie or query token value is: some-token" 1klmno
47 data = websocket.receive_text() 1klmno
48 assert data == f"Message text was: {message}, for item ID: bar" 1klmno
51def test_websocket_with_header_and_query(): 1pqrst
52 client = TestClient(app) 1abcde
53 with pytest.raises(WebSocketDisconnect): 1abcde
54 with client.websocket_connect("/items/2/ws?q=3&token=some-token") as websocket: 1abcde
55 message = "Message one" 1abcde
56 websocket.send_text(message) 1abcde
57 data = websocket.receive_text() 1abcde
58 assert data == "Session cookie or query token value is: some-token" 1abcde
59 data = websocket.receive_text() 1abcde
60 assert data == "Query parameter q is: 3" 1abcde
61 data = websocket.receive_text() 1abcde
62 assert data == f"Message text was: {message}, for item ID: 2" 1abcde
63 message = "Message two" 1abcde
64 websocket.send_text(message) 1abcde
65 data = websocket.receive_text() 1abcde
66 assert data == "Session cookie or query token value is: some-token" 1abcde
67 data = websocket.receive_text() 1abcde
68 assert data == "Query parameter q is: 3" 1abcde
69 data = websocket.receive_text() 1abcde
70 assert data == f"Message text was: {message}, for item ID: 2" 1abcde
73def test_websocket_no_credentials(): 1pqrst
74 client = TestClient(app) 1BzCDE
75 with pytest.raises(WebSocketDisconnect): 1BzCDE
76 with client.websocket_connect("/items/foo/ws"): 1BzCDE
77 pytest.fail( 1z
78 "did not raise WebSocketDisconnect on __enter__"
79 ) # pragma: no cover
82def test_websocket_invalid_data(): 1pqrst
83 client = TestClient(app) 1FAGHI
84 with pytest.raises(WebSocketDisconnect): 1FAGHI
85 with client.websocket_connect("/items/foo/ws?q=bar&token=some-token"): 1FAGHI
86 pytest.fail( 1A
87 "did not raise WebSocketDisconnect on __enter__"
88 ) # pragma: no cover