Refactor code for improved readability and consistency

- Cleaned up whitespace and formatting across multiple files for better readability.
This commit is contained in:
JSC
2025-07-02 10:37:48 +02:00
parent e63c7a0767
commit 171dbb9b63
19 changed files with 361 additions and 260 deletions

View File

@@ -23,32 +23,45 @@ class TestAuthRoutesJWTExtended:
@patch("app.routes.auth.auth_service.get_login_url")
def test_login_route(self, mock_get_login_url: Mock, client) -> None:
"""Test the login route."""
mock_get_login_url.return_value = "https://accounts.google.com/oauth/authorize?..."
mock_get_login_url.return_value = (
"https://accounts.google.com/oauth/authorize?..."
)
response = client.get("/api/auth/login")
assert response.status_code == 200
data = response.get_json()
assert "login_url" in data
assert data["login_url"] == "https://accounts.google.com/oauth/authorize?..."
assert (
data["login_url"]
== "https://accounts.google.com/oauth/authorize?..."
)
@patch("app.routes.auth.auth_service.handle_callback")
def test_callback_route_success(self, mock_handle_callback: Mock, client) -> None:
def test_callback_route_success(
self, mock_handle_callback: Mock, client
) -> None:
"""Test successful callback route."""
mock_response = Mock()
mock_response.get_json.return_value = {
"message": "Login successful",
"user": {"id": "123", "email": "test@example.com", "name": "Test User"}
"user": {
"id": "123",
"email": "test@example.com",
"name": "Test User",
},
}
mock_handle_callback.return_value = mock_response
response = client.get("/api/auth/callback?code=test_code")
mock_handle_callback.assert_called_once()
@patch("app.routes.auth.auth_service.handle_callback")
def test_callback_route_error(self, mock_handle_callback: Mock, client) -> None:
def test_callback_route_error(
self, mock_handle_callback: Mock, client
) -> None:
"""Test callback route with error."""
mock_handle_callback.side_effect = Exception("OAuth error")
response = client.get("/api/auth/callback?code=test_code")
assert response.status_code == 400
data = response.get_json()
@@ -58,9 +71,11 @@ class TestAuthRoutesJWTExtended:
def test_logout_route(self, mock_logout: Mock, client) -> None:
"""Test logout route."""
mock_response = Mock()
mock_response.get_json.return_value = {"message": "Logged out successfully"}
mock_response.get_json.return_value = {
"message": "Logged out successfully"
}
mock_logout.return_value = mock_response
response = client.get("/api/auth/logout")
mock_logout.assert_called_once()
@@ -76,4 +91,4 @@ class TestAuthRoutesJWTExtended:
response = client.post("/api/auth/refresh")
assert response.status_code == 401
data = response.get_json()
assert "msg" in data # Flask-JWT-Extended error format
assert "msg" in data # Flask-JWT-Extended error format

View File

@@ -21,13 +21,13 @@ class TestAuthServiceJWTExtended:
"""Test initializing AuthService with Flask app."""
mock_getenv.side_effect = lambda key: {
"GOOGLE_CLIENT_ID": "test_client_id",
"GOOGLE_CLIENT_SECRET": "test_client_secret"
"GOOGLE_CLIENT_SECRET": "test_client_secret",
}.get(key)
app = create_app()
auth_service = AuthService()
auth_service.init_app(app)
# Verify OAuth was initialized
assert auth_service.google is not None
@@ -39,10 +39,12 @@ class TestAuthServiceJWTExtended:
with app.app_context():
mock_response = Mock()
mock_jsonify.return_value = mock_response
auth_service = AuthService()
result = auth_service.logout()
assert result == mock_response
mock_unset.assert_called_once_with(mock_response)
mock_jsonify.assert_called_once_with({"message": "Logged out successfully"})
mock_jsonify.assert_called_once_with(
{"message": "Logged out successfully"}
)

View File

@@ -21,7 +21,10 @@ class TestMainRoutes:
"""Test the index route."""
response = client.get("/api/")
assert response.status_code == 200
assert response.get_json() == {"message": "API is running", "status": "ok"}
assert response.get_json() == {
"message": "API is running",
"status": "ok",
}
def test_health_route(self, client) -> None:
"""Test health check route."""
@@ -34,4 +37,4 @@ class TestMainRoutes:
response = client.get("/api/protected")
assert response.status_code == 401
data = response.get_json()
assert data["error"] == "Authentication required (JWT or API token)"
assert data["error"] == "Authentication required (JWT or API token)"

View File

@@ -25,14 +25,18 @@ class TestTokenService:
user_data = {
"id": "123",
"email": "test@example.com",
"name": "Test User"
"name": "Test User",
}
token = token_service.generate_access_token(user_data)
assert isinstance(token, str)
# Verify token content
payload = jwt.decode(token, token_service.secret_key, algorithms=[token_service.algorithm])
payload = jwt.decode(
token,
token_service.secret_key,
algorithms=[token_service.algorithm],
)
assert payload["user_id"] == "123"
assert payload["email"] == "test@example.com"
assert payload["name"] == "Test User"
@@ -44,25 +48,33 @@ class TestTokenService:
user_data = {
"id": "123",
"email": "test@example.com",
"name": "Test User"
"name": "Test User",
}
token = token_service.generate_refresh_token(user_data)
assert isinstance(token, str)
# Verify token content
payload = jwt.decode(token, token_service.secret_key, algorithms=[token_service.algorithm])
payload = jwt.decode(
token,
token_service.secret_key,
algorithms=[token_service.algorithm],
)
assert payload["user_id"] == "123"
assert payload["type"] == "refresh"
def test_verify_valid_token(self) -> None:
"""Test verifying a valid token."""
token_service = TokenService()
user_data = {"id": "123", "email": "test@example.com", "name": "Test User"}
user_data = {
"id": "123",
"email": "test@example.com",
"name": "Test User",
}
token = token_service.generate_access_token(user_data)
payload = token_service.verify_token(token)
assert payload is not None
assert payload["user_id"] == "123"
assert payload["type"] == "access"
@@ -70,7 +82,7 @@ class TestTokenService:
def test_verify_invalid_token(self) -> None:
"""Test verifying an invalid token."""
token_service = TokenService()
payload = token_service.verify_token("invalid.token.here")
assert payload is None
@@ -81,61 +93,75 @@ class TestTokenService:
past_time = datetime(2020, 1, 1, tzinfo=timezone.utc)
mock_datetime.now.return_value = past_time
mock_datetime.UTC = timezone.utc
token_service = TokenService()
user_data = {"id": "123", "email": "test@example.com", "name": "Test User"}
user_data = {
"id": "123",
"email": "test@example.com",
"name": "Test User",
}
token = token_service.generate_access_token(user_data)
# Reset mock to current time for verification
mock_datetime.now.return_value = datetime.now(timezone.utc)
payload = token_service.verify_token(token)
assert payload is None
def test_is_access_token(self) -> None:
"""Test access token type checking."""
token_service = TokenService()
access_payload = {"type": "access", "user_id": "123"}
refresh_payload = {"type": "refresh", "user_id": "123"}
assert token_service.is_access_token(access_payload)
assert not token_service.is_access_token(refresh_payload)
def test_is_refresh_token(self) -> None:
"""Test refresh token type checking."""
token_service = TokenService()
access_payload = {"type": "access", "user_id": "123"}
refresh_payload = {"type": "refresh", "user_id": "123"}
assert token_service.is_refresh_token(refresh_payload)
assert not token_service.is_refresh_token(access_payload)
def test_get_user_from_access_token_valid(self) -> None:
"""Test extracting user from valid access token."""
token_service = TokenService()
user_data = {"id": "123", "email": "test@example.com", "name": "Test User"}
user_data = {
"id": "123",
"email": "test@example.com",
"name": "Test User",
}
token = token_service.generate_access_token(user_data)
extracted_user = token_service.get_user_from_access_token(token)
assert extracted_user == user_data
def test_get_user_from_access_token_refresh_token(self) -> None:
"""Test extracting user from refresh token (should fail)."""
token_service = TokenService()
user_data = {"id": "123", "email": "test@example.com", "name": "Test User"}
user_data = {
"id": "123",
"email": "test@example.com",
"name": "Test User",
}
token = token_service.generate_refresh_token(user_data)
extracted_user = token_service.get_user_from_access_token(token)
assert extracted_user is None
def test_get_user_from_access_token_invalid(self) -> None:
"""Test extracting user from invalid token."""
token_service = TokenService()
extracted_user = token_service.get_user_from_access_token("invalid.token")
assert extracted_user is None
extracted_user = token_service.get_user_from_access_token(
"invalid.token"
)
assert extracted_user is None

View File

@@ -18,9 +18,9 @@ class TestTokenServiceJWTExtended:
"id": "123",
"email": "test@example.com",
"name": "Test User",
"picture": "https://example.com/pic.jpg"
"picture": "https://example.com/pic.jpg",
}
token = token_service.generate_access_token(user_data)
assert isinstance(token, str)
assert len(token) > 0
@@ -33,9 +33,9 @@ class TestTokenServiceJWTExtended:
user_data = {
"id": "123",
"email": "test@example.com",
"name": "Test User"
"name": "Test User",
}
token = token_service.generate_refresh_token(user_data)
assert isinstance(token, str)
assert len(token) > 0
@@ -48,10 +48,10 @@ class TestTokenServiceJWTExtended:
user_data = {
"id": "123",
"email": "test@example.com",
"name": "Test User"
"name": "Test User",
}
access_token = token_service.generate_access_token(user_data)
refresh_token = token_service.generate_refresh_token(user_data)
assert access_token != refresh_token
assert access_token != refresh_token