0

私はrails_adminを使用しており、rails 3アプリケーションで工夫を凝らし、キュウリのアクセス制御のテストを作成しています。

admin以外の誰かがrails_adminのすべてのルートにアクセスできないことをテストしたい(たとえば)

私がそのように明示的にテストした場合:

  Scenario: An authenticated user cannot access site administration
    Given I am an authenticated user "kate", "kate@example.com"
    When I visit the administration page
    Then I should see access denied

文字列「管理ページ」をルート「rails_admin_dashboard_path」に一致させて、テストに合格させることができます。しかし、これはアプリケーションを間違った方法でテストしているようです。私は、すべてのルートを暗示するのではなく、すべてのルートをテストしたいと思います(何らかの方法でそれらをループします)。

このようなもの:

  Scenario: An authenticated user cannot access site administration
    Given I am an authenticated user "kate", "kate@example.com"
    When I visit ANY administration page
    Then I should see access denied

誰かがこれを効果的にテストする方法について私にアドバイスできますか?私は正しいアプローチを取っていますか?代わりにrspecでこれを行う必要がありますか?

あなたが言うことができるかもしれないように、私は少しn00bです。

4

2 に答える 2

1

1つのアプローチは、他のすべてのadmin/controllersが継承するadmin名前空間にベースコントローラーを作成することです。そのベースコントローラにbeforeフィルタを配置して、管理者認証を確認できます。そのようです:

#app/controllers/admin/base.rb

class Admin::Base < ApplicationController
  before_filter :ensure_admin_logged_in
end

そして、admin名前空間内の他のすべてのコントローラーにこれを継承させます。

#app/controllers/admin/Pages.rb
class Admin::PagesController < Admin::Base
  layout "admin"
end
于 2011-05-01T06:01:51.030 に答える
1

キュウリのシナリオで考えられるすべてのルートをテストすることを目指すべきではないと思います。Andrea S.が示唆しているように、すべての管理コントローラーに共通のベースがある場合は、管理者のホームページを確認するだけで十分です。

于 2011-05-02T13:03:07.310 に答える