У моего веб-приложения есть конечная точка, которая получает POST от webhook, и служба, которая отправляет полезную нагрузку, также подписывает его, используя openssl_sign
.
Как и следовало ожидать, я знаю открытый ключ службыпоэтому я использую openssl_verify
и проверяю, соответствует ли «подпись», отправленная моей конечной точке, «полезной нагрузке» («полезная нагрузка» и «подпись» являются именами параметров).
Все работает нормально.
Теперь я хочу написать функциональный тест контроллера моей конечной точки.Я хочу доказать, что он правильно обрабатывает, когда «полезная нагрузка» и «подпись» проверяются по сравнению с недопустимыми «полезная нагрузка» и «подпись».
Поскольку у меня НЕ есть закрытый ключ службы, я не могусгенерировать мои собственные значения для контрольного примера.
Поэтому я использовал ведение журнала, чтобы увидеть реальные значения "payload" и "signature".
Но тогда, когда я использую эти значения длямой тест не пройден!
Я думаю, что проблема как-то связана с символами разрыва строки или чем-то, что не может быть точно записано на 100% при ведении журнала Laravel.
Как я могу точно захватить«полезная нагрузка» и «подпись» производства?
PS Я также сделал это:
$payload = $request->input(self::PARAM_PAYLOAD);
Log::debug(sha1($payload));
Log::debug($payload);
А потом, когда я смотрю в журнале значение $payload
и запускаю sha1
на нем хэш не совпадает с зарегистрированным хешем оригинала $payload
.