summaryrefslogtreecommitdiff
path: root/src/mailman/commands/docs/inject.txt
diff options
context:
space:
mode:
authorBarry Warsaw2009-09-19 16:51:15 -0400
committerBarry Warsaw2009-09-19 16:51:15 -0400
commita5456442682ff20c4b0d3a9d166d5fa9bf06a7de (patch)
tree7ad2aec53b1acc53d879e063ef7339c2302284c7 /src/mailman/commands/docs/inject.txt
parentca84b1a8852a86464184586441c3d0fd66c879b1 (diff)
downloadmailman-a5456442682ff20c4b0d3a9d166d5fa9bf06a7de.tar.gz
mailman-a5456442682ff20c4b0d3a9d166d5fa9bf06a7de.tar.zst
mailman-a5456442682ff20c4b0d3a9d166d5fa9bf06a7de.zip
Convert bin/inject to bin/mailman inject
Expose the database store on .store instead of ._store A few other cleanups.
Diffstat (limited to 'src/mailman/commands/docs/inject.txt')
-rw-r--r--src/mailman/commands/docs/inject.txt193
1 files changed, 193 insertions, 0 deletions
diff --git a/src/mailman/commands/docs/inject.txt b/src/mailman/commands/docs/inject.txt
new file mode 100644
index 000000000..b254569d3
--- /dev/null
+++ b/src/mailman/commands/docs/inject.txt
@@ -0,0 +1,193 @@
+==============================
+Command line message injection
+==============================
+
+You can inject a message directly into a queue directory via the command
+line.
+
+ >>> from mailman.commands.cli_inject import Inject
+ >>> command = Inject()
+
+ >>> class FakeArgs:
+ ... queue = None
+ ... show = False
+ ... filename = None
+ ... listname = None
+ >>> args = FakeArgs()
+
+ >>> class FakeParser:
+ ... def error(self, message):
+ ... print message
+ >>> command.parser = FakeParser()
+
+It's easy to find out which queues are available.
+
+ >>> args.show = True
+ >>> command.process(args)
+ Available queues:
+ archive
+ bad
+ bounces
+ command
+ digest
+ in
+ lmtp
+ maildir
+ news
+ out
+ pipeline
+ rest
+ retry
+ shunt
+ virgin
+
+ >>> args.show = False
+
+Usually, the text of the message to inject is in a file.
+
+ >>> import os, tempfile
+ >>> fd, filename = tempfile.mkstemp()
+ >>> with os.fdopen(fd, 'w') as fp:
+ ... print >> fp, """\
+ ... From: aperson@example.com
+ ... To: test@example.com
+ ... Subject: testing
+ ...
+ ... This is a test message.
+ ... """
+
+However, the mailing list name is always required.
+
+ >>> args.filename = filename
+ >>> command.process(args)
+ List name is required
+
+Let's provide a list name and try again.
+
+ >>> mlist = create_list('test@example.com')
+ >>> transaction.commit()
+
+ >>> in_queue = config.switchboards['in']
+ >>> len(in_queue.files)
+ 0
+ >>> args.listname = ['test@example.com']
+ >>> command.process(args)
+
+By default, the incoming queue is used.
+
+ >>> len(in_queue.files)
+ 1
+
+ >>> from mailman.testing.helpers import get_queue_messages
+ >>> item = get_queue_messages('in')[0]
+ >>> print item.msg.as_string()
+ From: aperson@example.com
+ To: test@example.com
+ Subject: testing
+ Message-ID: ...
+ Date: ...
+ <BLANKLINE>
+ This is a test message.
+ <BLANKLINE>
+ <BLANKLINE>
+
+ >>> dump_msgdata(item.msgdata)
+ _parsemsg : False
+ listname : test@example.com
+ original_size: 90
+ version : 3
+
+But a different queue can be specified on the command line.
+
+ >>> args.queue = 'virgin'
+ >>> command.process(args)
+
+ >>> len(in_queue.files)
+ 0
+ >>> virgin_queue = config.switchboards['virgin']
+ >>> len(virgin_queue.files)
+ 1
+ >>> item = get_queue_messages('virgin')[0]
+ >>> print item.msg.as_string()
+ From: aperson@example.com
+ To: test@example.com
+ Subject: testing
+ Message-ID: ...
+ Date: ...
+ <BLANKLINE>
+ This is a test message.
+ <BLANKLINE>
+ <BLANKLINE>
+
+ >>> dump_msgdata(item.msgdata)
+ _parsemsg : False
+ listname : test@example.com
+ original_size: 90
+ version : 3
+
+ # Clean up the tempfile.
+ >>> os.remove(filename)
+
+
+Standard input
+==============
+
+The message text can also be provided on standard input.
+
+ >>> from StringIO import StringIO
+
+ # Remember: we've got unicode literals turned on.
+ >>> standard_in = StringIO(str("""\
+ ... From: bperson@example.com
+ ... To: test@example.com
+ ... Subject: another test
+ ...
+ ... This is another test message.
+ ... """))
+
+ >>> import sys
+ >>> sys.stdin = standard_in
+ >>> args.filename = '-'
+ >>> args.queue = None
+
+ >>> command.process(args)
+ >>> len(in_queue.files)
+ 1
+ >>> item = get_queue_messages('in')[0]
+ >>> print item.msg.as_string()
+ From: bperson@example.com
+ To: test@example.com
+ Subject: another test
+ Message-ID: ...
+ Date: ...
+ <BLANKLINE>
+ This is another test message.
+ <BLANKLINE>
+ <BLANKLINE>
+
+ >>> dump_msgdata(item.msgdata)
+ _parsemsg : False
+ listname : test@example.com
+ original_size: 100
+ version : 3
+
+ # Clean up.
+ >>> sys.stdin = sys.__stdin__
+ >>> args.filename = filename
+
+
+Errors
+======
+
+It is an error to specify a queue that doesn't exist.
+
+ >>> args.queue = 'xxbogusxx'
+ >>> command.process(args)
+ No such queue: xxbogusxx
+
+It is also an error to specify a mailing list that doesn't exist.
+
+ >>> args.queue = None
+ >>> args.listname = ['bogus']
+ >>> command.process(args)
+ No such list: bogus