Commit | Line | Data |
---|---|---|
cb8ea0fe | 1 | # GNU MediaGoblin -- federated, autonomous media hosting |
cf29e8a8 | 2 | # Copyright (C) 2011, 2012 MediaGoblin contributors. See AUTHORS. |
cb8ea0fe CAW |
3 | # |
4 | # This program is free software: you can redistribute it and/or modify | |
5 | # it under the terms of the GNU Affero General Public License as published by | |
6 | # the Free Software Foundation, either version 3 of the License, or | |
7 | # (at your option) any later version. | |
8 | # | |
9 | # This program is distributed in the hope that it will be useful, | |
10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | |
11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
12 | # GNU Affero General Public License for more details. | |
13 | # | |
14 | # You should have received a copy of the GNU Affero General Public License | |
15 | # along with this program. If not, see <http://www.gnu.org/licenses/>. | |
16 | ||
4d4f6050 CAW |
17 | import email |
18 | ||
152a3bfa | 19 | from mediagoblin.tools import common, url, translate, mail, text, testing |
cb8ea0fe | 20 | |
152a3bfa | 21 | testing._activate_testing() |
4d4f6050 CAW |
22 | |
23 | ||
cb8ea0fe CAW |
24 | def _import_component_testing_method(silly_string): |
25 | # Just for the sake of testing that our component importer works. | |
26 | return u"'%s' is the silliest string I've ever seen" % silly_string | |
27 | ||
28 | ||
29 | def test_import_component(): | |
152a3bfa | 30 | imported_func = common.import_component( |
cb8ea0fe CAW |
31 | 'mediagoblin.tests.test_util:_import_component_testing_method') |
32 | result = imported_func('hooobaladoobala') | |
33 | expected = u"'hooobaladoobala' is the silliest string I've ever seen" | |
34 | assert result == expected | |
4d4f6050 CAW |
35 | |
36 | ||
37 | def test_send_email(): | |
152a3bfa | 38 | mail._clear_test_inboxes() |
4d4f6050 CAW |
39 | |
40 | # send the email | |
152a3bfa | 41 | mail.send_email( |
4d4f6050 CAW |
42 | "sender@mediagoblin.example.org", |
43 | ["amanda@example.org", "akila@example.org"], | |
44 | "Testing is so much fun!", | |
45 | """HAYYY GUYS! | |
46 | ||
47 | I hope you like unit tests JUST AS MUCH AS I DO!""") | |
48 | ||
49 | # check the main inbox | |
152a3bfa AW |
50 | assert len(mail.EMAIL_TEST_INBOX) == 1 |
51 | message = mail.EMAIL_TEST_INBOX.pop() | |
4d4f6050 CAW |
52 | assert message['From'] == "sender@mediagoblin.example.org" |
53 | assert message['To'] == "amanda@example.org, akila@example.org" | |
54 | assert message['Subject'] == "Testing is so much fun!" | |
55 | assert message.get_payload(decode=True) == """HAYYY GUYS! | |
56 | ||
57 | I hope you like unit tests JUST AS MUCH AS I DO!""" | |
58 | ||
59 | # Check everything that the FakeMhost.sendmail() method got is correct | |
152a3bfa AW |
60 | assert len(mail.EMAIL_TEST_MBOX_INBOX) == 1 |
61 | mbox_dict = mail.EMAIL_TEST_MBOX_INBOX.pop() | |
4d4f6050 CAW |
62 | assert mbox_dict['from'] == "sender@mediagoblin.example.org" |
63 | assert mbox_dict['to'] == ["amanda@example.org", "akila@example.org"] | |
64 | mbox_message = email.message_from_string(mbox_dict['message']) | |
65 | assert mbox_message['From'] == "sender@mediagoblin.example.org" | |
66 | assert mbox_message['To'] == "amanda@example.org, akila@example.org" | |
67 | assert mbox_message['Subject'] == "Testing is so much fun!" | |
68 | assert mbox_message.get_payload(decode=True) == """HAYYY GUYS! | |
69 | ||
70 | I hope you like unit tests JUST AS MUCH AS I DO!""" | |
8b28bee4 | 71 | |
0546833c | 72 | def test_slugify(): |
ae3bc7fa AW |
73 | assert url.slugify('a walk in the park') == 'a-walk-in-the-park' |
74 | assert url.slugify('A Walk in the Park') == 'a-walk-in-the-park' | |
75 | assert url.slugify('a walk in the park') == 'a-walk-in-the-park' | |
76 | assert url.slugify('a walk in-the-park') == 'a-walk-in-the-park' | |
77 | assert url.slugify('a w@lk in the park?') == 'a-w-lk-in-the-park' | |
78 | assert url.slugify(u'a walk in the par\u0107') == 'a-walk-in-the-parc' | |
79 | assert url.slugify(u'\u00E0\u0042\u00E7\u010F\u00EB\u0066') == 'abcdef' | |
8b28bee4 CAW |
80 | |
81 | def test_locale_to_lower_upper(): | |
82 | """ | |
83 | Test cc.i18n.util.locale_to_lower_upper() | |
84 | """ | |
ae3bc7fa AW |
85 | assert translate.locale_to_lower_upper('en') == 'en' |
86 | assert translate.locale_to_lower_upper('en_US') == 'en_US' | |
87 | assert translate.locale_to_lower_upper('en-us') == 'en_US' | |
8b28bee4 CAW |
88 | |
89 | # crazy renditions. Useful? | |
ae3bc7fa AW |
90 | assert translate.locale_to_lower_upper('en-US') == 'en_US' |
91 | assert translate.locale_to_lower_upper('en_us') == 'en_US' | |
8b28bee4 CAW |
92 | |
93 | ||
94 | def test_locale_to_lower_lower(): | |
95 | """ | |
96 | Test cc.i18n.util.locale_to_lower_lower() | |
97 | """ | |
ae3bc7fa AW |
98 | assert translate.locale_to_lower_lower('en') == 'en' |
99 | assert translate.locale_to_lower_lower('en_US') == 'en-us' | |
100 | assert translate.locale_to_lower_lower('en-us') == 'en-us' | |
8b28bee4 CAW |
101 | |
102 | # crazy renditions. Useful? | |
ae3bc7fa AW |
103 | assert translate.locale_to_lower_lower('en-US') == 'en-us' |
104 | assert translate.locale_to_lower_lower('en_us') == 'en-us' | |
a68ee555 CAW |
105 | |
106 | ||
107 | def test_html_cleaner(): | |
108 | # Remove images | |
152a3bfa | 109 | result = text.clean_html( |
a68ee555 CAW |
110 | '<p>Hi everybody! ' |
111 | '<img src="http://example.org/huge-purple-barney.png" /></p>\n' | |
112 | '<p>:)</p>') | |
113 | assert result == ( | |
114 | '<div>' | |
115 | '<p>Hi everybody! </p>\n' | |
116 | '<p>:)</p>' | |
117 | '</div>') | |
118 | ||
119 | # Remove evil javascript | |
152a3bfa | 120 | result = text.clean_html( |
a68ee555 CAW |
121 | '<p><a href="javascript:nasty_surprise">innocent link!</a></p>') |
122 | assert result == ( | |
123 | '<p><a href="">innocent link!</a></p>') |