2012-11-27 1 views
1

J'utilise ActiveMerchant pour intégrer le CIM Authorize.net. Je suis en train d'écrire des tests automatisés, et j'ai commencé à mettre en place des appels Webmock pour que mes tests ne soient pas en train de frapper Authorize.net chaque fois qu'ils s'exécutent.Utilisation de Webmock pour simuler une réponse ActiveMerchant réussie

J'ai créé des fichiers XML à partir des réponses de données de requêtes brutes et, pour la plupart, cela fonctionne bien. Cependant, quand je mock up une réponse réussie, ActiveMerchant pour une raison quelconque me dit toujours que Response.success? ce n'est pas vrai.

Ma fonction

if self.cim_customer_profile_id.nil? 
    ActiveMerchant::Billing::Base.mode = :test 

    customer_profile_information = { 
    :profile  => { 
     :merchant_customer_id => self.customer.username.first(20), 
     :email => self.customer.email 
    } 
    } 

    gateway = ActiveMerchant::Billing::AuthorizeNetCimGateway.new(
    :login => AUTHORIZE_NET_API_LOGIN_ID, 
    :password => AUTHORIZE_NET_API_TRANSACTION_KEY 
) 

    response = gateway.create_customer_profile(customer_profile_information) 

    if response.success? 
    self.cim_customer_profile_id = response.authorization 
    else 
    raise StandardError, response.message 
    end 
end 

Et ma réponse est bouchonné:

HTTP/1.1 200 OK 
Content-Type: text/xml; charset=utf-8 

<?xml version="1.0" encoding="utf-8"?> 
<createCustomerProfileResponse xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns='AnetApi/xml/v1/schema/AnetApiSchema.xsd'> 
    <messages> 
    <resultCode> 
     Ok 
    </resultCode> 
    <message> 
     <code> 
     I00001 
     </code> 
     <text> 
     Successful. 
     </text> 
    </message> 
    </messages> 
    <customerProfileId>10793616</customerProfileId> 
    <customerPaymentProfileIdList/> 
    <customerShippingAddressIdList/> 
    <validationDirectResponseList/> 
</createCustomerProfileResponse> 

Y at-il des raisons pour lesquelles ActiveMerchant ne fonctionnera pas avec une demande réussie, bouchonné,? Ou est-ce que je manque quelque chose qu'ActiveMerchant exige pour s'inscrire que la réponse est effectivement réussie?

Répondre

1

Ah, je suis tellement bête. J'ai ajouté de nouvelles lignes après toutes mes balises XML pour plus de lisibilité, mais elles interfèrent avec la façon dont ActiveMerchant analyse et évalue la réponse.

Ainsi, la maquette de réponse XML correcte serait:

HTTP/1.1 200 OK 
Content-Type: text/xml; charset=utf-8 
<?xml version="1.0" encoding="utf-8"?> 
<createCustomerProfileResponse xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns='AnetApi/xml/v1/schema/AnetApiSchema.xsd'> 
    <messages> 
    <resultCode>Ok</resultCode> 
    <message> 
     <code>I00001</code> 
     <text>Successful.</text> 
    </message> 
    </messages> 
    <customerProfileId>10793616</customerProfileId> 
    <customerPaymentProfileIdList/> 
    <customerShippingAddressIdList/> 
    <validationDirectResponseList/> 
</createCustomerProfileResponse> 
Questions connexes