function test_protoErrorFields()
{
$contact = '*****@*****.**';
$reference = 'Trac ticket number MAX_INT';
$error = 'poltergeist';
$openid1_args = array('openid.identitiy' => 'invalid', 'openid.mode' => 'checkid_setup');
$openid2_args = $openid1_args;
$openid2_args = array_merge($openid2_args, array('openid.ns' => Auth_OpenID_OPENID2_NS));
// Check presence of optional fields in both protocol versions
$openid1_msg = Auth_OpenID_Message::fromPostArgs($openid1_args);
$p = new Auth_OpenID_ServerError($openid1_msg, $error, $reference, $contact);
$reply = $p->toMessage();
$this->assertEquals($reply->getArg(Auth_OpenID_OPENID_NS, 'reference'), $reference);
$this->assertEquals($reply->getArg(Auth_OpenID_OPENID_NS, 'contact'), $contact);
$openid2_msg = Auth_OpenID_Message::fromPostArgs($openid2_args);
$p = new Auth_OpenID_ServerError($openid2_msg, $error, $reference, $contact);
$reply = $p->toMessage();
$this->assertEquals($reply->getArg(Auth_OpenID_OPENID_NS, 'reference'), $reference);
$this->assertEquals($reply->getArg(Auth_OpenID_OPENID_NS, 'contact'), $contact);
}