2012-04-24 8 views
0

私は初めてテストフレームワークに入りました。セキュリティ機能のために実装するテストの種類を知るのに問題があります。正式なユーザーだけが新しい投稿を作成できる基本的なブログアプリケーションを考えてみましょう。レールアプリケーションでセキュリティをテストする場合

「投稿」テストでは、承認されたユーザーだけが、新しい投稿を作成することができますか?機能ではキュウリでテストするか、controllerspecではrspecでテストしますか?私は両方を行うことができます知っている、しかし、キュウリの機能でそれをテストすることは少し過酷なようですね、それはありますか?

私には、「ゲストは新しい投稿を作成できないはずです」というのは機能ではなくシステムの制限なので、キュウリの機能ではなくrspecテストであるべきです。最終的なアプリケーションでは、ゲストページから「投稿を作成」機能へのリンクがないため、実際にテストするのは、URL /posts/newを入力しないことです。

私の理解は正しいですか?

答えて

2

すべてのユーザーは、生データをアプリケーションに送信するだけで、サイトをハックしようとすることができます。あなたはそれに備えなければなりません。権限のないユーザーが新しい投稿(投稿/作成)を作成しようとするとエラー画面が表示され、データベースエントリが作成されないことを確認するテストケースをお勧めします。新しいアクションについてもこれを確認できますが、入力アクションではないので、あまり間違いではありません。無許可で使用できないすべてのアクションをカバーするようにしてください。そうすればdbアクションは起こらず、テストケースはエラーページなどになります。

実際には、ページのセキュリティは機能であり、ブログアプリケーションにとって最も重要ではないかもしれませんが、重要です。直接攻撃だけでなく、偶発的な試行を期待する必要があります。誰かが1つのタブに投稿を書き始め、別のタブにログアウトします。

正確な方法はあなた次第です。

更新: 私はあなたがRspecコントローラのテストを使うべきだと思います。

+0

これは、コントローラまたはキュウリの機能としてのRspecテストとして実行される可能性が高いですか? –

+1

私はあなたがRspecを使うべきだと思います。 propablyは両方から管理することができるので、あなた自身のために最高のツールを選択してください。 – Matzi

1

個人的には、rspecを使用してコントローラをテストして、ユーザーのアクセスを確認します。 rspecの

before {}
に2人のユーザーをFactoryGirlで作成し、そのうちの1人でログインし、他のユーザーが現在のユーザーのページにアクセスできないことをテストします。設定には少し時間がかかるかもしれませんが、ページを作成している間にアクセスセキュリティをテストできるのであれば十分です。

関連する問題