Авторизация
Жюнерь, когда у нас в тестовой базе данных имеется пользователь, посмотрим, Зрястся ли нам авторизоваться под его именем. Если бы мы использовали брау-жр. то перешли бы на форму авторизации, ввели бы имя и пароль, а затем бы значения полей действию logi п, находящемуся в контроллере авториза-аи.
Динамические стендовые данные
Чтобы добавить строку к таблице users, мы создадим тестовый стенд users. Назовем пользователя «dave».
dave:
id: 1
name: dave salt: NaCl
hashed_password: ???
Index: только для администраторов
Ну что ж, напишем наш первый тест контроллера, который «нанесет удар» по странице index.
Листинг файла testyfunctional/login_controller_test.rb def test_index get : index
assert_response :success
end
Авторизация
Шаг ли любой случайный человек сможет заниматься администрированием прило¬жения Depot, то из этого ничего хорошего не получится. Хотя у нас есть довольно сахкная система безопасности, хотелось бы убедиться, что контроллер logi п смо-J^T по крайней мере оградить нас от посягательств злоумышленников.
13.3. Функциональное тестирование контроллеров
Контроллеры управляют всем спектаклем. Они получают входящие веб-запрос (обычно введенные пользователем), взаимодействуют с моделями, чтобы получить данные из состояния приложения, а затем ответить на запросы, вызывая соответ¬ствующее представление для отображения пользователю какой-нибудь информации.
Поддержка блочного тестирования
написании блочных тестов вы, скорее всего, остановитесь на использовании
4ыьшинства из перечисленных далее утверждений.
Bert(boolean,message)
Утверждение несостоятельно, если boolean имеет значение false или nil.
assert(User.find_by_name("dave" ), "пользователь 'dave' не найден" )
_equal(expected, actual,message)
_not_equal(expected, actual,message)
Использование стендовых данных
когда стало известно, как заполучить стендовые данные в базу данных, понять, как их использовать в тестах.
Испытательные стенды
В мире испытаний стенды являются той средой, в которой можно запустить тестирование. Если, к примеру, тестируется монтажная плата, то можно смонтиро-шгъ ее на испытательном стенде, подать питание и входные сигналы, необходимые для управления тестируемой функции.
Настоящие блочные тесты
С тюго момента, как Rails сгенерировала модель Product, мы добавили к ней из-ркшое количество программного кода, часть из которого предназначалась для проверки приемлемости данных.
Jhcnwr файла app/models/product.rb
«eodates_presence_of :ti11е, :description, :image_url «n»E~3ates_numericality_of :price »er_^aates_uniqueness_of :title WL-3ates_f ormat_of : image_url,
.-with => %r{\. (gif I jpg|png)$}i ,
База данных для тестирования
Помните, как в подразделе «Создание базы данных» раздела 6.1 мы создавали баз» 1 данных для разработки приложения Depot?