-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathauto_escape_test.py
More file actions
62 lines (49 loc) · 1.93 KB
/
auto_escape_test.py
File metadata and controls
62 lines (49 loc) · 1.93 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Test the new auto_escape parameter in render() method
"""
from template_engine import TemplateEngine
def test_auto_escape_parameter():
"""Test the auto_escape parameter in render method."""
print("🧪 Testing auto_escape parameter in render() method")
print("=" * 60)
# Create one engine instance
engine = TemplateEngine(auto_escape=True, strict_mode=False) # Default is HTML escaping
# Sample data with HTML characters
data = {
'content': '<script>alert("XSS")</script>',
'message': 'Hello & welcome to <b>our site</b>!'
}
template = 'Content: $content\nMessage: $message'
print("Template:", repr(template))
print("Data:", data)
print()
# Test 1: Use engine's default (auto_escape=True)
print("1️⃣ Using engine's default (auto_escape=True):")
result1 = engine.render(template, data)
print(result1)
print()
# Test 2: Override to disable escaping
print("2️⃣ Override to disable escaping (auto_escape=False):")
result2 = engine.render(template, data, auto_escape=False)
print(result2)
print()
# Test 3: Override to enable escaping
print("3️⃣ Override to enable escaping (auto_escape=True):")
result3 = engine.render(template, data, auto_escape=True)
print(result3)
print()
# Test 4: Verify engine's setting is restored
print("4️⃣ Verify engine's default setting is restored:")
result4 = engine.render(template, data)
print(result4)
print()
# Demonstrate the key difference
print("🔍 Key Differences:")
print("• auto_escape=True: HTML characters are escaped for security")
print("• auto_escape=False: HTML characters are preserved as-is")
print()
print("✅ Now you can decide escaping per render() call, not per engine!")
if __name__ == "__main__":
test_auto_escape_parameter()