NMPhap commited on
Commit
206aa5a
1 Parent(s): c5fcb51

<Test>: Add test on main.py

Browse files
app/constants.py CHANGED
@@ -166,3 +166,5 @@ classNames = [
166
  "hair drier",
167
  "toothbrush",
168
  ]
 
 
 
166
  "hair drier",
167
  "toothbrush",
168
  ]
169
+
170
+ test_uid = "VAbtgG1IrWSOqoJgxe7u2yEqpIg2"
app/dependencies.py CHANGED
@@ -13,7 +13,7 @@ async def get_current_user(
13
  credentials_exception = HTTPException(
14
  status_code=status.HTTP_401_UNAUTHORIZED,
15
  detail="Could not validate credentials",
16
- headers={"WWW-Authenticate": "Bearer"},
17
  )
18
  try:
19
  payload = auth.verify_id_token(credentials.credentials)
 
13
  credentials_exception = HTTPException(
14
  status_code=status.HTTP_401_UNAUTHORIZED,
15
  detail="Could not validate credentials",
16
+ headers={"WWW-Authenticate": "Bearer "},
17
  )
18
  try:
19
  payload = auth.verify_id_token(credentials.credentials)
app/main.py CHANGED
@@ -12,7 +12,7 @@ app.include_router(image.router)
12
  app.include_router(video.router)
13
 
14
 
15
- @app.get("/login")
16
  def getProfile(current_user: Annotated[any, Depends(get_current_user)]):
17
  return current_user
18
 
 
12
  app.include_router(video.router)
13
 
14
 
15
+ @app.get("/me")
16
  def getProfile(current_user: Annotated[any, Depends(get_current_user)]):
17
  return current_user
18
 
app/requirements.txt CHANGED
@@ -10,3 +10,4 @@ supabase==1.0.4
10
  uvicorn==0.23.2
11
  python-multipart==0.0.6
12
  firebase_admin==6.2.0
 
 
10
  uvicorn==0.23.2
11
  python-multipart==0.0.6
12
  firebase_admin==6.2.0
13
+ pytest
app/routers/test_image.py CHANGED
@@ -5,12 +5,19 @@ from app.routers.image import inferenceImage
5
  import pytest
6
  import pytest
7
  from fastapi.testclient import TestClient
 
8
  from app.main import app
9
-
 
 
 
 
 
10
  @pytest.fixture
11
  def client():
12
  client = TestClient(app, "http://0.0.0.0:3000")
13
  yield client
 
14
  class TestImageRoute():
15
  img = mmcv.imread('demo.jpg')
16
  url = "http://0.0.0.0:3000/image"
 
5
  import pytest
6
  import pytest
7
  from fastapi.testclient import TestClient
8
+ from fastapi.routing import APIRoute
9
  from app.main import app
10
+ def endpoints():
11
+ endpoints = []
12
+ for route in app.routes:
13
+ if isinstance(route, APIRoute):
14
+ endpoints.append(route.path)
15
+ return endpoints
16
  @pytest.fixture
17
  def client():
18
  client = TestClient(app, "http://0.0.0.0:3000")
19
  yield client
20
+ @pytest.mark.skipif("/image" not in endpoints(), reason="Route not defined")
21
  class TestImageRoute():
22
  img = mmcv.imread('demo.jpg')
23
  url = "http://0.0.0.0:3000/image"
app/test_main.py ADDED
@@ -0,0 +1,82 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from fastapi.testclient import TestClient
2
+ import mmcv
3
+ from app.main import app
4
+ import pytest
5
+ import json
6
+ import os
7
+ import site
8
+ import shutil
9
+ from fastapi.routing import APIRoute
10
+ from app import firebase_app
11
+ from firebase_admin import firestore
12
+ def get_site_packages():
13
+ # Get the list of directories
14
+ site_packages_dirs = site.getsitepackages()
15
+
16
+ # Find the "site-packages" directory in the list
17
+ for dir in site_packages_dirs:
18
+ if dir.endswith("site-packages"):
19
+ target_dir = dir
20
+ break
21
+ else:
22
+ target_dir=None
23
+ return target_dir
24
+
25
+ def endpoints():
26
+ endpoints = []
27
+ for route in app.routes:
28
+ if isinstance(route, APIRoute):
29
+ endpoints.append(route.path)
30
+ return endpoints
31
+ @pytest.fixture(autouse=True)
32
+ def modify_mmcv_image():
33
+ site_packages_path = get_site_packages()
34
+ dirList = os.listdir(site_packages_path)
35
+ if "mmcv" in dirList:
36
+ shutil.copyfile("libs/image.py", os.path.join(site_packages_path, "mmcv/visualization/image.py"))
37
+ else:
38
+ pytest.exit('Error: Cannot modified mmcv.Image')
39
+
40
+ @pytest.fixture
41
+ def client():
42
+ client = TestClient(app, "http://0.0.0.0:3000")
43
+ yield client
44
+ @pytest.fixture
45
+ def token():
46
+ token = ""
47
+ yield token
48
+ class TestFireBaseAPI():
49
+ def test_get_me(self, client, token):
50
+ if "/me" not in endpoints():
51
+ pytest.skip("This route isn't defined")
52
+ else:
53
+ if token != "":
54
+ payload = ""
55
+ headers = {
56
+ 'accept': 'application/json',
57
+ "Authorization":"Bearer " + token
58
+ }
59
+ response = client.request("get", 'me', headers=headers, data=payload)
60
+ assert response.status_code == 200
61
+ payload = ""
62
+ headers = {
63
+ 'accept': 'application/json',
64
+ 'Content-Type': 'application/json',
65
+ }
66
+ response = client.request("get", 'me', headers=headers, data=payload)
67
+ assert response.status_code == 403
68
+ def test_invitation(self,client, token):
69
+ if"/invitation" not in endpoints():
70
+ pytest.skip("This route isn't defined")
71
+ else:
72
+ payload = ''
73
+ headers = {
74
+ 'accept': 'application/json',
75
+ 'Content-Type': 'application/json',
76
+ "Authorization": "Bearer " + token
77
+ }
78
+ response = client.request("post", 'invitation', headers=headers, data=payload)
79
+ assert response.status_code == 200
80
+ result = mmcv.imfrombytes(response.read())
81
+ assert result.shape[0] == 3
82
+