As especificações do controlador para ações JS ( format: :js
) estão falhando com Rails 4.1.0.rc1, produzindo o seguinte erro:
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.
Estou apenas supondo, mas este pode ser um novo recurso do Rails que está afetando o RSpec e que provavelmente gera essas solicitações de um domínio diferente do esperado pelo aplicativo.
Você pode reproduzir isso clonando https://github.com/mezuro/mezuro , no branch rails4.1, após bundle install
, execute: rspec spec/controllers/repositories_controller_spec.rb
.
Observando esta aplicação, posso dizer que isso afeta as solicitações GET, enquanto as solicitações POST ainda funcionam bem.
Executar o aplicativo no navegador não gera erros ou avisos, bem como testes de pepino. E os testes com Rails 4.0.3 estão OK. Além disso, testei isso com rspec-rails 2.14.1 e 3.0.0.beta com os mesmos resultados.
Muito obrigado!
Causa: trilhos / trilhos # 13345
Com base no PR, parece que você precisa fazer xhr :get
vez de get
, ou passar manualmente o token de verificação. Nós não implementamos diretamente a função get
, ela faz parte dos ajudantes de teste do Rails, então você deve usar o método preferido deles ( xhr :get
).
Fechando porque também falharia no MiniTest ...
/ cc @myronmarston @alindeman
Obrigado @JonRowe , com xhr :get
funcionou como esperado. Desculpe pela inconveniência.
Não se preocupe, eu tive que pesquisar isso para descobrir o que estava acontecendo! :)
Isso é útil
http://edgeguides.rubyonrails.org/upgrading_ruby_on_rails.html#csrf -protection-from-remote-script-tags
Última atualização , agora você pode usar:
(ruby)
get :action, xhr: true, format: :js
Comentários muito úteis
Última atualização , agora você pode usar:
(ruby) get :action, xhr: true, format: :js