Hartl の Rails チュートリアルを進めています。私は 9.6 の最初の課題に取り組んでいます。そこで彼は、Useradmin
属性にアクセスできないことをテストするように私に依頼しました。正当化は本の前半にあります。
リスト 9.42の後、Hartl's Rails Tutorial は言う
User モデルで attr_accessible リストを省略した場合 (または愚かにも :admin をリストに追加した場合)、悪意のあるユーザーは次のように PUT リクエストを送信できます。
put /users/17?admin=1
チュートリアルの対応する演習 (演習 9.6.1 ) には、
ユーザー管理者属性にアクセスできないことを確認するテストを追加します
私はこのコードでそのテストを完了しuser_spec.rb
ました:
expect do
@user.update_attributes(:admin => true)
end.to raise_error(ActiveModel::MassAssignmentSecurity::Error)
しかし、私はそのテストを取得するためにstackoverflowを使用しました。 これは私の最初のアイデアでした(in user_pages_spec.rb
):
expect do
put user_path(user) + "?admin=1"
end.to raise_error(ActiveModel::MassAssignmentSecurity::Error) # or some other error
しかし、私はそれを機能させることができませんでした。
だから私の質問は:
私の考えは可能ですか?潜在的なハッカーがコマンド ラインから何をするかを直接テストする方がよいのではないでしょうか? それがカピバラのアイデアで、ユーザーの行動をテストしているのではないでしょうか?
可能であれば、質量割り当てのテストと PUT アクションのテストに違いはありますか?
もし不可能なら、なぜですか? 必要ないだけですか、それともここで何か不足していますか?