The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use Mojo::Base -strict;

use Test::More;
use Mojolicious::Lite;
use Test::Mojo;

plugin 'RemoteAddr';

get '/ip' => sub {
  my $self = shift;
  $self->render( text => $self->remote_addr );
};

# IP from transaction
my $t = Test::Mojo->new;
$t->get_ok('/ip')->status_is(200)->content_is('127.0.0.1', 'IP from transaction');


# IP from X-Real-IP header
$t->ua->on( start => sub {
    my ( $ua, $tx ) = @_;
    $tx->req->headers->header( 'X-Real-IP', '1.1.1.1' );
});
 
$t->get_ok('/ip')->status_is(200)->content_is('1.1.1.1', 'IP from X-Real-IP header');

done_testing();