mirror of
https://github.com/moparisthebest/SickRage
synced 2024-11-14 13:25:11 -05:00
297 lines
16 KiB
Python
297 lines
16 KiB
Python
|
import sys
|
||
|
import unittest
|
||
|
|
||
|
from html5lib.filters.formfiller import SimpleFilter
|
||
|
|
||
|
class FieldStorage(dict):
|
||
|
def getlist(self, name):
|
||
|
l = self[name]
|
||
|
if isinstance(l, list):
|
||
|
return l
|
||
|
elif isinstance(l, tuple) or hasattr(l, '__iter__'):
|
||
|
return list(l)
|
||
|
return [l]
|
||
|
|
||
|
class TestCase(unittest.TestCase):
|
||
|
def runTest(self, input, formdata, expected):
|
||
|
try:
|
||
|
output = list(SimpleFilter(input, formdata))
|
||
|
except NotImplementedError, nie:
|
||
|
# Amnesty for those that confess...
|
||
|
print >>sys.stderr, "Not implemented:", str(nie)
|
||
|
else:
|
||
|
errorMsg = "\n".join(["\n\nInput:", str(input),
|
||
|
"\nForm data:", str(formdata),
|
||
|
"\nExpected:", str(expected),
|
||
|
"\nReceived:", str(output)])
|
||
|
self.assertEquals(output, expected, errorMsg)
|
||
|
|
||
|
def testSingleTextInputWithValue(self):
|
||
|
self.runTest(
|
||
|
[{"type": u"EmptyTag", "name": u"input",
|
||
|
"data": [(u"type", u"text"), (u"name", u"foo"), (u"value", u"quux")]}],
|
||
|
FieldStorage({"foo": "bar"}),
|
||
|
[{"type": u"EmptyTag", "name": u"input",
|
||
|
"data": [(u"type", u"text"), (u"name", u"foo"), (u"value", u"bar")]}])
|
||
|
|
||
|
def testSingleTextInputWithoutValue(self):
|
||
|
self.runTest(
|
||
|
[{"type": u"EmptyTag", "name": u"input",
|
||
|
"data": [(u"type", u"text"), (u"name", u"foo")]}],
|
||
|
FieldStorage({"foo": "bar"}),
|
||
|
[{"type": u"EmptyTag", "name": u"input",
|
||
|
"data": [(u"type", u"text"), (u"name", u"foo"), (u"value", u"bar")]}])
|
||
|
|
||
|
def testSingleCheckbox(self):
|
||
|
self.runTest(
|
||
|
[{"type": u"EmptyTag", "name": u"input",
|
||
|
"data": [(u"type", u"checkbox"), (u"name", u"foo"), (u"value", u"bar")]}],
|
||
|
FieldStorage({"foo": "bar"}),
|
||
|
[{"type": u"EmptyTag", "name": u"input",
|
||
|
"data": [(u"type", u"checkbox"), (u"name", u"foo"), (u"value", u"bar"), (u"checked", u"")]}])
|
||
|
|
||
|
def testSingleCheckboxShouldBeUnchecked(self):
|
||
|
self.runTest(
|
||
|
[{"type": u"EmptyTag", "name": u"input",
|
||
|
"data": [(u"type", u"checkbox"), (u"name", u"foo"), (u"value", u"quux")]}],
|
||
|
FieldStorage({"foo": "bar"}),
|
||
|
[{"type": u"EmptyTag", "name": u"input",
|
||
|
"data": [(u"type", u"checkbox"), (u"name", u"foo"), (u"value", u"quux")]}])
|
||
|
|
||
|
def testSingleCheckboxCheckedByDefault(self):
|
||
|
self.runTest(
|
||
|
[{"type": u"EmptyTag", "name": u"input",
|
||
|
"data": [(u"type", u"checkbox"), (u"name", u"foo"), (u"value", u"bar"), (u"checked", u"")]}],
|
||
|
FieldStorage({"foo": "bar"}),
|
||
|
[{"type": u"EmptyTag", "name": u"input",
|
||
|
"data": [(u"type", u"checkbox"), (u"name", u"foo"), (u"value", u"bar"), (u"checked", u"")]}])
|
||
|
|
||
|
def testSingleCheckboxCheckedByDefaultShouldBeUnchecked(self):
|
||
|
self.runTest(
|
||
|
[{"type": u"EmptyTag", "name": u"input",
|
||
|
"data": [(u"type", u"checkbox"), (u"name", u"foo"), (u"value", u"quux"), (u"checked", u"")]}],
|
||
|
FieldStorage({"foo": "bar"}),
|
||
|
[{"type": u"EmptyTag", "name": u"input",
|
||
|
"data": [(u"type", u"checkbox"), (u"name", u"foo"), (u"value", u"quux")]}])
|
||
|
|
||
|
def testSingleTextareaWithValue(self):
|
||
|
self.runTest(
|
||
|
[{"type": u"StartTag", "name": u"textarea", "data": [(u"name", u"foo")]},
|
||
|
{"type": u"Characters", "data": u"quux"},
|
||
|
{"type": u"EndTag", "name": u"textarea", "data": []}],
|
||
|
FieldStorage({"foo": "bar"}),
|
||
|
[{"type": u"StartTag", "name": u"textarea", "data": [(u"name", u"foo")]},
|
||
|
{"type": u"Characters", "data": u"bar"},
|
||
|
{"type": u"EndTag", "name": u"textarea", "data": []}])
|
||
|
|
||
|
def testSingleTextareaWithoutValue(self):
|
||
|
self.runTest(
|
||
|
[{"type": u"StartTag", "name": u"textarea", "data": [(u"name", u"foo")]},
|
||
|
{"type": u"EndTag", "name": u"textarea", "data": []}],
|
||
|
FieldStorage({"foo": "bar"}),
|
||
|
[{"type": u"StartTag", "name": u"textarea", "data": [(u"name", u"foo")]},
|
||
|
{"type": u"Characters", "data": u"bar"},
|
||
|
{"type": u"EndTag", "name": u"textarea", "data": []}])
|
||
|
|
||
|
def testSingleSelectWithValue(self):
|
||
|
self.runTest(
|
||
|
[{"type": u"StartTag", "name": u"select", "data": [(u"name", u"foo")]},
|
||
|
{"type": u"StartTag", "name": u"option", "data": [(u"value", u"bar")]},
|
||
|
{"type": u"Characters", "data": u"quux"},
|
||
|
{"type": u"EndTag", "name": u"option", "data": []},
|
||
|
{"type": u"EndTag", "name": u"select", "data": []}],
|
||
|
FieldStorage({"foo": "bar"}),
|
||
|
[{"type": u"StartTag", "name": u"select", "data": [(u"name", u"foo")]},
|
||
|
{"type": u"StartTag", "name": u"option", "data": [(u"value", u"bar"), (u"selected", u"")]},
|
||
|
{"type": u"Characters", "data": u"quux"},
|
||
|
{"type": u"EndTag", "name": u"option", "data": []},
|
||
|
{"type": u"EndTag", "name": u"select", "data": []}])
|
||
|
|
||
|
def testSingleSelectWithValueShouldBeUnselected(self):
|
||
|
self.runTest(
|
||
|
[{"type": u"StartTag", "name": u"select", "data": [(u"name", u"foo")]},
|
||
|
{"type": u"StartTag", "name": u"option", "data": [(u"value", u"bar")]},
|
||
|
{"type": u"Characters", "data": u"quux"},
|
||
|
{"type": u"EndTag", "name": u"option", "data": []},
|
||
|
{"type": u"EndTag", "name": u"select", "data": []}],
|
||
|
FieldStorage({"foo": "quux"}),
|
||
|
[{"type": u"StartTag", "name": u"select", "data": [(u"name", u"foo")]},
|
||
|
{"type": u"StartTag", "name": u"option", "data": [(u"value", u"bar")]},
|
||
|
{"type": u"Characters", "data": u"quux"},
|
||
|
{"type": u"EndTag", "name": u"option", "data": []},
|
||
|
{"type": u"EndTag", "name": u"select", "data": []}])
|
||
|
|
||
|
def testSingleSelectWithoutValue(self):
|
||
|
self.runTest(
|
||
|
[{"type": u"StartTag", "name": u"select", "data": [(u"name", u"foo")]},
|
||
|
{"type": u"StartTag", "name": u"option", "data": []},
|
||
|
{"type": u"Characters", "data": u"bar"},
|
||
|
{"type": u"EndTag", "name": u"option", "data": []},
|
||
|
{"type": u"EndTag", "name": u"select", "data": []}],
|
||
|
FieldStorage({"foo": "bar"}),
|
||
|
[{"type": u"StartTag", "name": u"select", "data": [(u"name", u"foo")]},
|
||
|
{"type": u"StartTag", "name": u"option", "data": [(u"selected", u"")]},
|
||
|
{"type": u"Characters", "data": u"bar"},
|
||
|
{"type": u"EndTag", "name": u"option", "data": []},
|
||
|
{"type": u"EndTag", "name": u"select", "data": []}])
|
||
|
|
||
|
def testSingleSelectWithoutValueShouldBeUnselected(self):
|
||
|
self.runTest(
|
||
|
[{"type": u"StartTag", "name": u"select", "data": [(u"name", u"foo")]},
|
||
|
{"type": u"StartTag", "name": u"option", "data": []},
|
||
|
{"type": u"Characters", "data": u"bar"},
|
||
|
{"type": u"EndTag", "name": u"option", "data": []},
|
||
|
{"type": u"EndTag", "name": u"select", "data": []}],
|
||
|
FieldStorage({"foo": "quux"}),
|
||
|
[{"type": u"StartTag", "name": u"select", "data": [(u"name", u"foo")]},
|
||
|
{"type": u"StartTag", "name": u"option", "data": []},
|
||
|
{"type": u"Characters", "data": u"bar"},
|
||
|
{"type": u"EndTag", "name": u"option", "data": []},
|
||
|
{"type": u"EndTag", "name": u"select", "data": []}])
|
||
|
|
||
|
def testSingleSelectTwoOptionsWithValue(self):
|
||
|
self.runTest(
|
||
|
[{"type": u"StartTag", "name": u"select", "data": [(u"name", u"foo")]},
|
||
|
{"type": u"StartTag", "name": u"option", "data": [(u"value", u"bar")]},
|
||
|
{"type": u"Characters", "data": u"quux"},
|
||
|
{"type": u"EndTag", "name": u"option", "data": []},
|
||
|
{"type": u"StartTag", "name": u"option", "data": [(u"value", u"quux")]},
|
||
|
{"type": u"Characters", "data": u"quux"},
|
||
|
{"type": u"EndTag", "name": u"option", "data": []},
|
||
|
{"type": u"EndTag", "name": u"select", "data": []}],
|
||
|
FieldStorage({"foo": "bar"}),
|
||
|
[{"type": u"StartTag", "name": u"select", "data": [(u"name", u"foo")]},
|
||
|
{"type": u"StartTag", "name": u"option", "data": [(u"value", u"bar"), (u"selected", u"")]},
|
||
|
{"type": u"Characters", "data": u"quux"},
|
||
|
{"type": u"EndTag", "name": u"option", "data": []},
|
||
|
{"type": u"StartTag", "name": u"option", "data": [(u"value", u"quux")]},
|
||
|
{"type": u"Characters", "data": u"quux"},
|
||
|
{"type": u"EndTag", "name": u"option", "data": []},
|
||
|
{"type": u"EndTag", "name": u"select", "data": []}])
|
||
|
|
||
|
def testSingleSelectTwoOptionsWithValueShouldBeUnselected(self):
|
||
|
self.runTest(
|
||
|
[{"type": u"StartTag", "name": u"select", "data": [(u"name", u"foo")]},
|
||
|
{"type": u"StartTag", "name": u"option", "data": [(u"value", u"bar")]},
|
||
|
{"type": u"Characters", "data": u"quux"},
|
||
|
{"type": u"EndTag", "name": u"option", "data": []},
|
||
|
{"type": u"StartTag", "name": u"option", "data": [(u"value", u"baz")]},
|
||
|
{"type": u"Characters", "data": u"quux"},
|
||
|
{"type": u"EndTag", "name": u"option", "data": []},
|
||
|
{"type": u"EndTag", "name": u"select", "data": []}],
|
||
|
FieldStorage({"foo": "quux"}),
|
||
|
[{"type": u"StartTag", "name": u"select", "data": [(u"name", u"foo")]},
|
||
|
{"type": u"StartTag", "name": u"option", "data": [(u"value", u"bar")]},
|
||
|
{"type": u"Characters", "data": u"quux"},
|
||
|
{"type": u"EndTag", "name": u"option", "data": []},
|
||
|
{"type": u"StartTag", "name": u"option", "data": [(u"value", u"baz")]},
|
||
|
{"type": u"Characters", "data": u"quux"},
|
||
|
{"type": u"EndTag", "name": u"option", "data": []},
|
||
|
{"type": u"EndTag", "name": u"select", "data": []}])
|
||
|
|
||
|
def testSingleSelectTwoOptionsWithoutValue(self):
|
||
|
self.runTest(
|
||
|
[{"type": u"StartTag", "name": u"select", "data": [(u"name", u"foo")]},
|
||
|
{"type": u"StartTag", "name": u"option", "data": []},
|
||
|
{"type": u"Characters", "data": u"bar"},
|
||
|
{"type": u"EndTag", "name": u"option", "data": []},
|
||
|
{"type": u"StartTag", "name": u"option", "data": []},
|
||
|
{"type": u"Characters", "data": u"quux"},
|
||
|
{"type": u"EndTag", "name": u"option", "data": []},
|
||
|
{"type": u"EndTag", "name": u"select", "data": []}],
|
||
|
FieldStorage({"foo": "bar"}),
|
||
|
[{"type": u"StartTag", "name": u"select", "data": [(u"name", u"foo")]},
|
||
|
{"type": u"StartTag", "name": u"option", "data": [(u"selected", u"")]},
|
||
|
{"type": u"Characters", "data": u"bar"},
|
||
|
{"type": u"EndTag", "name": u"option", "data": []},
|
||
|
{"type": u"StartTag", "name": u"option", "data": []},
|
||
|
{"type": u"Characters", "data": u"quux"},
|
||
|
{"type": u"EndTag", "name": u"option", "data": []},
|
||
|
{"type": u"EndTag", "name": u"select", "data": []}])
|
||
|
|
||
|
def testSingleSelectTwoOptionsWithoutValueShouldBeUnselected(self):
|
||
|
self.runTest(
|
||
|
[{"type": u"StartTag", "name": u"select", "data": [(u"name", u"foo")]},
|
||
|
{"type": u"StartTag", "name": u"option", "data": []},
|
||
|
{"type": u"Characters", "data": u"bar"},
|
||
|
{"type": u"EndTag", "name": u"option", "data": []},
|
||
|
{"type": u"StartTag", "name": u"option", "data": []},
|
||
|
{"type": u"Characters", "data": u"baz"},
|
||
|
{"type": u"EndTag", "name": u"option", "data": []},
|
||
|
{"type": u"EndTag", "name": u"select", "data": []}],
|
||
|
FieldStorage({"foo": "quux"}),
|
||
|
[{"type": u"StartTag", "name": u"select", "data": [(u"name", u"foo")]},
|
||
|
{"type": u"StartTag", "name": u"option", "data": []},
|
||
|
{"type": u"Characters", "data": u"bar"},
|
||
|
{"type": u"EndTag", "name": u"option", "data": []},
|
||
|
{"type": u"StartTag", "name": u"option", "data": []},
|
||
|
{"type": u"Characters", "data": u"baz"},
|
||
|
{"type": u"EndTag", "name": u"option", "data": []},
|
||
|
{"type": u"EndTag", "name": u"select", "data": []}])
|
||
|
|
||
|
def testSingleSelectMultiple(self):
|
||
|
self.runTest(
|
||
|
[{"type": u"StartTag", "name": u"select", "data": [(u"name", u"foo"), (u"multiple", u"")]},
|
||
|
{"type": u"StartTag", "name": u"option", "data": [(u"value", u"bar")]},
|
||
|
{"type": u"Characters", "data": u"quux"},
|
||
|
{"type": u"EndTag", "name": u"option", "data": []},
|
||
|
{"type": u"StartTag", "name": u"option", "data": [(u"value", u"quux")]},
|
||
|
{"type": u"Characters", "data": u"quux"},
|
||
|
{"type": u"EndTag", "name": u"option", "data": []},
|
||
|
{"type": u"EndTag", "name": u"select", "data": []}],
|
||
|
FieldStorage({"foo": ["bar", "quux"]}),
|
||
|
[{"type": u"StartTag", "name": u"select", "data": [(u"name", u"foo"), (u"multiple", u"")]},
|
||
|
{"type": u"StartTag", "name": u"option", "data": [(u"value", u"bar"), (u"selected", u"")]},
|
||
|
{"type": u"Characters", "data": u"quux"},
|
||
|
{"type": u"EndTag", "name": u"option", "data": []},
|
||
|
{"type": u"StartTag", "name": u"option", "data": [(u"value", u"quux"), (u"selected", u"")]},
|
||
|
{"type": u"Characters", "data": u"quux"},
|
||
|
{"type": u"EndTag", "name": u"option", "data": []},
|
||
|
{"type": u"EndTag", "name": u"select", "data": []}])
|
||
|
|
||
|
def testTwoSelect(self):
|
||
|
self.runTest(
|
||
|
[{"type": u"StartTag", "name": u"select", "data": [(u"name", u"foo")]},
|
||
|
{"type": u"StartTag", "name": u"option", "data": [(u"value", u"bar")]},
|
||
|
{"type": u"Characters", "data": u"quux"},
|
||
|
{"type": u"EndTag", "name": u"option", "data": []},
|
||
|
{"type": u"StartTag", "name": u"option", "data": [(u"value", u"quux")]},
|
||
|
{"type": u"Characters", "data": u"quux"},
|
||
|
{"type": u"EndTag", "name": u"option", "data": []},
|
||
|
{"type": u"EndTag", "name": u"select", "data": []},
|
||
|
{"type": u"StartTag", "name": u"select", "data": [(u"name", u"foo")]},
|
||
|
{"type": u"StartTag", "name": u"option", "data": [(u"value", u"bar")]},
|
||
|
{"type": u"Characters", "data": u"quux"},
|
||
|
{"type": u"EndTag", "name": u"option", "data": []},
|
||
|
{"type": u"StartTag", "name": u"option", "data": [(u"value", u"quux")]},
|
||
|
{"type": u"Characters", "data": u"quux"},
|
||
|
{"type": u"EndTag", "name": u"option", "data": []},
|
||
|
{"type": u"EndTag", "name": u"select", "data": []}],
|
||
|
FieldStorage({"foo": ["bar", "quux"]}),
|
||
|
[{"type": u"StartTag", "name": u"select", "data": [(u"name", u"foo")]},
|
||
|
{"type": u"StartTag", "name": u"option", "data": [(u"value", u"bar"), (u"selected", u"")]},
|
||
|
{"type": u"Characters", "data": u"quux"},
|
||
|
{"type": u"EndTag", "name": u"option", "data": []},
|
||
|
{"type": u"StartTag", "name": u"option", "data": [(u"value", u"quux")]},
|
||
|
{"type": u"Characters", "data": u"quux"},
|
||
|
{"type": u"EndTag", "name": u"option", "data": []},
|
||
|
{"type": u"EndTag", "name": u"select", "data": []},
|
||
|
{"type": u"StartTag", "name": u"select", "data": [(u"name", u"foo")]},
|
||
|
{"type": u"StartTag", "name": u"option", "data": [(u"value", u"bar")]},
|
||
|
{"type": u"Characters", "data": u"quux"},
|
||
|
{"type": u"EndTag", "name": u"option", "data": []},
|
||
|
{"type": u"StartTag", "name": u"option", "data": [(u"value", u"quux"), (u"selected", u"")]},
|
||
|
{"type": u"Characters", "data": u"quux"},
|
||
|
{"type": u"EndTag", "name": u"option", "data": []},
|
||
|
{"type": u"EndTag", "name": u"select", "data": []}])
|
||
|
|
||
|
def buildTestSuite():
|
||
|
return unittest.defaultTestLoader.loadTestsFromName(__name__)
|
||
|
|
||
|
def main():
|
||
|
buildTestSuite()
|
||
|
unittest.main()
|
||
|
|
||
|
if __name__ == "__main__":
|
||
|
main()
|