Skip to content

Commit 1ec22f1

Browse files
committed
new test on depedency
1 parent 6ea9dc0 commit 1ec22f1

File tree

1 file changed

+44
-2
lines changed

1 file changed

+44
-2
lines changed

services/api-server/tests/unit/_with_db/test_repository_api_keys.py

Lines changed: 44 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,19 +7,37 @@
77

88
import httpx
99
import pytest
10+
from fastapi.security import HTTPBasicCredentials
1011
from models_library.api_schemas_api_server.api_keys import ApiKeyInDB
1112
from pydantic import PositiveInt
13+
from simcore_service_api_server.api.dependencies.authentication import (
14+
get_current_identity,
15+
)
1216
from simcore_service_api_server.repository.api_keys import ApiKeysRepository
17+
from simcore_service_api_server.repository.users import UsersRepository
1318
from sqlalchemy.ext.asyncio import AsyncEngine
1419

1520

1621
@pytest.fixture
17-
def api_key_repo(
22+
def async_engine_after_app_started(
1823
client: httpx.AsyncClient, # ensures app context is available
1924
async_engine: AsyncEngine,
25+
) -> AsyncEngine:
26+
return async_engine
27+
28+
29+
@pytest.fixture
30+
def api_key_repo(
31+
async_engine_after_app_started: AsyncEngine,
2032
) -> ApiKeysRepository:
33+
return ApiKeysRepository(db_engine=async_engine_after_app_started)
34+
2135

22-
return ApiKeysRepository(db_engine=async_engine)
36+
@pytest.fixture
37+
def users_repo(
38+
async_engine_after_app_started: AsyncEngine,
39+
) -> UsersRepository:
40+
return UsersRepository(db_engine=async_engine_after_app_started)
2341

2442

2543
async def test_get_user_with_valid_credentials(
@@ -56,3 +74,27 @@ async def test_get_user_with_invalid_credentials(
5674
# Assert
5775
assert result is None
5876
break
77+
78+
79+
async def test_rest_dependency_authentication(
80+
api_key_repo: ApiKeysRepository,
81+
users_repo: UsersRepository,
82+
create_fake_api_keys: Callable[[PositiveInt], AsyncGenerator[ApiKeyInDB, None]],
83+
):
84+
85+
# Generate a fake API key
86+
async for api_key_in_db in create_fake_api_keys(1):
87+
# Act
88+
result = await get_current_identity(
89+
apikeys_repo=api_key_repo,
90+
users_repo=users_repo,
91+
credentials=HTTPBasicCredentials(
92+
username=api_key_in_db.api_key, password=api_key_in_db.api_secret
93+
),
94+
)
95+
96+
# Assert
97+
assert result is not None
98+
assert result.user_id == api_key_in_db.user_id
99+
assert result.product_name == api_key_in_db.product_name
100+
break

0 commit comments

Comments
 (0)