Rev 213: Implemented validation of submissions via XMLRPC. in http://bzr.daniel-watkins.co.uk/pqm/xmlrpc
Daniel Watkins
daniel at daniel-watkins.co.uk
Fri Aug 1 03:12:02 BST 2008
At http://bzr.daniel-watkins.co.uk/pqm/xmlrpc
------------------------------------------------------------
revno: 213
revision-id: daniel at daniel-watkins.co.uk-20080801021025-70b2g6y5e83nfrn8
parent: daniel at daniel-watkins.co.uk-20080801020949-y92dvyp9qaqjwx9h
committer: Daniel Watkins <daniel at daniel-watkins.co.uk>
branch nick: xmlrpc-validation
timestamp: Fri 2008-08-01 03:10:25 +0100
message:
Implemented validation of submissions via XMLRPC.
-------------- next part --------------
=== modified file 'pqm/ui/tests/test_xmlrpc.py'
--- a/pqm/ui/tests/test_xmlrpc.py 2008-08-01 01:29:02 +0000
+++ b/pqm/ui/tests/test_xmlrpc.py 2008-08-01 02:10:25 +0000
@@ -17,6 +17,7 @@
import os
+from pqm.errors import PQMCmdFailure
from pqm.tests import sample_message, sample_message_bad, TestCaseWithQueue
from pqm.ui.twistd import PQMInfo
from pqm.ui.xmlrpc import PQM_XMLRPC
@@ -46,7 +47,7 @@
def test_invalid_submission(self):
xmlrpc = self.get_xmlrpc()
- out = xmlrpc.xmlrpc_submit(sample_message_bad)
+ out = self.assertRaises(PQMCmdFailure, xmlrpc.xmlrpc_submit, sample_message_bad)
self.assertNotEqual('Success!', out)
queuedir = xmlrpc.pqminfo.queuedir
patches = [f for f in os.listdir(queuedir) if f.startswith('patch.')]
=== modified file 'pqm/ui/xmlrpc.py'
--- a/pqm/ui/xmlrpc.py 2008-08-01 00:43:22 +0000
+++ b/pqm/ui/xmlrpc.py 2008-08-01 02:10:25 +0000
@@ -24,7 +24,7 @@
import pqm
from pqm.errors import PQMException
-from pqm.script import get_email_string, read_email_from_string
+from pqm.script import Command, get_email_string, read_email_from_string
from pqm.ui.twistd import FakeOptions
@@ -35,6 +35,16 @@
self.pqminfo = pqminfo
self.logger = logging.getLogger('pqm')
+ def validate(self, email_string):
+ s = StringIO(email_string)
+ configp = self.pqminfo.configp
+ branch_spec_handler = pqm.BranchSpecOptionHandler(configp)
+ script = pqm.Script(s, self.logger, False, 0, branch_spec_handler,
+ configp)
+ for command in script.getCommands():
+ Command.run(command)
+ command.check_is_valid()
+
def xmlrpc_submit(self, text):
try:
queuedir = self.pqminfo.queuedir
@@ -54,6 +64,7 @@
# Process input
email = read_email_from_string(self.logger, text)
email_string = get_email_string(self.logger, options, email)
+ self.validate(email_string)
# Write script
pqm.write_script(queuedir, email_string)
return "Success!"
More information about the bazaar-commits
mailing list