package tests::functional::LrCheckServiceTest;

use base qw/Lire::Test::FunctionalTestCase/;

use Lire::Config::Build qw/ ac_path /;

my @known_services = sort qw/
argomail bind8_query bind9_query bind8_named cisco_ios combined
common cups_pagelog dbmail exim ipchains ipfilter iptables
iis_ftp isdnlog lprng_account modgzip ms_isa mysql nms
nmsmmp nmsstore pgsql pix postfix qmail referer s1ms sendmail snort
spamassassin squid_access syslog tinydns w3c_extended watchguard welf
welf_proxy xferlog
/;

sub set_up {
    my $self = $_[0];

    $self->SUPER::set_up();
    $self->{'lr_check_service'} = ac_path( 'libexecdir', 'PACKAGE' ) . "/lr_check_service";

    return;
}

sub test_list_services {
    my $self = $_[0];

    my $result = $self->lire_run( "$self->{'lr_check_service'} -l" );
    $self->annotate( $result->stderr );
    $self->assert_equals( 0, $result->status );
    my @services = sort split ' ', $result->stdout;

    $self->assert_deep_equals( [ sort @known_services ], \@services );
}

sub test_existing_service {
    my $self = $_[0];

    my $result = $self->lire_run( "$self->{'lr_check_service'} squid_access" );
    $self->annotate( $result->stderr );
    $self->assert_equals( 0, $result->status );
    my $service = $result->stdout;
    chomp $service;
    $self->assert_equals( "squid_access", $service );
}

sub test_non_existing_service {
    my $self = $_[0];

    my $result = $self->lire_run( "$self->{'lr_check_service'} unknown_converter" );
    $self->annotate( $result->stderr );
    $self->assert_not_equals( 0, $result->status );
    $self->assert_equals( "", $result->stdout );
    $self->assert_matches( qr/isn't a known DLF converter/, $result->stderr );
}

1;


syntax highlighted by Code2HTML, v. 0.9.1