1
# -*- coding: utf-8 -*-
3
MoinMoin - MoinMoin.module_tested Tests
5
@copyright: 2003-2004 by Juergen Hermann <jh@web.de>,
6
2007 by MoinMoin:ThomasWaldmann
7
@license: GNU GPL, see COPYING for details.
12
from MoinMoin import config, wikiutil
14
from MoinMoin.request import HeadersAlreadySentException
16
class TestNormalizePagename(object):
18
def testPageInvalidChars(self):
19
""" request: normalize pagename: remove invalid unicode chars
21
Assume the default setting
23
test = u'\u0000\u202a\u202b\u202c\u202d\u202e'
25
result = self.request.normalizePagename(test)
26
assert result == expected
28
def testNormalizeSlashes(self):
29
""" request: normalize pagename: normalize slashes """
34
(u'a/////b/////c', u'a/b/c'),
35
(u'a b/////c d/////e f', u'a b/c d/e f'),
37
for test, expected in cases:
38
result = self.request.normalizePagename(test)
39
assert result == expected
41
def testNormalizeWhitespace(self):
42
""" request: normalize pagename: normalize whitespace """
48
(u'a b / c d / e f', u'a b/c d/e f'),
49
# All 30 unicode spaces
50
(config.chars_spaces, u''),
52
for test, expected in cases:
53
result = self.request.normalizePagename(test)
54
assert result == expected
56
def testUnderscoreTestCase(self):
57
""" request: normalize pagename: underscore convert to spaces and normalized
59
Underscores should convert to spaces, then spaces should be
60
normalized, order is important!
67
(u'a b / c d / e f', u'a b/c d/e f'),
69
for test, expected in cases:
70
result = self.request.normalizePagename(test)
71
assert result == expected
74
class TestGroupPages(object):
76
def setup_method(self, method):
77
self.config = self.TestConfig(page_group_regex=r'.+Group')
79
def teardown_method(self, method):
82
def testNormalizeGroupName(self):
83
""" request: normalize pagename: restrict groups to alpha numeric Unicode
85
Spaces should normalize after invalid chars removed!
89
(u'Name,:Group', u'NameGroup'),
90
# remove than normalize spaces
91
(u'Name ! @ # $ % ^ & * ( ) + Group', u'Name Group'),
93
for test, expected in cases:
94
# validate we are testing valid group names
95
if wikiutil.isGroupPage(self.request, test):
96
result = self.request.normalizePagename(test)
97
assert result == expected
100
class TestHTTPDate(object):
102
def testRFC1123Date(self):
103
""" request: httpDate default rfc1123 """
104
assert self.request.httpDate(0) == 'Thu, 01 Jan 1970 00:00:00 GMT'
106
def testRFC850Date(self):
107
""" request: httpDate rfc850 """
108
assert self.request.httpDate(0, rfc='850') == 'Thursday, 01-Jan-70 00:00:00 GMT'
111
class TestHTTPHeaders(object):
112
std_headers = ['Status: 200 OK', 'Content-type: text/html; charset=%s' % config.charset]
114
def setup_method(self, method):
115
self.request.sent_headers = None
117
def testAutoAddStdHeaders(self):
118
""" test if the usual headers get auto-added if not specified """
119
headers_out = self.request.emit_http_headers(testing=True)
120
assert headers_out == self.std_headers
122
def testHeadersOnlyOnce(self):
123
""" test if trying to call emit_http_headers multiple times raises an exception """
124
self.request.emit_http_headers(testing=True)
125
py.test.raises(HeadersAlreadySentException, self.request.emit_http_headers, [], {'testing': True})
127
def testDuplicateHeadersIgnored(self):
128
""" test if duplicate headers get ignored """
129
headers_in = self.std_headers + ['Status: 500 Server Error']
130
headers_expected = self.std_headers
131
headers_out = self.request.emit_http_headers(headers_in, testing=True)
132
assert headers_out == headers_expected
134
def testListHeaders(self):
135
""" test if header values get merged into a list for headers supporting it """
136
headers_in = self.std_headers + ['Vary: aaa', 'vary: bbb']
137
headers_expected = self.std_headers + ['Vary: aaa, bbb']
138
headers_out = self.request.emit_http_headers(headers_in, testing=True)
139
assert headers_out == headers_expected
141
coverage_modules = ['MoinMoin.request']