Я пишу очень простое приложение CRUD, которое берет пользовательские истории и сохраняет их в базе данных, чтобы другой коллега по кодированию мог организовать их для проекта, над которым мы оба работаем. Однако я столкнулся с проблемой дезинфекции ввода пользователя перед его сохранением в базе данных. Я не могу вызвать функцию sanitize () из модели Story, чтобы удалить все html / scripting. Это требует от меня сделать следующее:
def sanitize_inputs
self.name = ActionController::Base.helpers.sanitize(self.name) unless self.name.nil?
self.story = ActionController::Base.helpers.sanitize(self.story) unless self.story.nil?
end
Я хочу проверить, что пользовательский ввод был очищен, и я не уверен в двух вещах:
1) Когда должна проводиться проверка ввода пользователя? До того, как данные будут сохранены, становится достаточно очевидным, но я думаю, должен ли я обрабатывать эти вещи в контроллере, перед проверкой или в какой-то другой неочевидной области, прежде чем проверять, что пользовательский ввод не имеет тегов script / html?
2) Как написать модульный тест для этой модели, как проверить, что сценарий / html удален, кроме сравнения «Это пример вредоносного кода» с выходом sanitize (example)?
Заранее спасибо.