diff options
-rw-r--r-- | ipalib/plugins/batch.py | 11 | ||||
-rw-r--r-- | tests/test_xmlrpc/test_batch_plugin.py | 60 |
2 files changed, 59 insertions, 12 deletions
diff --git a/ipalib/plugins/batch.py b/ipalib/plugins/batch.py index 8abad5e1e..db9c08f10 100644 --- a/ipalib/plugins/batch.py +++ b/ipalib/plugins/batch.py @@ -102,8 +102,6 @@ class batch(Command): ) result['error']=None except Exception, e: - result = dict() - result['error'] = unicode(e) if isinstance(e, errors.RequirementError) or \ isinstance(e, errors.CommandError): self.info( @@ -113,6 +111,15 @@ class batch(Command): self.info( '%s: batch: %s(%s): %s', context.principal, name, ', '.join(api.Command[name]._repr_iter(**params)), e.__class__.__name__ ) + if isinstance(e, errors.PublicError): + reported_error = e + else: + reported_error = errors.InternalError() + result = dict( + error=reported_error.strerror, + error_code=reported_error.errno, + error_name=unicode(type(reported_error).__name__), + ) results.append(result) return dict(count=len(results) , results=results) diff --git a/tests/test_xmlrpc/test_batch_plugin.py b/tests/test_xmlrpc/test_batch_plugin.py index d69bfd9c4..19728adda 100644 --- a/tests/test_xmlrpc/test_batch_plugin.py +++ b/tests/test_xmlrpc/test_batch_plugin.py @@ -121,8 +121,16 @@ class test_batch(Declarative): expected=dict( count=2, results=[ - dict(error=u'%s: group not found' % group1), - dict(error=u'%s: group not found' % group1), + dict( + error=u'%s: group not found' % group1, + error_name=u'NotFound', + error_code=4001, + ), + dict( + error=u'%s: group not found' % group1, + error_name=u'NotFound', + error_code=4001, + ), ], ), ), @@ -137,7 +145,11 @@ class test_batch(Declarative): expected=dict( count=2, results=deepequal_list( - dict(error=u'%s: group not found' % group1), + dict( + error=u'%s: group not found' % group1, + error_name=u'NotFound', + error_code=4001, + ), dict( value=group1, summary=u'Added group "testgroup1"', @@ -180,13 +192,41 @@ class test_batch(Declarative): expected=dict( count=7, results=deepequal_list( - dict(error=u"unknown command 'nonexistent_ipa_command'"), - dict(error=u"unknown command 'user-del'"), - dict(error=u"'method' is required"), - dict(error=u"'params' is required"), - dict(error=u"'givenname' is required"), - dict(error=u"'description' is required"), - dict(error=Fuzzy(u"invalid 'gid'.*")), + dict( + error=u"unknown command 'nonexistent_ipa_command'", + error_name=u'CommandError', + error_code=905, + ), + dict( + error=u"unknown command 'user-del'", + error_name=u'CommandError', + error_code=905, + ), + dict( + error=u"'method' is required", + error_name=u'RequirementError', + error_code=3007, + ), + dict( + error=u"'params' is required", + error_name=u'RequirementError', + error_code=3007, + ), + dict( + error=u"'givenname' is required", + error_name=u'RequirementError', + error_code=3007, + ), + dict( + error=u"'description' is required", + error_name=u'RequirementError', + error_code=3007, + ), + dict( + error=Fuzzy(u"invalid 'gid'.*"), + error_name=u'ConversionError', + error_code=3008, + ), ), ), ), |