Coverage for docs_src/app_testing/app_b_py310/main.py: 100%

24 statements  

« prev     ^ index     » next       coverage.py v7.6.1, created at 2025-05-05 00:03 +0000

1from fastapi import FastAPI, Header, HTTPException 1abcd

2from pydantic import BaseModel 1abcd

3 

4fake_secret_token = "coneofsilence" 1abcd

5 

6fake_db = { 1abcd

7 "foo": {"id": "foo", "title": "Foo", "description": "There goes my hero"}, 

8 "bar": {"id": "bar", "title": "Bar", "description": "The bartenders"}, 

9} 

10 

11app = FastAPI() 1abcd

12 

13 

14class Item(BaseModel): 1abcd

15 id: str 1abcd

16 title: str 1abcd

17 description: str | None = None 1abcd

18 

19 

20@app.get("/items/{item_id}", response_model=Item) 1abcd

21async def read_main(item_id: str, x_token: str = Header()): 1abcd

22 if x_token != fake_secret_token: 1efgh

23 raise HTTPException(status_code=400, detail="Invalid X-Token header") 1efgh

24 if item_id not in fake_db: 1efgh

25 raise HTTPException(status_code=404, detail="Item not found") 1efgh

26 return fake_db[item_id] 1efgh

27 

28 

29@app.post("/items/", response_model=Item) 1abcd

30async def create_item(item: Item, x_token: str = Header()): 1abcd

31 if x_token != fake_secret_token: 1efgh

32 raise HTTPException(status_code=400, detail="Invalid X-Token header") 1efgh

33 if item.id in fake_db: 1efgh

34 raise HTTPException(status_code=409, detail="Item already exists") 1efgh

35 fake_db[item.id] = item 1efgh

36 return item 1efgh