Task #6250
Updated by Roger Dahl about 10 years ago
A number of the test for the Python CN Client currently fail due to 500 ServiceFailure responses from the server. The CN calls are not meant to complete successfully because they're performed with random values and without certificates, but the tests do expect specific exceptions, such valid DataONE types as 401 NotAuthorized when calling an API without a certificate.
While 500 ServiceFailure is not exactly a bug, it would be great to get an exception that relates to the actual issue with the request.
For instance, a call to CNIdentity.registerAccount() gives:
<?xml version="1.0" encoding="UTF-8"?>
<error detailCode="4520" errorCode="500" name="ServiceFailure">
<description>Could not counstruct partial tree: Invalid name: Sidalcea</description>
</error>
responses. I'm not sure how many of APIs this applies to, but it's at least several of these:
CNCore.setObsoletedBy()
CNAuthorization.setRightsHolder()
CNAuthorization.isAuthorized()
CNIdentity.registerAccount()
CNIdentity.updateAccount()
CNIdentity.verifyAccount()
CNIdentity.getSubjectInfo()
CNIdentity.listSubjects()
CNIdentity.mapIdentity()
CNIdentity.removeMapIdentity()
CNIdentity.requestMapIdentity()
CNIdentity.confirmMapIdentity()
CNIdentity.denyMapIdentity()
CNIdentity.createGroup()
CNIdentity.addGroupMembers()
CNIdentity.removeGroupMembers()
CNReplication.setReplicationStatus()
CNReplication.updateReplicationMetadata()
CNReplication.setReplicationPolicy()
CNReplication.isNodeAuthorized()
CNRegister.updateNodeCapabilities()
CNRegister.register()
While 500 ServiceFailure is not exactly a bug, it would be great to get an exception that relates to the actual issue with the request.
For instance, a call to CNIdentity.registerAccount() gives:
<?xml version="1.0" encoding="UTF-8"?>
<error detailCode="4520" errorCode="500" name="ServiceFailure">
<description>Could not counstruct partial tree: Invalid name: Sidalcea</description>
</error>
responses. I'm not sure how many of APIs this applies to, but it's at least several of these:
CNCore.setObsoletedBy()
CNAuthorization.setRightsHolder()
CNAuthorization.isAuthorized()
CNIdentity.registerAccount()
CNIdentity.updateAccount()
CNIdentity.verifyAccount()
CNIdentity.getSubjectInfo()
CNIdentity.listSubjects()
CNIdentity.mapIdentity()
CNIdentity.removeMapIdentity()
CNIdentity.requestMapIdentity()
CNIdentity.confirmMapIdentity()
CNIdentity.denyMapIdentity()
CNIdentity.createGroup()
CNIdentity.addGroupMembers()
CNIdentity.removeGroupMembers()
CNReplication.setReplicationStatus()
CNReplication.updateReplicationMetadata()
CNReplication.setReplicationPolicy()
CNReplication.isNodeAuthorized()
CNRegister.updateNodeCapabilities()
CNRegister.register()