OLD | NEW |
| (Empty) |
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%0
abar'), | |
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 ] | |
OLD | NEW |