Я боролся с этим в течение нескольких дней, и, похоже, в Интернете нет особой помощи.Я посмотрел на вики-сайт Typus, пример приложения и тесты и, похоже, все делает правильно, но все равно получаю код состояния HTTP 302 (перенаправление), где ожидаю 200 (успех) в моих тестах.
Ниже приведены соответствующие файлы (без удаления ненужных материалов)
config / initializers / typus.rb (rails g typus: миграция была выполнена, так как у меня есть таблица admin_users):
Typus.setup do |config|
# Application name.
config.admin_title = "Something"
# config.admin_sub_title = ""
# When mailer_sender is set, password recover is enabled. This email
# address will be used in Admin::Mailer.
config.mailer_sender = "noreply@somewhere.com"
# Define paperclip attachment styles.
# config.file_preview = :medium
# config.file_thumbnail = :thumb
# Authentication: +:none+, +:http_basic+
# Run `rails g typus:migration` if you need an advanced authentication system.
config.authentication = :session
# Define user_class_name.
config.user_class_name = "AdminUser"
# Define user_fk.
config.user_fk = "admin_user_id"
# Define master_role.
config.master_role = "admin"
end
config / typus / admin_user.yml
AdminUser:
fields:
default: first_name, last_name, role, email, locale
list: email, role, status
form: first_name, last_name, role, email, password, password_confirmation, locale
options:
selectors: role, locale
booleans:
status: Active, Inactive
filters: status, role
search: first_name, last_name, email
application: Admin
description: Users Administration
test / factory / admin_users.rb:
Factory.define :admin_user do |u|
u.first_name 'Admin'
u.last_name 'User'
u.email 'admin@somewhere.com'
u.role 'admin'
u.password 'password!'
u.token '1A2B3C4D5E6F'
u.status true
u.locale 'en'
end
test / функциональный / admin / credits_controller_test.rb:
require 'test_helper'
class Admin::CreditsControllerTest < ActionController::TestCase
setup do
@admin_user = Factory(:admin_user)
@request.session[:admin_user_id] = @admin_user.id
@request.env['HTTP_REFERER'] = '/admin/credits/new'
end
context "new" do
should "be successful" do
get :new
assert_response :success
end
end
end
@response.body:
<html>
<body>You are being <a href="http://test.host/admin/session/new?back_to=%2Fadmin%2Fcredits%2Fnew">redirected</a>.
</body>
</html>
Как видите, я установил тип для использования admin_user и admin_user_id для ключа сеанса.Но по какой-то причине этот тест не дает 302, а не 200. Я уверен, что это потому, что я делаю что-то неправильно, что я просто не вижу.Я также создал все эти гист , на случай, если кто-то предпочтет это.
Отредактировано 2011-05-19 09:58 по центральному времени: добавлен основной текст ответа для запроса.