Skip to content

Commit

Permalink
chore: implement missing tests
Browse files Browse the repository at this point in the history
  • Loading branch information
tomasvotava committed Nov 4, 2024
1 parent 2c353db commit dffb35e
Show file tree
Hide file tree
Showing 3 changed files with 55 additions and 4 deletions.
19 changes: 19 additions & 0 deletions tests/test_openid_responses.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import pytest

from fastapi_sso.sso.base import OpenID, SSOBase
from fastapi_sso.sso.discord import DiscordSSO
from fastapi_sso.sso.facebook import FacebookSSO
from fastapi_sso.sso.fitbit import FitbitSSO
from fastapi_sso.sso.github import GithubSSO
Expand Down Expand Up @@ -219,6 +220,24 @@
picture="https://avatars.yandex.net/get-yapic/123456/islands-200",
),
),
(
DiscordSSO,
{
"id": "test",
"avatar": "avatar",
"email": "test@example.com",
"global_name": "Test User",
"username": "testuser",
},
OpenID(
email="test@example.com",
first_name="testuser",
id="test",
picture="https://cdn.discordapp.com/avatars/test/avatar.png",
provider="discord",
display_name="Test User",
),
),
)


Expand Down
6 changes: 3 additions & 3 deletions tests/test_providers.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@
from utils import AnythingDict, Request, Response, make_fake_async_client

from fastapi_sso.sso.base import OpenID, SecurityWarning, SSOBase
from fastapi_sso.sso.bitbucket import BitbucketSSO
from fastapi_sso.sso.discord import DiscordSSO
from fastapi_sso.sso.facebook import FacebookSSO
from fastapi_sso.sso.fitbit import FitbitSSO
from fastapi_sso.sso.generic import create_provider
Expand All @@ -20,12 +22,10 @@
from fastapi_sso.sso.microsoft import MicrosoftSSO
from fastapi_sso.sso.naver import NaverSSO
from fastapi_sso.sso.notion import NotionSSO
from fastapi_sso.sso.seznam import SeznamSSO
from fastapi_sso.sso.spotify import SpotifySSO
from fastapi_sso.sso.twitter import TwitterSSO
from fastapi_sso.sso.yandex import YandexSSO
from fastapi_sso.sso.seznam import SeznamSSO
from fastapi_sso.sso.bitbucket import BitbucketSSO
from fastapi_sso.sso.discord import DiscordSSO

GenericProvider = create_provider(
name="generic",
Expand Down
34 changes: 33 additions & 1 deletion tests/test_providers_individual.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
from unittest.mock import MagicMock

import pytest

from fastapi_sso import NotionSSO, OpenID, SSOLoginError
from fastapi_sso import BitbucketSSO, NotionSSO, OpenID, SSOLoginError


async def test_notion_openid_response():
Expand All @@ -23,3 +25,33 @@ async def test_notion_openid_response():
await sso.openid_from_response(invalid_response)
openid = OpenID(id="test", email="test@example.com", display_name="Test User", picture="avatar", provider="notion")
assert await sso.openid_from_response(valid_response) == openid


async def test_bitbucket_openid_response():
sso = BitbucketSSO("client_id", "client_secret")
valid_response = {
"uuid": "00000000-0000-0000-0000-000000000000",
"nickname": "testuser",
"links": {"avatar": {"href": "https://example.com/myavatar.png"}},
"display_name": "Test User",
}

class FakeSesssion:
async def get(self, url: str) -> MagicMock:
response = MagicMock()
response.json.return_value = {"values": [{"email": "test@example.com"}]}
return response

openid = OpenID(
id=valid_response["uuid"],
display_name=valid_response["display_name"],
provider="bitbucket",
email="test@example.com",
first_name="testuser",
picture=valid_response["links"]["avatar"]["href"],
)

with pytest.raises(ValueError, match="Session is required to make HTTP requests"):
await sso.openid_from_response(valid_response)

assert openid == await sso.openid_from_response(valid_response, FakeSesssion())

0 comments on commit dffb35e

Please sign in to comment.