Thread POST-Requests mit beliebigem Content-type beim Testen von Catalyst-Applikationen
(1 answers)
Opened by skirnir at 2009-06-12 14:17
Hallo,
ich bin gerade dabei, Tests für eine Catalyst-Applikation zu schreiben. Diese hat die Eigenart, dass sie Logins in einem REST-Controller handelt und die Action als Login-Request gerne ein "POST" mit Content-type "application/json" hätte, so dass Login und Passwort in einem JSON-Objekt im Body der POST-Request übermittelt werden müssen. Analog zum Beispiel in Jonathan Rockways Catalyst-Buch (S. 165) habe ich also die folgende Fake-Datenbank mit log_in Methode geschrieben: Code: (dl
)
1 package MyApp::Test::Database::Live; Da Test::WWW::Mechanize::Catalyst nur "einfache" POSTs zulässt, bin ich den Umweg über Catalyst::Test gegangen. Ich hatte gehofft, dass ich die Beschränkung auf "host" als einzigen zulässigen Header-Parameter umgehen könnte, habe ich vorher ein HTTP::Request-Objekt selbst gebaut. Die Request aus dem Beispielcode funktioniert einwandfrei, wenn ich sie mit LWP::UserAgent an einen "echten" Server schicke, aber im Kontext meiner Tests kommt der Body nicht an (Fehlermeldung der REST-Action: "I would have deserialized, but there was nothing in the body!") Kann mir vielleicht jemand sagen, wie ich eine Catalyst-Applikation mit "selbstgebauten" Requests testen kann? P.S.: Als letzte Möglichkeit bliebe natürlich, den Login-Prozess derart umzuschreiben, dass einfach eine Form submittet würde, aber mir geht's inzwischen auch ums Prinzip. |