Forking what is left of ZeroNet and hopefully adding an AT Proto Frontend/Proxy
1from Translate import Translate
2
3class TestTranslate:
4 def testTranslateStrict(self):
5 translate = Translate()
6 data = """
7 translated = _("original")
8 not_translated = "original"
9 """
10 data_translated = translate.translateData(data, {"_(original)": "translated"})
11 assert 'translated = _("translated")' in data_translated
12 assert 'not_translated = "original"' in data_translated
13
14 def testTranslateStrictNamed(self):
15 translate = Translate()
16 data = """
17 translated = _("original", "original named")
18 translated_other = _("original", "original other named")
19 not_translated = "original"
20 """
21 data_translated = translate.translateData(data, {"_(original, original named)": "translated"})
22 assert 'translated = _("translated")' in data_translated
23 assert 'not_translated = "original"' in data_translated
24
25 def testTranslateUtf8(self):
26 translate = Translate()
27 data = """
28 greeting = "Hi again árvztűrőtökörfúrógép!"
29 """
30 data_translated = translate.translateData(data, {"Hi again árvztűrőtökörfúrógép!": "Üdv újra árvztűrőtökörfúrógép!"})
31 assert data_translated == """
32 greeting = "Üdv újra árvztűrőtökörfúrógép!"
33 """
34
35 def testTranslateEscape(self):
36 _ = Translate()
37 _["Hello"] = "Szia"
38
39 # Simple escaping
40 data = "{_[Hello]} {username}!"
41 username = "Hacker<script>alert('boom')</script>"
42 data_translated = _(data)
43 assert 'Szia' in data_translated
44 assert '<' not in data_translated
45 assert data_translated == "Szia Hacker<script>alert('boom')</script>!"
46
47 # Escaping dicts
48 user = {"username": "Hacker<script>alert('boom')</script>"}
49 data = "{_[Hello]} {user[username]}!"
50 data_translated = _(data)
51 assert 'Szia' in data_translated
52 assert '<' not in data_translated
53 assert data_translated == "Szia Hacker<script>alert('boom')</script>!"
54
55 # Escaping lists
56 users = [{"username": "Hacker<script>alert('boom')</script>"}]
57 data = "{_[Hello]} {users[0][username]}!"
58 data_translated = _(data)
59 assert 'Szia' in data_translated
60 assert '<' not in data_translated
61 assert data_translated == "Szia Hacker<script>alert('boom')</script>!"