Skip to content

Commit 1dd21a3

Browse files
authored
Fix: Verify and Blacklist custom response schema (#72)
* fixed verify and blacklist response schema #71 * 5.3.1
1 parent 60aace7 commit 1dd21a3

File tree

5 files changed

+30
-13
lines changed

5 files changed

+30
-13
lines changed

ninja_jwt/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
"""Django Ninja JWT - JSON Web Token for Django-Ninja"""
22

3-
__version__ = "5.3.0"
3+
__version__ = "5.3.1"

ninja_jwt/controller.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
from asgiref.sync import sync_to_async
2-
from ninja import Schema
32
from ninja_extra import ControllerBase, api_controller, http_post
43
from ninja_extra.permissions import AllowAny
54

@@ -31,19 +30,20 @@ class TokenVerificationController(ControllerBase):
3130

3231
@http_post(
3332
"/verify",
34-
response={200: Schema},
33+
response={200: schema.verify_schema.get_response_schema()},
3534
url_name="token_verify",
3635
)
3736
def verify_token(self, token: schema.verify_schema):
38-
return token.to_response_schema()
37+
asas = token.to_response_schema()
38+
return asas
3939

4040

4141
class TokenBlackListController(ControllerBase):
4242
auto_import = False
4343

4444
@http_post(
4545
"/blacklist",
46-
response={200: Schema},
46+
response={200: schema.blacklist_schema.get_response_schema()},
4747
url_name="token_blacklist",
4848
)
4949
def blacklist_token(self, refresh: schema.blacklist_schema):
@@ -114,7 +114,7 @@ class NinjaJWTSlidingController(
114114
class AsyncTokenVerificationController(TokenVerificationController):
115115
@http_post(
116116
"/verify",
117-
response={200: Schema},
117+
response={200: schema.verify_schema.get_response_schema()},
118118
url_name="token_verify",
119119
)
120120
async def verify_token(self, token: schema.verify_schema):
@@ -126,7 +126,7 @@ class AsyncTokenBlackListController(TokenBlackListController):
126126

127127
@http_post(
128128
"/blacklist",
129-
response={200: Schema},
129+
response={200: schema.blacklist_schema.get_response_schema()},
130130
url_name="token_blacklist",
131131
)
132132
async def blacklist_token(self, refresh: schema.blacklist_schema):

ninja_jwt/routers/blacklist.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
from ninja import Schema
21
from ninja.router import Router
32

43
from ninja_jwt.schema_control import SchemaControl
@@ -11,7 +10,7 @@
1110

1211
@blacklist_router.post(
1312
"/blacklist",
14-
response={200: Schema},
13+
response={200: schema.blacklist_schema.get_response_schema()},
1514
url_name="token_blacklist",
1615
auth=None,
1716
)

ninja_jwt/routers/verify.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
from ninja import Schema
21
from ninja.router import Router
32

43
from ninja_jwt.schema_control import SchemaControl
@@ -11,7 +10,7 @@
1110

1211
@verify_router.post(
1312
"/verify",
14-
response={200: Schema},
13+
response={200: schema.verify_schema.get_response_schema()},
1514
url_name="token_verify",
1615
auth=None,
1716
)

tests/test_custom_schema.py

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,22 @@ def get_response_schema(cls):
9191

9292

9393
class MyTokenVerifyInputSchema(TokenVerifyInputSchema):
94-
pass
94+
@classmethod
95+
def get_response_schema(cls):
96+
class NewResponseSchema(Schema):
97+
refresh: str
98+
access: str
99+
user: dict
100+
101+
return NewResponseSchema
102+
103+
def to_response_schema(self):
104+
values = {
105+
"refresh": "your_refresh_token_here",
106+
"access": self.token,
107+
"user": {},
108+
}
109+
return values
95110

96111

97112
class MyTokenBlacklistInputSchema(TokenBlacklistInputSchema):
@@ -330,7 +345,11 @@ def test_it_should_return_200_if_everything_okay(self, monkeypatch):
330345
"/verify", json={"token": str(token)}, content_type="application/json"
331346
)
332347
assert res.status_code == 200
333-
assert res.json() == {}
348+
data = res.json()
349+
350+
assert "refresh" in data
351+
assert "user" in data
352+
assert "access" in data
334353

335354

336355
@pytest.mark.django_db

0 commit comments

Comments
 (0)