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