Rspec-rails: `format: :js` verursacht Fehler auf Rails 4.1.0.rc1

Erstellt am 9. März 2014  ·  6Kommentare  ·  Quelle: rspec/rspec-rails

Controller-Spezifikationen für JS-Aktionen ( format: :js ) schlagen mit Rails 4.1.0.rc1 fehl und erzeugen den folgenden Fehler:

ActionController::InvalidCrossOriginRequest:
       Security warning: an embedded <script> tag on another site requested protected JavaScript. If you know what you're doing, go ahead and disable forgery protection on this action to permit cross-origin JavaScript embedding.

Ich vermute nur, aber dies könnte eine neue Rails-Funktion sein, die sich auf RSpec auswirkt, die wahrscheinlich diese Anforderungen von einer anderen Domäne generiert, als von der Anwendung erwartet.

Sie können dies reproduzieren, indem Sie https://github.com/mezuro/mezuro klonen, auf dem Zweig rails4.1, nach bundle install ausführen: rspec spec/controllers/repositories_controller_spec.rb .

Wenn ich diese Anwendung beobachte, kann ich auch sagen, dass dies GET-Anfragen betrifft, während POST-Anfragen noch gut funktionieren.

Das Ausführen der Anwendung im Browser führt zu keinen Fehlern oder Warnungen sowie Gurkentests. Und die Tests mit Rails 4.0.3 sind OK. Außerdem habe ich dies mit den gleichen Ergebnissen gegen rspec-rails 2.14.1 und 3.0.0.beta getestet.

Vielen Dank!

Hilfreichster Kommentar

Letztes Update , jetzt können Sie Folgendes verwenden:
(ruby) get :action, xhr: true, format: :js

Alle 6 Kommentare

Ursache: Schienen/Schienen#13345

Basierend auf dem PR scheint es, dass Sie xhr :get statt get tun oder das Verifizierungstoken manuell übergeben müssen. Wir implementieren die Funktion get nicht direkt, sie ist Teil der Rails-Testhilfen, daher sollten Sie ihre bevorzugte Methode verwenden ( xhr :get ).

Wird geschlossen, da dies auch bei MiniTest fehlschlagen würde...

/cc @myronmarston @alindeman

Danke @JonRowe , mit xhr :get es wie erwartet funktioniert. Entschuldigung für die Unannehmlichkeiten.

Keine Sorge, ich musste das recherchieren, um herauszufinden, was los war! :)

Das ist hilfreich
http://edgeguides.rubyonrails.org/upgrading_ruby_on_rails.html#csrf -protection-from-remote-script-tags

Letztes Update , jetzt können Sie Folgendes verwenden:
(ruby) get :action, xhr: true, format: :js

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen