Задонатить и смотреть →
Открой безлимитный доступ к 100+ полезных скринкастов и получай скидки на все предстоящие мероприятия

Смена Email с подтверждением

Написание команды двухшаговой смены email-адреса в кабинете пользователя с подтверждением по ссылке с токеном в письме.

  • 00:00:24 - Сценарий изменения Email
  • 00:01:31 - Запрос смены с токеном
  • 00:02:42 - Требования к методу смены
  • 00:04:01 - Написание юнит-тестов
  • 00:08:03 - Исходный код метода
  • 00:09:40 - Подтверждение почты по токену
  • 00:13:42 - Обзор результата
Скрытый контент (код, слайды, ...) для подписчиков. Открыть →
Дмитрий Елисеев
elisdn.ru
Комментарии (13)
Arunas

Спасибо.

Ответить
KonTuzh

Спасибо за урок! Дмитрий, сегодня заметил, что проверка psalm на файлах юнит тестов вываливается с ошибками. Всего 38 ошибок по каждому юнит тесту. (после 9 урока psalm не запускал, только тесты). И их природа мне не особо понятна:

ERROR: PropertyNotSetInConstructor - src/Auth/Test/Unit/Entity/User/EmailTest.php:14:7 - Property PHPUnit\Framework\TestCase::$backupGlobals is not defined in constructor of App\Auth\Test\Unit\Entity\User\EmailTest and in any methods called in the constructor class EmailTest extends TestCase

ERROR: InternalMethod - src/Auth/Test/Unit/Entity/User/EmailTest.php:14:25 - The method PHPUnit\Framework\TestCase::__construct has been marked as internal class EmailTest extends TestCase

Вероятно, данные ошибки связаны с самим классом TestCase и избавиться от них без смены версии psalm или phpunit не выйдет.

Ответить
Дмитрий Ориховский

Посмотри свой файл конфигурации для psalm и сравни с файлом Дмитрия на GitHub.

Ответить
KonTuzh

Да, спасибо! Я в нем забыл дописать директории src/Auth/Test и src/Http/Test

Ответить
Дмитрий Ориховский

:)

Ответить
Дмитрий Ориховский

Годный контент! Спасибо. Дмитрий есть вопрос, будет ли реализация автоматической генерации документации к API, на подобии Swagger?

Ответить
Сергей Латышков

Спасибо, Дмитрий, за отличный контент!

Ответить
А

В одном из тестов ошибка. testNotActive. Там должен быть вызов метода requestEmailChanging вместо requestPasswordReset.

Ответить
Дмитрий Елисеев

Исправили. Спасибо!

Ответить
Дмитрий

Кейс: отправка подтверждения. Когда мы ищем есть ли уже пользователи с таким email, надо учитывать текущего пользователя, которому мы отправляем подтверждение. Т.е. хендлер команды будет всегда возвращать DomainException. строка 41.

Ответить
Дмитрий Елисеев

Нет никакого смысла давать менять email на такой же. Так что это учитывать необязательно.

Ответить
Олег Максимов

Если пользователь запросил смену email, но опечатался, то получается он не сможет ввести второй раз уже верный email? Ведь тогда токен будет не null и не получится второй раз сделать запрос, только когда токен истечет по времени

Ответить
Дмитрий Елисеев

Да, только когда токен истечёт по времени.

Ответить
Зарегистрируйтесь или войдите чтобы оставить комментарий

Или войти через:

Google
GitHub
Yandex
MailRu