Coverage for tests/test_tutorial/test_cors/test_tutorial001.py: 100%

19 statements  

« prev     ^ index     » next       coverage.py v7.6.1, created at 2025-12-04 08:29 +0000

1from fastapi.testclient import TestClient 1hijklmn

2 

3from docs_src.cors.tutorial001 import app 1hijklmn

4 

5 

6def test_cors(): 1hijklmn

7 client = TestClient(app) 1abcdefg

8 # Test pre-flight response 

9 headers = { 1abcdefg

10 "Origin": "https://localhost.tiangolo.com", 

11 "Access-Control-Request-Method": "GET", 

12 "Access-Control-Request-Headers": "X-Example", 

13 } 

14 response = client.options("/", headers=headers) 1abcdefg

15 assert response.status_code == 200, response.text 1abcdefg

16 assert response.text == "OK" 1abcdefg

17 assert ( 1abcdefg

18 response.headers["access-control-allow-origin"] 

19 == "https://localhost.tiangolo.com" 

20 ) 

21 assert response.headers["access-control-allow-headers"] == "X-Example" 1abcdefg

22 

23 # Test standard response 

24 headers = {"Origin": "https://localhost.tiangolo.com"} 1abcdefg

25 response = client.get("/", headers=headers) 1abcdefg

26 assert response.status_code == 200, response.text 1abcdefg

27 assert response.json() == {"message": "Hello World"} 1abcdefg

28 assert ( 1abcdefg

29 response.headers["access-control-allow-origin"] 

30 == "https://localhost.tiangolo.com" 

31 ) 

32 

33 # Test non-CORS response 

34 response = client.get("/") 1abcdefg

35 assert response.status_code == 200, response.text 1abcdefg

36 assert response.json() == {"message": "Hello World"} 1abcdefg

37 assert "access-control-allow-origin" not in response.headers 1abcdefg