~landscape/zope3/newer-from-ztk

« back to all changes in this revision

Viewing changes to src/twisted/test/test_postfix.py

  • Committer: Thomas Hervé
  • Date: 2009-07-08 13:52:04 UTC
  • Revision ID: thomas@canonical.com-20090708135204-df5eesrthifpylf8
Remove twisted copy

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (c) 2001-2004 Twisted Matrix Laboratories.
2
 
# See LICENSE for details.
3
 
 
4
 
#
5
 
 
6
 
"""
7
 
Test cases for twisted.protocols.postfix module.
8
 
"""
9
 
 
10
 
from twisted.trial import unittest
11
 
from twisted import protocols
12
 
from twisted import internet
13
 
from twisted.protocols import loopback
14
 
from twisted.protocols import postfix
15
 
from twisted.internet import defer, protocol
16
 
from twisted.test.test_protocols import StringIOWithoutClosing
17
 
 
18
 
class PostfixTCPMapQuoteTestCase(unittest.TestCase):
19
 
    data = [
20
 
        # (raw, quoted, [aliasQuotedForms]),
21
 
        ('foo', 'foo'),
22
 
        ('foo bar', 'foo%20bar'),
23
 
        ('foo\tbar', 'foo%09bar'),
24
 
        ('foo\nbar', 'foo%0Abar', 'foo%0abar'),
25
 
        ('foo\r\nbar', 'foo%0D%0Abar', 'foo%0D%0abar', 'foo%0d%0Abar', 'foo%0d%0abar'),
26
 
        ('foo ', 'foo%20'),
27
 
        (' foo', '%20foo'),
28
 
        ]
29
 
 
30
 
    def testData(self):
31
 
        for entry in self.data:
32
 
            raw = entry[0]
33
 
            quoted = entry[1:]
34
 
 
35
 
            self.assertEquals(postfix.quote(raw), quoted[0])
36
 
            for q in quoted:
37
 
                self.assertEquals(postfix.unquote(q), raw)
38
 
 
39
 
class PostfixTCPMapServerTestCase:
40
 
    data = {
41
 
        # 'key': 'value',
42
 
        }
43
 
 
44
 
    chat = [
45
 
        # (input, expected_output),
46
 
        ]
47
 
 
48
 
    def testChat(self):
49
 
        factory = postfix.PostfixTCPMapDictServerFactory(self.data)
50
 
        output = StringIOWithoutClosing()
51
 
        transport = internet.protocol.FileWrapper(output)
52
 
 
53
 
        protocol = postfix.PostfixTCPMapServer()
54
 
        protocol.service = factory
55
 
        protocol.factory = factory
56
 
        protocol.makeConnection(transport)
57
 
 
58
 
        for input, expected_output in self.chat:
59
 
            protocol.lineReceived(input)
60
 
            # self.runReactor(1)
61
 
            self.assertEquals(output.getvalue(), expected_output,
62
 
                              'For %r, expected %r but got %r' % (
63
 
                input, expected_output, output.getvalue()
64
 
                ))
65
 
            output.truncate(0)
66
 
        protocol.setTimeout(None)
67
 
 
68
 
    def testDeferredChat(self):
69
 
        factory = postfix.PostfixTCPMapDeferringDictServerFactory(self.data)
70
 
        output = StringIOWithoutClosing()
71
 
        transport = internet.protocol.FileWrapper(output)
72
 
 
73
 
        protocol = postfix.PostfixTCPMapServer()
74
 
        protocol.service = factory
75
 
        protocol.factory = factory
76
 
        protocol.makeConnection(transport)
77
 
 
78
 
        for input, expected_output in self.chat:
79
 
            protocol.lineReceived(input)
80
 
            # self.runReactor(1)
81
 
            self.assertEquals(output.getvalue(), expected_output,
82
 
                              'For %r, expected %r but got %r' % (
83
 
                input, expected_output, output.getvalue()
84
 
                ))
85
 
            output.truncate(0)
86
 
        protocol.setTimeout(None)
87
 
 
88
 
class Valid(PostfixTCPMapServerTestCase, unittest.TestCase):
89
 
    data = {
90
 
        'foo': 'ThisIs Foo',
91
 
        'bar': ' bar really is found\r\n',
92
 
        }
93
 
    chat = [
94
 
        ('get', "400 Command 'get' takes 1 parameters.\n"),
95
 
        ('get foo bar', "500 \n"),
96
 
        ('put', "400 Command 'put' takes 2 parameters.\n"),
97
 
        ('put foo', "400 Command 'put' takes 2 parameters.\n"),
98
 
        ('put foo bar baz', "500 put is not implemented yet.\n"),
99
 
        ('put foo bar', '500 put is not implemented yet.\n'),
100
 
        ('get foo', '200 ThisIs%20Foo\n'),
101
 
        ('get bar', '200 %20bar%20really%20is%20found%0D%0A\n'),
102
 
        ('get baz', '500 \n'),
103
 
        ('foo', '400 unknown command\n'),
104
 
        ]