Rails アプリ バンドルを capybara 2.0.0.beta2 から現在の 2.0.1 バージョンに更新しました。(たまたままだベータ版でした。) また、Rspec を 2.11.0 から 2.12.0 に更新して、URL ヘルパーの組み込み方法の変更に対応できるようにしました。
この更新の前に、管理者以外のユーザーが新しいユーザーを作成できないことや、同様の許可/フォームのハッキングの基本などを検証するいくつかのテストを行いました。また、大量割り当て攻撃がカバーされていることを確認するための仕様もあります。それは非常に簡単で、うまく機能しましたが、今は壊れています。
context "non-admin users can" do
before(:each) do
login_as_user
end
it "Not create new users" do
page.driver.post users_path, { :params => {
user_name: "user1",
user_email: "name@example.com",
user_password: "124mgldkg3",
user_role: "user"
} }
page.status_code.should be 302
end
end
許可されていない場所に行こうとする (訪問しようとする) ことだけは問題なく機能しますが、この種のユーザーが投稿することを許可されるべきではないフォームの操作された投稿を行うことはできなくなりました。これらのリクエストのすべてに対して 404 が返されるようになりました。
Capybara や Rspec で何が変わったのか、まったくわかりません。私のリクエストが「文脈から外れる」原因となるのは、確かにいくつかの小さな詳細である可能性があります. 訪問やフォームの投稿と同じセッションやリクエストのコンテキストなしで、リクエストが実行されているように見えます。
そうしたいです:
- ユーザーに表示されるフォームではなく、カスタムパラメータを使用して投稿します。
- まだ既存のセッションとリクエストのコンテキストにある(サブドメイン...)
代替技術が見つかりません。私は Rack::Test パスを下っていきましたが、ログインやセッションを行わずに正方形 1 に戻ったことは間違いありません。.カピバラが私のために処理するセッションコンテキストのもの。