App-Spoor

 view release on metacpan or  search on metacpan

t/Installer.t  view on Meta::CPAN

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'},
      maxinterval => 10,
      debug => 1,
      transformer => 'bin/login_log_transformer.pl',
    },

t/Installer.t  view on Meta::CPAN

    App::Spoor::Installer::install(\%installation_config, $root_path);
    my $config_file = YAML::Tiny->read($config_file_path);
    my %actual_config = %{ $config_file->[0] };
    is_deeply(\%actual_config, \%expected_config, 'Configs match');
  });

$environment->run_test('creates directory structure for storing state', sub {
    App::Spoor::Installer::install(\%installation_config, $root_path);
    ok(-d $spoor_state_directory, 'Spoor state directory created');
    ok(-o $spoor_state_directory, 'Spoor state directory owned by effective user');
    is((stat($spoor_state_directory))[2] & 07777, 0700, 'Spoor state directory has correct permissions');

    ok(-d $spoor_parsed_state_directory, 'Spoor parsed state directory created');
    ok(-o $spoor_parsed_state_directory, 'Spoor parsed state directory owned by effective user');
    is((stat($spoor_parsed_state_directory))[2] & 07777, 0700, 'Spoor parsed state directory has correct permissions');

    ok(-d $spoor_transmitted_state_directory, 'Spoor transmitted state directory created');
    ok(-o $spoor_transmitted_state_directory, 'Spoor transmitted state directory owned by effective user');
    is(
      (stat($spoor_transmitted_state_directory))[2] & 07777,
      0700,
      'Spoor transmitted state directory has correct permissions'
    );

    ok(-d $spoor_transmission_failed_state_directory, 'Spoor transmission failed state directory created');
    ok(-o $spoor_transmission_failed_state_directory, 'Spoor transmission failed state directory owned by effective user');
    is((stat($spoor_transmission_failed_state_directory))[2] & 07777,
      0700,
      'Spoor transmission failed state directory has correct permissions'
    );
  });

$environment->run_test('creates systemd unit files for the login follower', sub {
    App::Spoor::Installer::install(\%installation_config, $root_path);
    ok(-f $login_follower_unit_file, "Login log follower unit file created: $login_follower_unit_file");
    is(
      path($login_follower_unit_file)->slurp_utf8,
      App::Spoor::LoginUnitFile::contents(),
      'Login unit file contents do not match'
    );
    is((stat($login_follower_unit_file))[2] & 07777,
      0644,
      'Spoor login follower unit file permissions'
    );
  });

$environment->run_test('creates systemd unit files for the access follower', sub {
    App::Spoor::Installer::install(\%installation_config, $root_path);
    ok(-f $access_follower_unit_file, "Access log follower unit file created: $access_follower_unit_file");
    is(
      path($access_follower_unit_file)->slurp_utf8,
      App::Spoor::AccessUnitFile::contents(),
      'Access unit file contents do not match'
    );
    is((stat($access_follower_unit_file))[2] & 07777,
      0644,
      'Spoor access follower unit file permissions'
    );
  });

$environment->run_test('creates systemd unit file for the error follower', sub {
    App::Spoor::Installer::install(\%installation_config, $root_path);
    ok(-f $error_follower_unit_file, "Error log follower unit file created: $error_follower_unit_file");
    is(
      path($error_follower_unit_file)->slurp_utf8,
      App::Spoor::ErrorUnitFile::contents(),
      'Error unit file contents do not match'
    );
    is((stat($error_follower_unit_file))[2] & 07777,
      0644,
      'Spoor error follower unit file permissions'
    );
  });

$environment->run_test('creates systemd unit file for the log transmitter', sub {
    App::Spoor::Installer::install(\%installation_config, $root_path);
    ok(-f $transmitter_unit_file, "Transmitter unit file created: $transmitter_unit_file");
    is(
      path($transmitter_unit_file)->slurp_utf8,
      App::Spoor::TransmitterUnitFile::contents(),
      'Transmitter unit file contents do not match'
    );
    is((stat($transmitter_unit_file))[2] & 07777,
      0644,
      'Spoor transmitter unit file permissions'
    );
  });

$environment->run_test('creates the hook file in the cpanel directory', sub {
    App::Spoor::Installer::install(\%installation_config, $root_path);
    is(
      (stat("$root_path/var/cpanel/perl5"))[2] & 07777,
      0755,
      'Perl5 dir permissions'
    );
    is(
      (stat("$root_path/var/cpanel/perl5/lib"))[2] & 07777,
      0755,
      'Perl5 lib dir permissions'
    );
    ok(-f $cpanel_hook_file_path, 'Cpanel Hook File');
    is(
      path($cpanel_hook_file_path)->slurp_utf8,
      App::Spoor::CpanelHookFile::contents('/var/log/spoor_forward'),
      'Hook file contents'
    );
    is((stat($cpanel_hook_file_path))[2] & 07777,
      0644,
      'Cpanel hook file permissions'
    );
  });

done_testing();

t/ParsedEntryWriter.t  view on Meta::CPAN

$environment->run_test('Writes the parsed successful mailbox login', sub {
    my $created_filepath = App::Spoor::ParsedEntryWriter::write_parsed_entry(
      \%successful_mailbox_login_contents, \%config
    );
    ok(
      $created_filepath =~ m|$parsed_entries_path/login\.$current_time\.\d{7}\.json|,
      'Correct file path for successful mailbox login'
    );
    ok((-e $created_filepath), 'File has been created for successful mailbox login');

    is((stat($created_filepath))[2] & 07777, 0600, 'Created file has correct permissions');

    is_deeply(
      \%successful_mailbox_login_contents,
      file_contents($created_filepath),
      'Persisted contents match successful mailbox login contents'
    );
  });

$environment->run_test('Does not write an unsuccessful mailbox login', sub {
    is(

t/ParsedEntryWriter.t  view on Meta::CPAN

$environment->run_test('Writes the successful forward_added_partial ip entry for a mailbox', sub {
    my $created_filepath = App::Spoor::ParsedEntryWriter::write_parsed_entry(
      \%successful_mailbox_forward_added_partial_ip_contents, \%config
    );
    ok(
      $created_filepath =~ m|$parsed_entries_path/notsignificant\.$current_time\.\d{7}\.json|,
      'Correct file path for successful mailbox added forward partial ip entry'
    );
    ok((-e $created_filepath), 'File has been created for successful mailbox added forward partial ip entry');

    is((stat($created_filepath))[2] & 07777, 0600, 'Created file has correct permissions');

    is_deeply(
      \%successful_mailbox_forward_added_partial_ip_contents,
      file_contents($created_filepath),
      'Persisted contents match successful mailbox added forward partial ip contents'
    );
  });

$environment->run_test('Does not write an unsuccessful mailbox added forward partial ip entry', sub {
    is(

t/ParsedEntryWriter.t  view on Meta::CPAN

$environment->run_test('Writes the successful forward_added_partial recipient entry for a mailbox', sub {
    my $created_filepath = App::Spoor::ParsedEntryWriter::write_parsed_entry(
      \%forward_added_partial_recipient_contents, \%config
    );
    ok(
      $created_filepath =~ m|$parsed_entries_path/notsignificant\.$current_time\.\d{7}\.json|,
      'Correct file path for successful mailbox added forward partial recipient entry'
    );
    ok((-e $created_filepath), 'File has been created for successful mailbox added forward partial recipient entry');

    is((stat($created_filepath))[2] & 07777, 0600, 'Created file has correct permissions');

    is_deeply(
      \%forward_added_partial_recipient_contents,
      file_contents($created_filepath),
      'Persisted contents match successful mailbox added forward partial recipient contents'
    );
  });

$environment->run_test('Does not write an unsuccessful added forward partial recipient entry', sub {
    is(

t/ParsedEntryWriter.t  view on Meta::CPAN

$environment->run_test('Writes the successful mailbox-level forward removal', sub {
    my $created_filepath = App::Spoor::ParsedEntryWriter::write_parsed_entry(
      \%successful_mailbox_level_forward_removal, \%config
    );
    ok(
      $created_filepath =~ m|$parsed_entries_path/notsignificant\.$current_time\.\d{7}\.json|,
      'Correct file path for successful mailbox forward removal'
    );
    ok((-e $created_filepath), 'File has been created for successful mailbox forward removal');

    is((stat($created_filepath))[2] & 07777, 0600, 'Created file has correct permissions');

    is_deeply(
      \%successful_mailbox_level_forward_removal,
      file_contents($created_filepath),
      'Persisted contents match successful mailbox forward removal contents'
    );
  });

$environment->run_test('Does not write an unsuccessful mailbox forward removal', sub {
    is(



( run in 0.579 second using v1.01-cache-2.11-cpan-49f99fa48dc )