JujaLabs / itevents

Resource to subscribe on it events
Apache License 2.0
7 stars 5 forks source link

Убрать закодированные параметры из тестов #146

Closed IgorMaksymov closed 8 years ago

IgorMaksymov commented 8 years ago

Во входящих параметрах для тестов БД, используются уже закодированные пароли. Это значительно усложняет тестирование этих полей и искажает результаты теста. Также надо убрать закодированные пароли из test_utils.BuilderUti

vaa25 commented 8 years ago

Во входящих параметрах для тестов БД, используются уже закодированные пароли.

А разве в БД должны лежать пароли в чистом виде?

IgorMaksymov commented 8 years ago

В таком случае постоянно придется использовать шифратор. Мы же методы тестируем. а не работу шифратора. Для примера, сделай в Билдере незашифрованный пароль, а из базы возьми зашифрованный и попробуй его сравнить.

vaa25 commented 8 years ago

В таком случае постоянно придется использовать шифратор.

Почему ты так считаешь?

Для примера, сделай в Билдере незашифрованный пароль,

Ты ж сам из билдера удалил все пароли.

IgorMaksymov commented 8 years ago

Чтобы понять мой батхерт, с которым я столкнулся, попробуй организовать тест, в котором ты передаешь незакодированный пароль и пытаешься сравнить его с паролем из БД.

В случае смены шифратора, полетят все тесты, завязанные на него.

Я удалил только в билдере, а надо в датасетах для БД, это вне скоупа моей задачи, поэтому я вынес в отдельный таск.

romach commented 8 years ago

Так как UserService и UserDao не занимаются шифрованием пароля, а просто сохраняют (берут) из базы пароль в неизменном виде, то в каком виде его хранить в тестовой базе - все-равно, главное, чтобы в билдере и базе были одинаковые значения. Пароли должны лежать в закодированном виде в рабочей базе.

romach commented 8 years ago

@IgorMaksymov насчет шифратора я не понял, у нас есть для него тесты?

vaa25 commented 8 years ago

Вообще-то в тестовой базе не хранится ничего. Для конкретного теста создаются конкретные файлы для dbUnit, где можно прописать все что угодно. Если тест тестирует шифратор, то для него можно создать свой файл. Иначе зависимость от шифратора снимается с помощью мока.

romach commented 8 years ago

Я имел ввиду dbUnit ("в каком виде его хранить в тестовой базе")

romach commented 8 years ago

@IgorMaksymov также, я не понял, в чем трудность с тестом? Ведь модно для своего теста создать в билдере пользователя с незашифрованым паролем и дополнительный xml для dbunit; таким образом в тесте работать с этими значениями, а остальные тесты не трогать.

IgorMaksymov commented 8 years ago

при создании юзера в Билдере, логично создавать с незашифрованным паролем, ибо в интеграционном тесте, с использованием шифратора мы получим совершенно не то что хотим. Соответственно, при тестах ДБюнита в БД лучше использовать незашифрованные пароли, чтобы не париться с тем значением которое мы передаем из Обьекта и с значением получаемым из БД. Если из БД получать зашифрованные пасы, то нам придется использовать шифратор, чтобы понять правильное ли значение мы получили. При чем, втупую закодировать текущую строку и сравнить 2 строки нельзя, надо использовать метод из шифратора. т.е. каждый раз создаются разные хеши для одной и той же строки.

romach commented 8 years ago

@IgorMaksymov то есть, при шифровании одного и того же пароля несколько раз может получится разный зашифрованый пароль?

vaa25 commented 8 years ago

при создании юзера в Билдере, логично создавать с незашифрованным паролем,

в билдере считай пароля уже нет

IgorMaksymov commented 8 years ago

да, сам попробуй. При сравнении паролей, шифратор их декодирует, как я понял.

romach commented 8 years ago

Насколько я понял из документации, метод берет незакодированный пароль, кодирует его, и сравнивает со вторым параметром (закодированным паролем).