News

Testing Integrations Between Third-party Webhooks and Local Applications

Published
Testing Integrations Between Third-party Webhooks and Local Applications image

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:

  1. Access the Ngrok website
  2. Register or Login
  3. Download the client based on your OS
  4. 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:

Renoir dos Reis photo

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.

Filed in

Sponsored

masteringlaravel logo
Laravel Code Review

Get expert guidance in a few days with a Laravel code review

Visit Laravel Code Review

The latest

View all →
Volker Dusch on the PHP RCE Vulnerabilities and Disclosure image

Volker Dusch on the PHP RCE Vulnerabilities and Disclosure

Read article
Decide with Jev: Turn AI Answers into Decisions with PHP Rules image

Decide with Jev: Turn AI Answers into Decisions with PHP Rules

Read article
Skuul: Open-Source School Management Built on Laravel image

Skuul: Open-Source School Management Built on Laravel

Read article
Laravel Read Replicas: Prevent Stale Reads After a Write image

Laravel Read Replicas: Prevent Stale Reads After a Write

Read article
Screenshot: Capture Images and PDFs with PHP and Laravel image

Screenshot: Capture Images and PDFs with PHP and Laravel

Read article
Reset Sticky Database Connections Between Laravel Queue Jobs image

Reset Sticky Database Connections Between Laravel Queue Jobs

Read article