J'ai eu ce script autonome, me permettant d'envoyer la requête XML, mais nécessitant un serveur:
require 'rubygems'
require 'net/http'
require 'json'
url = URI.parse('http://localhost:3030/myresource.xml')
request = Net::HTTP::Post.new(url.path)
request.content_type="text/xml"
request.basic_auth('user', 'secret')
request.body = "<?xml version='1.0' encoding='UTF-8'?><somedata><name>Test Name 1</name><description>Some data for testing</description></somedata>"
response = Net::HTTP.start(url.host, url.port) {|http| http.request(request)}
puts response
enfin j'ai pu le faire sans démarrer un serveur, en utilisant rspec 2. Mettre cela dans un fichier de spécifications sous spec/requests
me permet de le faire dans mon application sans webrat ou capybara.
pour XML
post("/myresource.xml",
some_xml_string,
{"CONTENT_TYPE" => "text/xml",
"HTTP_AUTHORIZATION" => ActionController::HttpAuthentication::Basic.encode_credentials("user", "secret")})
et JSON
post("/myresource.json",
some_json_string,
{"CONTENT_TYPE" => "application/json",
"HTTP_AUTHORIZATION" => ActionController::HttpAuthentication::Basic.encode_credentials("user", "secret")})
Maintenant, je suppose que je peux construire le some_xml_string
à partir d'une ressource distante comme mon documentation fichier xml ou JSON (certains http: // ressource), par exemple. Oui, c'est plus à entretenir et le test sera fragile. Je vais devoir y réfléchir davantage ... Changer les API utilisées par des personnes externes n'est pas quelque chose à prendre à la légère, toujours beaucoup de compromis. Mieux suggère sont les bienvenus!
Comment "générer les exemples d'API pour la documentation à partir de ceci"? – oma
Je suppose que vous voulez dire que je devrais utiliser 'some_hash.to_xml' et' some_hash.to_json'. J'ai déjà beaucoup de tests envoyant des hashes au contrôleur, donc je suppose que je pourrais aller avec ça .. Comment documentez-vous vos API à d'autres? – oma