feat: revamp authentication -- remove twitch's tokens from our own wrapper token
This commit is contained in:
parent
3186afe96d
commit
50900986fa
31 changed files with 736 additions and 155 deletions
|
|
@ -5,7 +5,7 @@ from caribou.migrate import Database as CaribouDatabase
|
|||
from caribou.migrate import load_migrations
|
||||
|
||||
from src.huesoporro.infra.db import Database
|
||||
from src.huesoporro.models import ChatbotSettings, TwitchAuth, User
|
||||
from src.huesoporro.models import ChatbotSettings, User
|
||||
from src.huesoporro.settings import Settings
|
||||
from src.huesoporro.svc.backoff_service import BackoffService
|
||||
from src.huesoporro.svc.is_mod import IsModSvc
|
||||
|
|
@ -15,11 +15,10 @@ from src.huesoporro.svc.is_mod import IsModSvc
|
|||
def user() -> User:
|
||||
return User(
|
||||
user="huesoporro",
|
||||
expires_at=1671234567.0,
|
||||
twitch_auth=TwitchAuth(
|
||||
access_token="test_access_token", # noqa: S106
|
||||
refresh_token="test_refresh_token", # noqa: S106
|
||||
),
|
||||
external_auth={
|
||||
"twitch": {"token": "twitch_token"},
|
||||
"discord": {"token": "discord_token"},
|
||||
},
|
||||
)
|
||||
|
||||
|
||||
|
|
|
|||
53
tests/test_repos.py
Normal file
53
tests/test_repos.py
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
import json
|
||||
|
||||
import pytest
|
||||
|
||||
from src.huesoporro.infra.repos import UserRepo
|
||||
from src.huesoporro.models import User
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
async def user_repo(s, db, user: User):
|
||||
async with db.get_client() as client:
|
||||
await client.execute(
|
||||
"INSERT INTO users (user, external_auth) VALUES (?, ?)",
|
||||
(user.user, json.dumps(user.external_auth)),
|
||||
)
|
||||
|
||||
return UserRepo(s=s)
|
||||
|
||||
|
||||
async def test_get_user(user_repo: UserRepo, user: User):
|
||||
db_user = await user_repo.get_by_user(user.user)
|
||||
assert db_user == user
|
||||
|
||||
|
||||
async def test_get_user_returns_none(user_repo: UserRepo):
|
||||
assert await user_repo.get_by_user("unknown_user") is None
|
||||
|
||||
|
||||
async def test_create_user(user_repo: UserRepo):
|
||||
new_user = User(
|
||||
user="new_user", external_auth={"twitch": {"token": "twitch_token"}}
|
||||
)
|
||||
assert await user_repo.create(new_user) == new_user
|
||||
|
||||
|
||||
async def test_update_users_tokens(user_repo: UserRepo, user: User):
|
||||
new_tokens = {"twitch": {"token": "new_tokens"}}
|
||||
user.external_auth = new_tokens # type: ignore[assignment]
|
||||
assert await user_repo.update(user) == user
|
||||
|
||||
|
||||
async def test_update_non_existing_user_raises_value_error(user_repo: UserRepo):
|
||||
with pytest.raises(ValueError, match="User unknown_user does not exist"):
|
||||
await user_repo.update(
|
||||
User(
|
||||
user="unknown_user", external_auth={"twitch": {"token": "twitch_token"}}
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
async def test_delete_user(user_repo: UserRepo, user: User):
|
||||
assert await user_repo.delete(user) is None
|
||||
assert await user_repo.get_by_user(user.user) is None
|
||||
Loading…
Add table
Add a link
Reference in a new issue