92 lines
2.5 KiB
Perl
92 lines
2.5 KiB
Perl
|
|
#!/usr/bin/perl
|
||
|
|
# t/plack-middleware.t
|
||
|
|
#
|
||
|
|
# Test to validate Plack middleware components work correctly
|
||
|
|
#
|
||
|
|
# This test validates:
|
||
|
|
# - Individual middleware modules can be loaded and instantiated
|
||
|
|
# - Middleware methods work as expected
|
||
|
|
# - Request wrapper functionality
|
||
|
|
#
|
||
|
|
# Authors:
|
||
|
|
# Mark Smith <mark@dreamwidth.org>
|
||
|
|
#
|
||
|
|
# Copyright (c) 2025 by Dreamwidth Studios, LLC.
|
||
|
|
#
|
||
|
|
# This program is free software; you may redistribute it and/or modify it under
|
||
|
|
# the same terms as Perl itself. For a copy of the license, please reference
|
||
|
|
# 'perldoc perlartistic' or 'perldoc perlgpl'.
|
||
|
|
#
|
||
|
|
|
||
|
|
use strict;
|
||
|
|
use warnings;
|
||
|
|
use v5.10;
|
||
|
|
|
||
|
|
use Test::More tests => 12;
|
||
|
|
use Test::MockObject;
|
||
|
|
|
||
|
|
BEGIN {
|
||
|
|
require "$ENV{LJHOME}/cgi-bin/ljlib.pl";
|
||
|
|
}
|
||
|
|
|
||
|
|
# Mock dependencies
|
||
|
|
my $mock = Test::MockObject->new();
|
||
|
|
|
||
|
|
$mock->fake_module(
|
||
|
|
'LJ' => (
|
||
|
|
start_request => sub { },
|
||
|
|
end_request => sub { },
|
||
|
|
urandom_int => sub { return int( rand(1000000) ); },
|
||
|
|
)
|
||
|
|
);
|
||
|
|
|
||
|
|
$mock->fake_module(
|
||
|
|
'LJ::Procnotify' => (
|
||
|
|
check => sub { },
|
||
|
|
)
|
||
|
|
);
|
||
|
|
|
||
|
|
# Test middleware loading
|
||
|
|
use_ok('Plack::Middleware::DW::RequestWrapper');
|
||
|
|
use_ok('Plack::Middleware::DW::Redirects');
|
||
|
|
use_ok('Plack::Middleware::DW::XForwardedFor');
|
||
|
|
use_ok('Plack::Middleware::DW::Dev');
|
||
|
|
|
||
|
|
# Tests 1-4: Middleware module loading
|
||
|
|
|
||
|
|
# Test RequestWrapper middleware
|
||
|
|
my $request_wrapper;
|
||
|
|
eval { $request_wrapper = Plack::Middleware::DW::RequestWrapper->new; };
|
||
|
|
ok( !$@, 'RequestWrapper middleware instantiates without errors' ) or diag("Error: $@");
|
||
|
|
isa_ok(
|
||
|
|
$request_wrapper,
|
||
|
|
'Plack::Middleware::DW::RequestWrapper',
|
||
|
|
'RequestWrapper is correct type'
|
||
|
|
);
|
||
|
|
|
||
|
|
# Tests 5-6: RequestWrapper instantiation
|
||
|
|
|
||
|
|
# Test Redirects middleware
|
||
|
|
my $redirects;
|
||
|
|
eval { $redirects = Plack::Middleware::DW::Redirects->new; };
|
||
|
|
ok( !$@, 'Redirects middleware instantiates without errors' ) or diag("Error: $@");
|
||
|
|
isa_ok( $redirects, 'Plack::Middleware::DW::Redirects', 'Redirects is correct type' );
|
||
|
|
|
||
|
|
# Tests 7-8: Redirects instantiation
|
||
|
|
|
||
|
|
# Test XForwardedFor middleware
|
||
|
|
my $xff;
|
||
|
|
eval { $xff = Plack::Middleware::DW::XForwardedFor->new; };
|
||
|
|
ok( !$@, 'XForwardedFor middleware instantiates without errors' ) or diag("Error: $@");
|
||
|
|
isa_ok( $xff, 'Plack::Middleware::DW::XForwardedFor', 'XForwardedFor is correct type' );
|
||
|
|
|
||
|
|
# Tests 9-10: XForwardedFor instantiation
|
||
|
|
|
||
|
|
# Test Dev middleware
|
||
|
|
my $dev;
|
||
|
|
eval { $dev = Plack::Middleware::DW::Dev->new; };
|
||
|
|
ok( !$@, 'Dev middleware instantiates without errors' ) or diag("Error: $@");
|
||
|
|
isa_ok( $dev, 'Plack::Middleware::DW::Dev', 'Dev is correct type' );
|
||
|
|
|
||
|
|
# Tests 11-12: Dev instantiation
|