App-Spoor

 view release on metacpan or  search on metacpan

t/Installer.t  view on Meta::CPAN

use strict;
use warnings;
use v5.10;

use Test::More;
use Test::SetupTeardown;

use File::Path qw(remove_tree);
use Path::Tiny qw(path);
use YAML::Tiny;

use App::Spoor::Config;
use App::Spoor::LoginUnitFile;
use App::Spoor::AccessUnitFile;

my $test_user = getpwuid($>);

sub setup {
  mkdir('/tmp/app_spoor_test_root', 0744);
  mkdir('/tmp/app_spoor_test_root/etc', 0744);
  mkdir('/tmp/app_spoor_test_root/etc/systemd', 0744);
  mkdir('/tmp/app_spoor_test_root/etc/systemd/system', 0744);
  mkdir('/tmp/app_spoor_test_root/var', 0744);
  mkdir('/tmp/app_spoor_test_root/var/lib', 0744);
  mkdir('/tmp/app_spoor_test_root/var/cpanel', 0744);
}

sub teardown {
  remove_tree('/tmp/app_spoor_test_root');
}

BEGIN {
  use_ok('App::Spoor::Installer') || print "Could not load App::Spoor::Installer\n";
}

ok (defined(&App::Spoor::Installer::install), 'App::Spoor::Installer is defined');

# Setup test directory tBuil
my %installation_config =(
  login_log_path => '/var/log/login',
  access_log_path => '/var/log/access',
  error_log_path => '/var/log/error',
  api_identifier => 'ABC123',
  api_secret => 'secret456'
);
my $root_path = '/tmp/app_spoor_test_root';
my $config_file_directory = '/tmp/app_spoor_test_root/etc/spoor';
my $config_file_path = "$config_file_directory/spoor.yml";
my $spoor_state_directory = "$root_path/var/lib/spoor";
my $spoor_parsed_state_directory = "$root_path/var/lib/spoor/parsed";
my $spoor_transmitted_state_directory = "$root_path/var/lib/spoor/transmitted";
my $spoor_transmission_failed_state_directory = "$root_path/var/lib/spoor/transmission_failed";
my $cpanel_perl_dir = "$root_path/var/cpanel/perl5/lib";

my $login_follower_unit_file = "$root_path/etc/systemd/system/spoor-login-follower.service";
my $access_follower_unit_file = "$root_path/etc/systemd/system/spoor-access-follower.service";
my $error_follower_unit_file = "$root_path/etc/systemd/system/spoor-error-follower.service";
my $transmitter_unit_file = "$root_path/etc/systemd/system/spoor-transmitter.service";

my $cpanel_hook_file_path = "$root_path/var/cpanel/perl5/lib/SpoorForwardHook.pm";

my $environment = Test::SetupTeardown->new(setup => \&setup, teardown => \&teardown);

$environment->run_test('creates config file', sub {
    App::Spoor::Installer::install(\%installation_config, $root_path);
    ok(-d $config_file_directory, 'Spoor config directory created');
    ok(-o $config_file_directory, 'Spoor config directory owned by effective user');
    is((stat($config_file_directory))[2] & 07777, 0700, 'Spoor config directory has correct permissions');
    ok(-f $config_file_path, 'Spoor config file created');
    is((stat($config_file_path))[2] & 07777, 0600, 'Spoor config file has correct permissions');
  });

my %expected_config = (
  followers => {
    login => {
      name => $installation_config{'login_log_path'},



( run in 1.601 second using v1.01-cache-2.11-cpan-600a1bdf6e4 )