fix: correct tojson|safe usage in templates and update validator
- Remove |safe from |tojson in HTML attributes (x-data) - quotes must become " for browsers to parse correctly - Update LANG-002 and LANG-003 architecture rules to document correct |tojson usage patterns: - HTML attributes: |tojson (no |safe) - Script blocks: |tojson|safe - Fix validator to warn when |tojson|safe is used in x-data (breaks HTML attribute parsing) - Improve code quality across services, APIs, and tests 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -8,26 +8,22 @@ Tests cover:
|
||||
- GraphQL client (mocked)
|
||||
"""
|
||||
|
||||
import pytest
|
||||
from unittest.mock import MagicMock, patch
|
||||
|
||||
import pytest
|
||||
|
||||
from app.services.letzshop import (
|
||||
LetzshopClient,
|
||||
LetzshopClientError,
|
||||
LetzshopAuthError,
|
||||
LetzshopAPIError,
|
||||
LetzshopCredentialsService,
|
||||
CredentialsNotFoundError,
|
||||
LetzshopAPIError,
|
||||
LetzshopClient,
|
||||
LetzshopCredentialsService,
|
||||
)
|
||||
from app.utils.encryption import (
|
||||
EncryptionService,
|
||||
EncryptionError,
|
||||
encrypt_value,
|
||||
decrypt_value,
|
||||
EncryptionService,
|
||||
mask_api_key,
|
||||
)
|
||||
|
||||
|
||||
# ============================================================================
|
||||
# Encryption Tests
|
||||
# ============================================================================
|
||||
@@ -339,9 +335,7 @@ class TestLetzshopClient:
|
||||
"""Test successful connection test."""
|
||||
mock_response = MagicMock()
|
||||
mock_response.status_code = 200
|
||||
mock_response.json.return_value = {
|
||||
"data": {"__typename": "Query"}
|
||||
}
|
||||
mock_response.json.return_value = {"data": {"__typename": "Query"}}
|
||||
mock_post.return_value = mock_response
|
||||
|
||||
client = LetzshopClient(api_key="test-key")
|
||||
@@ -398,7 +392,7 @@ class TestLetzshopClient:
|
||||
"inventoryUnits": [
|
||||
{"id": "unit_1", "state": "confirmed"},
|
||||
],
|
||||
"errors": []
|
||||
"errors": [],
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -420,12 +414,9 @@ class TestLetzshopClient:
|
||||
"setShipmentTracking": {
|
||||
"shipment": {
|
||||
"id": "ship_1",
|
||||
"tracking": {
|
||||
"code": "1Z999AA1",
|
||||
"provider": "ups"
|
||||
}
|
||||
"tracking": {"code": "1Z999AA1", "provider": "ups"},
|
||||
},
|
||||
"errors": []
|
||||
"errors": [],
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -446,9 +437,7 @@ class TestLetzshopClient:
|
||||
mock_response = MagicMock()
|
||||
mock_response.status_code = 200
|
||||
mock_response.json.return_value = {
|
||||
"errors": [
|
||||
{"message": "Invalid shipment ID"}
|
||||
]
|
||||
"errors": [{"message": "Invalid shipment ID"}]
|
||||
}
|
||||
mock_post.return_value = mock_response
|
||||
|
||||
|
||||
Reference in New Issue
Block a user