File: context-advanced.t

package info (click to toggle)
libplack-middleware-logany-perl 0.002.001-1
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 132 kB
  • sloc: perl: 39; makefile: 2; sh: 1
file content (57 lines) | stat: -rwxr-xr-x 1,934 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#<<<
use strict; use warnings;
#>>>

use Test::More import => [ qw( BAIL_OUT is is_deeply use_ok ) ], tests => 3;

use HTTP::Request::Common       qw( GET );
use Log::Any::Adapter           qw();
use Log::Any::Adapter::Log4perl qw();
use Plack::Test                 qw();

my $middleware;

BEGIN {
  $middleware = 'Plack::Middleware::LogAny';
  use_ok( $middleware ) or BAIL_OUT "Cannot load middleware '$middleware'!";
}

my $header_name  = 'X-Request-ID';
my $header_value = '77e1c83b-7bb0-437b-bc50-a7a58e5660ac';

my $conf = qq(
  log4perl.rootLogger             = TRACE, BUFFER
  log4perl.appender.BUFFER        = Log::Log4perl::Appender::TestBuffer
  log4perl.appender.BUFFER.name   = buffer
  log4perl.appender.BUFFER.layout = Log::Log4perl::Layout::PatternLayout
  log4perl.appender.BUFFER.layout.ConversionPattern = %c,%p,%X{$header_name},%M,%m%n
);
Log::Log4perl->init( \$conf );
Log::Any::Adapter->set( 'Log::Log4perl' );

my $app_name = 'My::PSGI::app';    # Issuer of the logging request (%M)
my $category;
my $messages;

my $app = sub {
  local *__ANON__ = $app_name;
  my ( $env ) = @_;
  map { $env->{ 'psgix.logger' }->( $_ ) } @{ $messages };
  return [ 200, [], [] ];
};

$category = '';
$messages = [
  { level => 'trace', message => 'this is a trace message' },
  { level => 'debug', message => 'this is a debug message' }
];

Plack::Test->create( $middleware->wrap( $app, context => [ 'Content-Type', 'X-B3-TraceId', $header_name ] ) )
  ->request( GET '/', $header_name => $header_value );

my $test_appender = Log::Log4perl::Appender::TestBuffer->by_name( 'buffer' );

is_deeply [ split( "\n", $test_appender->buffer ) ],
  [ map { join( ',', ( $category, uc $_->{ level }, $header_value, $app_name, $_->{ message } ) ) } @$messages ],
  'check Log::Log4perl::Appender::TestBuffer (root logger based logging)';
is scalar %{ Log::Any->get_logger( category => $category )->context }, 0, 'empty logging context';