From 9856a8f2f9addce60c231ffa1f28366a5e6dba9a Mon Sep 17 00:00:00 2001 From: Munyoki Kilyungi Date: Tue, 30 Apr 2024 10:54:48 +0300 Subject: Revert "Create constructors for encoding and decoding a token." This reverts commit e7a3bf22da1b63a01343f2cd30cd13c234fe508c. --- gn2/tests/unit/wqflask/oauth2/__init__.py | 0 gn2/tests/unit/wqflask/oauth2/test_tokens.py | 37 ----------------- gn2/wqflask/oauth2/tokens.py | 59 ---------------------------- 3 files changed, 96 deletions(-) delete mode 100644 gn2/tests/unit/wqflask/oauth2/__init__.py delete mode 100644 gn2/tests/unit/wqflask/oauth2/test_tokens.py delete mode 100644 gn2/wqflask/oauth2/tokens.py diff --git a/gn2/tests/unit/wqflask/oauth2/__init__.py b/gn2/tests/unit/wqflask/oauth2/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/gn2/tests/unit/wqflask/oauth2/test_tokens.py b/gn2/tests/unit/wqflask/oauth2/test_tokens.py deleted file mode 100644 index ee527f51..00000000 --- a/gn2/tests/unit/wqflask/oauth2/test_tokens.py +++ /dev/null @@ -1,37 +0,0 @@ -"""Test oauth2 jwt tokens""" -from gn2.wqflask.oauth2.tokens import JWTToken - - -JWT_BEARER_TOKEN = b"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCIs\ -ImN0eSI6Impzb24ifQ.eyJpc3MiOiJHTjIiLCJ\ -zdWIiOiIxMjM0IiwiYXVkIjoiR04yIiwiZXhwI\ -joiMTIzNDUifQ.ETSr_7O4ZWLac5l4pinO9Xeb\ -mzTO7xp_LvbgxjnskDc" - - -def test_encode_token(): - """Test encoding a jwt token.""" - token = JWTToken( - key="secret", - registered_claims={ - "iss": "GN2", - "sub": "1234", - "aud": "GN2", - "exp": "12345", - } - ) - assert token.encode() == JWT_BEARER_TOKEN - assert token.bearer_token == { - "Authorization": f"Bearer {JWT_BEARER_TOKEN}" - } - - -def test_decode_token(): - """Test decoding a jwt token.""" - claims = JWTToken.decode(JWT_BEARER_TOKEN, "secret") - assert claims == { - 'iss': 'GN2', - 'sub': '1234', - 'aud': 'GN2', - 'exp': '12345' - } diff --git a/gn2/wqflask/oauth2/tokens.py b/gn2/wqflask/oauth2/tokens.py deleted file mode 100644 index e0ee814b..00000000 --- a/gn2/wqflask/oauth2/tokens.py +++ /dev/null @@ -1,59 +0,0 @@ -"""This file contains functions/classes related to dealing with JWTs""" -from dataclasses import dataclass -from dataclasses import field -from authlib.jose import jwt - - -@dataclass -class JWTToken: - """Class for constructing a JWT according to RFC7519 - -https://datatracker.ietf.org/doc/html/rfc7519 - - """ - key: str - private_claims: dict = field(default_factory=lambda: {}) - public_claims: dict = field(default_factory=lambda: {}) - jose_header: dict = field( - default_factory=lambda: { - "alg": "HS256", - "typ": "jwt", - "cty": "json", - }) - registered_claims: dict = field( - default_factory={ - "iss": "", # Issuer Claim - "iat": "", # Issued At - "sub": "", # Subject Claim - "aud": "", # Audience Claim - "exp": "", # Expiration Time Claim - "jti": "", # Unique Identifier for this token - }) - - def __post__init__(self): - match self.jose_header.get("alg"): - case "HS256": - self.key = self.key - case _: - with open(self.key, "rb")as f_: - self.key = f_.read() - - def encode(self): - """Encode the JWT""" - payload = self.registered_claims \ - | self.private_claims \ - | self.public_claims \ - | self.registered_claims - return jwt.encode(self.jose_header, payload, self.key) - - @property - def bearer_token(self) -> dict: - """Return a header that contains this tokens Bearer Token""" - return { - "Authorization": f"Bearer {self.encode()}" - } - - @staticmethod - def decode(token, key) -> str: - """Decode the JWT""" - return jwt.decode(token, key) -- cgit v1.2.3