Skip to content

Commit 1e4ab7f

Browse files
Merge pull request #225 from supertokens/fix/session-claims
test: Fix failing unit tests
2 parents 6d1d9ac + 91307d5 commit 1e4ab7f

File tree

6 files changed

+30
-27
lines changed

6 files changed

+30
-27
lines changed

supertokens_python/recipe/session/api/implementation.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,16 +13,17 @@
1313
# under the License.
1414
from __future__ import annotations
1515

16-
from typing import TYPE_CHECKING, Union, List, Callable, Optional
16+
from typing import TYPE_CHECKING, Callable, List, Optional, Union
1717

1818
from supertokens_python.normalised_url_path import NormalisedURLPath
1919
from supertokens_python.recipe.session.interfaces import (
2020
APIInterface,
21-
SignOutOkayResponse,
2221
SessionClaimValidator,
22+
SignOutOkayResponse,
2323
)
2424
from supertokens_python.types import MaybeAwaitable
2525
from supertokens_python.utils import normalise_http_method
26+
2627
from ..utils import get_required_claim_validators
2728

2829
if TYPE_CHECKING:

supertokens_python/recipe/session/interfaces.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,20 +17,21 @@
1717
from typing import (
1818
TYPE_CHECKING,
1919
Any,
20+
Callable,
2021
Dict,
2122
Generic,
2223
List,
24+
Optional,
2325
TypeVar,
2426
Union,
25-
Callable,
26-
Optional,
2727
)
2828

2929
from supertokens_python.async_to_sync_wrapper import sync
30-
from supertokens_python.types import APIResponse, MaybeAwaitable
30+
from supertokens_python.types import APIResponse, GeneralErrorResponse, MaybeAwaitable
31+
32+
from ...utils import resolve
3133
from .exceptions import ClaimValidationError
3234
from .utils import SessionConfig
33-
from ...utils import resolve
3435

3536
if TYPE_CHECKING:
3637
from supertokens_python.framework import BaseRequest, BaseResponse
@@ -319,7 +320,7 @@ async def signout_post(
319320
session: Optional[SessionContainer],
320321
api_options: APIOptions,
321322
user_context: Dict[str, Any],
322-
) -> SignOutOkayResponse:
323+
) -> Union[SignOutOkayResponse, GeneralErrorResponse]:
323324
pass
324325

325326
@abstractmethod

tests/auth-react/django3x/mysite/utils.py

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
import os
2-
from typing import Any, Dict, List, Union, Optional
2+
from typing import Any, Dict, List, Optional, Union
33

44
from dotenv import load_dotenv
55
from supertokens_python import InputAppInfo, Supertokens, SupertokensConfig, init
66
from supertokens_python.framework.request import BaseRequest
77
from supertokens_python.recipe import (
88
emailpassword,
9+
emailverification,
910
passwordless,
1011
session,
1112
thirdparty,
1213
thirdpartyemailpassword,
1314
thirdpartypasswordless,
14-
emailverification,
1515
)
1616
from supertokens_python.recipe.emailpassword import EmailPasswordRecipe
1717
from supertokens_python.recipe.emailpassword.interfaces import (
@@ -25,10 +25,7 @@
2525
InputFormField,
2626
User,
2727
)
28-
from supertokens_python.recipe.emailverification.types import User as EVUser
29-
from supertokens_python.recipe.emailverification import (
30-
EmailVerificationRecipe,
31-
)
28+
from supertokens_python.recipe.emailverification import EmailVerificationRecipe
3229
from supertokens_python.recipe.emailverification import (
3330
InputOverrideConfig as EVInputOverrideConfig,
3431
)
@@ -38,6 +35,7 @@
3835
from supertokens_python.recipe.emailverification.interfaces import (
3936
APIOptions as EVAPIOptions,
4037
)
38+
from supertokens_python.recipe.emailverification.types import User as EVUser
4139
from supertokens_python.recipe.jwt import JWTRecipe
4240
from supertokens_python.recipe.passwordless import (
4341
ContactEmailOnlyConfig,
@@ -51,7 +49,7 @@
5149
APIInterface as PasswordlessAPIInterface,
5250
)
5351
from supertokens_python.recipe.passwordless.interfaces import APIOptions as PAPIOptions
54-
from supertokens_python.recipe.session import SessionRecipe, SessionContainer
52+
from supertokens_python.recipe.session import SessionContainer, SessionRecipe
5553
from supertokens_python.recipe.session.interfaces import (
5654
APIInterface as SessionAPIInterface,
5755
)
@@ -86,7 +84,7 @@
8684
from supertokens_python.types import GeneralErrorResponse
8785
from typing_extensions import Literal
8886

89-
from .store import save_url_with_token, save_code
87+
from .store import save_code, save_url_with_token
9088

9189
load_dotenv()
9290

@@ -592,7 +590,7 @@ async def signout_post(
592590
"body", api_options.request
593591
)
594592
if is_general_error:
595-
raise Exception("general error from signout API")
593+
return GeneralErrorResponse("general error from signout API")
596594
return await original_signout_post(session, api_options, user_context)
597595

598596
original_implementation.signout_post = signout_post
@@ -853,7 +851,7 @@ async def authorisation_url_get(
853851
recipe_list = [
854852
session.init(override=session.InputOverrideConfig(apis=override_session_apis)),
855853
emailverification.init(
856-
mode="REQUIRED",
854+
mode="OPTIONAL",
857855
create_and_send_custom_email=ev_create_and_send_custom_email, # TODO: Is it correct to create a seperate func for this?
858856
override=EVInputOverrideConfig(apis=override_email_verification_apis),
859857
),

tests/auth-react/fastapi-server/app.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -661,7 +661,7 @@ async def signout_post(
661661
"body", api_options.request
662662
)
663663
if is_general_error:
664-
raise Exception("general error from signout API")
664+
return GeneralErrorResponse("general error from signout API")
665665
return await original_signout_post(session, api_options, user_context)
666666

667667
original_implementation.signout_post = signout_post
@@ -923,7 +923,7 @@ async def authorisation_url_get(
923923
userroles.init(),
924924
session.init(override=session.InputOverrideConfig(apis=override_session_apis)),
925925
emailverification.init(
926-
mode="REQUIRED",
926+
mode="OPTIONAL",
927927
create_and_send_custom_email=ev_create_and_send_custom_email,
928928
override=EVInputOverrideConfig(apis=override_email_verification_apis),
929929
),

tests/auth-react/flask-server/app.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
# License for the specific language governing permissions and limitations
1313
# under the License.
1414
import os
15-
from typing import Any, Dict, List, Union, Optional
15+
from typing import Any, Dict, List, Optional, Union
1616

1717
from dotenv import load_dotenv
1818
from flask import Flask, g, jsonify, make_response, request
@@ -28,12 +28,12 @@
2828
from supertokens_python.framework.request import BaseRequest
2929
from supertokens_python.recipe import (
3030
emailpassword,
31+
emailverification,
3132
passwordless,
3233
session,
3334
thirdparty,
3435
thirdpartyemailpassword,
3536
thirdpartypasswordless,
36-
emailverification,
3737
)
3838
from supertokens_python.recipe.emailpassword import EmailPasswordRecipe
3939
from supertokens_python.recipe.emailpassword.interfaces import (
@@ -57,6 +57,7 @@
5757
from supertokens_python.recipe.emailverification.interfaces import (
5858
APIOptions as EVAPIOptions,
5959
)
60+
from supertokens_python.recipe.emailverification.types import User as EVUser
6061
from supertokens_python.recipe.jwt import JWTRecipe
6162
from supertokens_python.recipe.passwordless import (
6263
ContactEmailOnlyConfig,
@@ -74,9 +75,9 @@
7475
from supertokens_python.recipe.session.framework.flask import verify_session
7576
from supertokens_python.recipe.session.interfaces import (
7677
APIInterface as SessionAPIInterface,
77-
SessionContainer,
7878
)
7979
from supertokens_python.recipe.session.interfaces import APIOptions as SAPIOptions
80+
from supertokens_python.recipe.session.interfaces import SessionContainer
8081
from supertokens_python.recipe.thirdparty import ThirdPartyRecipe
8182
from supertokens_python.recipe.thirdparty.interfaces import (
8283
APIInterface as ThirdpartyAPIInterface,
@@ -106,7 +107,6 @@
106107
)
107108
from supertokens_python.types import GeneralErrorResponse
108109
from typing_extensions import Literal
109-
from supertokens_python.recipe.emailverification.types import User as EVUser
110110

111111
load_dotenv()
112112

@@ -614,7 +614,7 @@ async def signout_post(
614614
"body", api_options.request
615615
)
616616
if is_general_error:
617-
raise Exception("general error from signout API")
617+
return GeneralErrorResponse("general error from signout API")
618618
return await original_signout_post(session, api_options, user_context)
619619

620620
original_implementation.signout_post = signout_post
@@ -895,7 +895,7 @@ async def authorisation_url_get(
895895
recipe_list = [
896896
session.init(override=session.InputOverrideConfig(apis=override_session_apis)),
897897
emailverification.init(
898-
mode="REQUIRED",
898+
mode="OPTIONAL",
899899
create_and_send_custom_email=ev_create_and_send_custom_email,
900900
override=EVInputOverrideConfig(apis=override_email_verification_apis),
901901
),

tests/sessions/claims/test_verify_session.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -403,9 +403,12 @@ async def test_should_allow_if_assert_claims_returns_no_error(
403403
response = fastapi_client.get("/default-claims")
404404
assert response.status_code == 200
405405
assert "-" in response.json()["handle"]
406-
mock.assert_called_once_with([validator], {})
406+
mock.assert_called_once()
407+
(validators, ctx), _ = mock.call_args_list[0]
408+
assert validators == [validator]
409+
assert ctx["_default"]["request"]
407410
recipe_impl_mock.validate_claims.assert_called_once_with( # type: ignore
408-
"test_user_id", {}, [validator], {}
411+
"test_user_id", {}, [validator], ctx
409412
)
410413

411414

0 commit comments

Comments
 (0)