Как я могу проверить, что фильтр «до» установлен на нескольких контроллерах / действиях? - PullRequest
2 голосов
/ 16 ноября 2011

У меня есть несколько контроллеров 'admin', каждый из которых наследуется от AdminController, который имеет фильтр before, который ограничивает доступ только для администраторов.

Я хочу, чтобы мои функциональные тесты проверяли, что только администраторы могут получить доступ к каждому действию каждого контроллера, который является частью моей системы администратора. Какой самый краткий способ сделать это?

(я использую стандартный встроенный тест / блок)

1 Ответ

2 голосов
/ 16 ноября 2011

Я думаю, что самый краткий путь был бы через метапрограммирование:

AdminController.subclasses.each do |controller|
  describe controller do
    controller.action_methods.each do |action_method|
      it "redirects non-admin user on #{action_method}" do
        get action_method
        assert_redirected_to home_path
      end
    end
  end
end

Вам придется обрабатывать посты и посты, и, возможно, есть некоторые опечатки, но, надеюсь, это даст вам возможность начать. (Кроме того, это использует синтаксис minispec. Вам придется немного перевести для теста / модуля.)

Я бы, вероятно, рекомендовал просто добавлять простые тесты для каждого контроллера, но это, вероятно, хороший интеграционный тест, чтобы убедиться, что вы не пропустите ни одного.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...