Testing Integrations Between Third-party Webhooks and Local Applications
Published on by Renoir dos Reis
It may sound silly, but ever since I started developing web applications I’ve always found it painful to inspect and debug integrations between my app and third-party webhooks. In addition to the hassle of replicating events, I’ve never relied on testing “hypothetical” scenarios.
Related: Inbound Email in Laravel
The tool
The good news is that there is a solution that solves all these problems efficiently. Ngrok is a product created by Alan Shreve. He wrote about the creation of Ngrok and an article on his blog in 2013 where he describes the product as follows:
“Ngrok is a tunneling, reverse proxy that establishes secure tunnels from a public endpoint to a locally running network service while capturing all traffic for inspection and replay. It is an open-source project on GitHub.”
Let’s get started:
Well, now that you know a little bit about the tool and why I found it let’s demonstrate how to expose a local environment to allow third-party services to submit requests to local environments via Webhook is very simple and the two solutions that I’m going to present have been tested and work with the following scenarios :
- Scenario 1: A PHP project using PHP 7.2.6 Development Server
- Scenario 2: A Laravel (PHP) project using Laravel Development Server (php artisan serve)
- Scenario 3: A Laravel (PHP) project using Laravel Homestead
To do this follow the steps:
- Access the Ngrok website
- Register or Login
- Download the client based on your OS
- Authenticate the client downloaded following the instructions that appear on the same page you’ve downloaded it.
For the first two scenarios just run the following command.
ngrok http <host>:<port>
ex: ngrok http 127.0.0.0.1:666
For the third scenario (if you are using a domain to access the homestead Ex: homestead.test you must rewrite the host-header. But don’t worry, to achieve it increment the command above to something like)
ngrok http <homestead_host_ip>:<port> -host-header=<homestead_domain>
example: ngrok http 192.168.10.10:80 -host-header=homestead.test
Voilà, now point the URL generated by Ngrok in Webhook that you want to test and enjoy this excellent solution.
Have any questions about Ngrok, how it works and best practices? Check the “How it works” page of the official website. If you are even more NERD and like to read the documentation before you start using it, follow the link to the official documentation.
Credits
This article uses the following sources as a basis:
CTO @ Eskive. In recent years I have been a leader in software development teams and I have been active in development communities where I have participated in several discussions and contributed projects.