Rails 2では、次のようにコントローラーテストでホストおよびその他のRackenvプロパティを指定できます。
should "spoof host and remote_addr" do
get "/thing/2", {}, :remote_addr => "192.71.1.2", :host => "somewhere.else"
end
ただし、何らかの理由で、これはRails 3では機能しません。通常のコントローラーで試しましたが、env["HTTP_HOST"]
期待どおりに設定されていません(と同じ"REMOTE_ADDR"
)。私もこれを試しました:
should "use host and remote_addr" do
request.env["REMOTE_ADDR"] = "192.71.1.2"
request.env["HTTP_HOST"] = "git.gittit.it"
get "/thing/1"
end
これは、以前はRails 2でも機能していましたが、Rails 3では機能しなくなりました。最終テストとして、ベアラックアプリに解決されるルートでこれを試しましたが、同じ結果になりました。
Rails 3コントローラーテストでホストとIPアドレスをスプーフィングするにはどうすればよいですか?