This is not the best solution though, better would be if the credential LLSD would contain a field saying
what sort of credential it is instead that we need to test for md5-password or password occurrence.
It all goes via one interface ISerialization which has a serialize() method which serializes the context into whatever output format and it has a content_type attribute which defines the content type of the output (default is LLSD).
There is a ISerialization adapter configured for both capabilities (from dicts) and PlainPasswordCredentials. See agentdomain.py for how to use it.
For deserialization there is a IDeserialization utility now. It is registered under the name of the content type it can deserialize. It produces dicts always. Use it like this:
deserializer = getUtility(IDeserialization,name="application/llsd-xml")
dict = deserializer.deserialize_string(s)
Tests for this component will be added later but they are indirectly tested by the login test which passes.