mvhub-dev team mailing list archive
-
mvhub-dev team
-
Mailing list archive
-
Message #00301
[Merge] lp:~leegoodrich/mvhub/add_tests_to_utils_setup into lp:mvhub
Lee Goodrich has proposed merging lp:~leegoodrich/mvhub/add_tests_to_utils_setup into lp:mvhub.
Requested reviews:
MVHub devs with commit rights (mvhub-commit)
This is an interim merge for all the tests I've completed so far in Utils::Setup. The only incomplete ones I know of in this set is the apply_database_updates_for, which two tests are skipped as unimplemented. All tests should pass.
--
https://code.launchpad.net/~leegoodrich/mvhub/add_tests_to_utils_setup/+merge/27742
Your team MVHub Developers is subscribed to branch lp:mvhub.
=== modified file 'app-mvhub/project-tools/bin/mv_update_development'
--- app-mvhub/project-tools/bin/mv_update_development 2010-06-13 23:03:40 +0000
+++ app-mvhub/project-tools/bin/mv_update_development 2010-06-16 17:11:20 +0000
@@ -20,7 +20,6 @@
use MVHub::Utils::Setup;
my @ALLOWED_HOSTS = qw/ brave cricket /;
-my @WEBSITE_CODES = @MVHub::Utils::Setup::SITE_CODES;
{ # main
my $interactive = 0;
@@ -76,8 +75,7 @@
$prompt = "Update config files for $USERNAME? (Y/N):";
if ( !($interactive) || IO::Prompt::prompt( $prompt, -YN ) ) {
- MVHub::Utils::Setup::make_config_files_for( $USERNAME, $cfg,
- @WEBSITE_CODES );
+ MVHub::Utils::Setup::make_config_files_for( $USERNAME, $cfg );
$cfg = MVHub::Utils::ConfigSimple::create_config_from(
$ENV{MV_CONFIG_FILE} );
@@ -86,26 +84,21 @@
$prompt = "DESTROY and reload databases for $USERNAME (Y/N):";
if ( !($interactive) || IO::Prompt::prompt( $prompt, -YN ) ) {
MVHub::Utils::Setup::make_database_user( $USERNAME, $cfg );
- MVHub::Utils::Setup::make_databases_for( $USERNAME, $cfg,
- @WEBSITE_CODES );
- MVHub::Utils::Setup::load_test_data_for( $USERNAME, $cfg,
- @WEBSITE_CODES );
+ MVHub::Utils::Setup::make_databases_for( $USERNAME, $cfg );
+ MVHub::Utils::Setup::load_test_data_for( $USERNAME, $cfg );
}
$prompt = "Apply database updates for $USERNAME? (Y/N):";
if ( !($interactive) || IO::Prompt::prompt( $prompt, -YN ) ) {
- MVHub::Utils::Setup::apply_database_updates_for( $USERNAME, $cfg,
- @WEBSITE_CODES );
+ MVHub::Utils::Setup::apply_database_updates_for( $USERNAME, $cfg );
}
if ( defined $ENV{SUDO_USER} ) {
- foreach my $prefix (@WEBSITE_CODES) {
- $prompt =
- "Add $prefix entries for $USERNAME into DNS and Apache? (Y/N):";
- if ( !($interactive) || IO::Prompt::prompt( $prompt, -YN ) ) {
- MVHub::Utils::Setup::add_dns( $USERNAME, $prefix );
- MVHub::Utils::Setup::add_apache_config( $USERNAME, $prefix );
- }
+ $prompt =
+ "Add entries for $USERNAME into DNS and Apache? (Y/N):";
+ if ( !($interactive) || IO::Prompt::prompt( $prompt, -YN ) ) {
+ MVHub::Utils::Setup::add_dns( $USERNAME );
+ MVHub::Utils::Setup::add_apache_config( $USERNAME );
}
}
}
=== modified file 'app-mvhub/project-tools/bin/mv_update_production'
--- app-mvhub/project-tools/bin/mv_update_production 2010-05-28 18:56:18 +0000
+++ app-mvhub/project-tools/bin/mv_update_production 2010-06-16 17:11:20 +0000
@@ -23,7 +23,6 @@
my @ALLOWED_HOSTS = qw/ parrot /;
my $USERNAME = 'www-data';
-my @WEBSITE_CODES = @MVHub::Utils::Setup::SITE_CODES;
my $CFG_PATH = '/var/www/mvhub/www-data/conf/nsp.conf';
@@ -65,13 +64,13 @@
$prompt = "Update config files for $USERNAME? (Y/N):";
if ( !($interactive) || IO::Prompt::prompt( $prompt, -YN ) ) {
- MVHub::Utils::Setup::make_config_files_for( $USERNAME, $cfg, @WEBSITE_CODES );
+ MVHub::Utils::Setup::make_config_files_for( $USERNAME, $cfg );
$cfg = MVHub::Utils::ConfigSimple::create_config_from( $CFG_PATH );
}
$prompt = "Apply database updates for $USERNAME? (Y/N):";
if ( !($interactive) || IO::Prompt::prompt( $prompt, -YN ) ) {
- MVHub::Utils::Setup::apply_database_updates_for( $USERNAME, $cfg, @WEBSITE_CODES );
+ MVHub::Utils::Setup::apply_database_updates_for( $USERNAME, $cfg );
}
$prompt = "Update contents of /etc? (Y/N):";
=== modified file 'app-mvhub/project-tools/bin/mv_update_staging'
--- app-mvhub/project-tools/bin/mv_update_staging 2010-05-28 18:56:18 +0000
+++ app-mvhub/project-tools/bin/mv_update_staging 2010-06-16 17:11:20 +0000
@@ -23,7 +23,6 @@
my @ALLOWED_HOSTS = qw/ penguin /;
my $USERNAME = 'www-data';
-my @WEBSITE_CODES = @MVHub::Utils::Setup::SITE_CODES;
my $CFG_PATH = '/var/www/mvhub/www-data/conf/nsp.conf';
@@ -65,20 +64,20 @@
$prompt = "Update config files? (Y/N):";
if ( !($interactive) || IO::Prompt::prompt( $prompt, -YN ) ) {
- MVHub::Utils::Setup::make_config_files_for( $USERNAME, $cfg, @WEBSITE_CODES );
+ MVHub::Utils::Setup::make_config_files_for( $USERNAME, $cfg );
$cfg = MVHub::Utils::ConfigSimple::create_config_from( $CFG_PATH, $USERNAME );
}
$prompt = "Reload databases with recent production data? (Y/N):";
if ( !($interactive) || IO::Prompt::prompt( $prompt, -YN ) ) {
- MVHub::Utils::Setup::get_production_data( @WEBSITE_CODES );
- MVHub::Utils::Setup::make_databases_for( $USERNAME, $cfg, @WEBSITE_CODES );
- MVHub::Utils::Setup::load_production_data( $USERNAME, $cfg, @WEBSITE_CODES );
+ MVHub::Utils::Setup::get_production_data();
+ MVHub::Utils::Setup::make_databases_for( $USERNAME, $cfg );
+ MVHub::Utils::Setup::load_production_data( $USERNAME, $cfg );
}
$prompt = "Apply database updates for $USERNAME? (Y/N):";
if ( !($interactive) || IO::Prompt::prompt( $prompt, -YN ) ) {
- MVHub::Utils::Setup::apply_database_updates_for( $USERNAME, $cfg, @WEBSITE_CODES );
+ MVHub::Utils::Setup::apply_database_updates_for( $USERNAME, $cfg );
}
$prompt = "Update contents of /etc? (Y/N):";
@@ -98,7 +97,7 @@
sub usage {
my $this_script = File::Basename::basename($0);
return << "USAGE";
-$this_script - Utility for updatitg the staging MVHub environment
+$this_script - Utility for updating the staging MVHub environment
Usage: sudo $this_script [options]
=== modified file 'lib-mvhub/lib/MVHub/Utils/Setup.pm' (properties changed: -x to +x)
--- lib-mvhub/lib/MVHub/Utils/Setup.pm 2010-06-13 23:15:16 +0000
+++ lib-mvhub/lib/MVHub/Utils/Setup.pm 2010-06-16 17:11:20 +0000
@@ -7,7 +7,10 @@
use Config::Simple;
use DateTime;
use DBI;
+use IO::File;
use IO::Prompt;
+use IPC::System::Simple qw/ system /;
+use Fatal qw/ open close /;
use File::Basename;
use File::Copy;
@@ -40,19 +43,15 @@
my ( $file, $append_lines ) = @_;
my $tmp_file = "$file.tmp";
- open( IN, $file )
- or die "bad open: $file error: $! \n";
- my @lines = <IN>;
- close(IN) or die "bad close $file error: $!\n";
-
+ open( my $IN, "<", $file );
+ my @lines = <$IN>;
+ close($IN);
push @lines, $append_lines;
- open( OUT, ">", "$tmp_file" )
- or die "couldn't open $tmp_file.tmp error: $! \n";
- ( print OUT @lines )
- or die "couldn't write to $tmp_file $!\n";
+ open( my $OUT, ">", $tmp_file );
+ print $OUT @lines;
- close(OUT) or die "couldn't close $tmp_file $!\n";
+ close($OUT);
File::Copy::move( $tmp_file, $file )
or die "couldn't rename $tmp_file to $file\n";
}
@@ -76,7 +75,6 @@
sub _add_site_specific_values {
my $template_cfg = shift or croak 'missing param: $template_cfg';
- my $username = shift or croak 'missing param: $username';
my %site_specific_values = @_;
foreach my $key ( keys %site_specific_values ) {
@@ -175,9 +173,9 @@
}
sub _determine_user_config_filename_from {
- my $username = shift;
- my $site_code = shift;
- my $cfg = shift;
+ my $username = shift or croak 'missing param: $username';
+ my $site_code = shift or croak 'missing param: $site_code';
+ my $cfg = shift or croak 'missing param: $cfg';
my $base_dir = $cfg->param('BASE.dir');
@@ -257,7 +255,7 @@
foreach my $key ( $template_cfg->param() ) {
if ( !( $user_cfg->param($key) ) ) {
my $value = $template_cfg->param($key);
- $value = defined $value ? $value : 'BAD_MISSING';
+ $value = $value ? $value : 'BAD_MISSING';
$user_cfg->param( $key, $value );
}
}
@@ -276,8 +274,7 @@
my $host = shift or croak 'missing parameter: $host';
my $filename = shift or croak 'missing parameter: $filename';
- open my $in_fh, $filename
- or die "failed to open $filename error:$!";
+ open( my $in_fh, '<', $filename );
my @contents = <$in_fh>;
my $regex = qr/$host/;
@@ -305,7 +302,7 @@
}
sub _set_db_ENV_vars {
- my $cfg = shift;
+ my $cfg = shift or croak 'missing parameter: $cfg';
# so psql stops on error
$ENV{ON_ERROR_STOP} = 1;
@@ -318,43 +315,44 @@
sub add_dns {
my $username = shift or croak 'missing paramater: $username';
- my $prefix = shift or croak 'missing parameter: $prefix';
-
- my $host = "$prefix.$username";
- my $FILE = '/etc/bind/db.testing123.net';
-
- my $line = sprintf( "%-15s IN A 129.63.96.180\n", $host );
- if ( _possible_dup_line( $host, $FILE ) ) {
- warn "$host found in $FILE, skipping append\n";
- return;
+
+ foreach my $prefix (@SITE_CODES) {
+ my $host = "$prefix.$username";
+ my $FILE = '/etc/bind/db.testing123.net';
+
+ my $line = sprintf( "%-15s IN A 129.63.96.180\n", $host );
+ if ( _possible_dup_line( $host, $FILE ) ) {
+ warn "$host found in $FILE, skipping append\n";
+ return;
+ }
+
+ _append_to_file( $FILE, $line );
}
-
- _append_to_file( $FILE, $line );
}
sub add_apache_config {
my $username = shift or croak 'missing paramater: $username';
- my $prefix = shift or croak 'missing parameter: $prefix';
-
- my $FILE = '/etc/apache2/sites-available/mvhub_developer.data';
- my $host = "$prefix.$username.testing123.net";
-
- my $line = sprintf( "Use MVhub %-15s $prefix $host\n", $username );
-
- if ( _possible_dup_line( $host, $FILE ) ) {
- warn "$host found in $FILE, skipping append\n";
- return;
+
+ foreach my $prefix (@SITE_CODES) {
+ my $FILE = '/etc/apache2/sites-available/mvhub_developer.data';
+ my $host = "$prefix.$username.testing123.net";
+
+ my $line = sprintf( "Use MVhub %-15s $prefix $host\n", $username );
+
+ if ( _possible_dup_line( $host, $FILE ) ) {
+ warn "$host found in $FILE, skipping append\n";
+ return;
+ }
+
+ _append_to_file( $FILE, $line );
}
-
- _append_to_file( $FILE, $line );
}
sub apply_database_updates_for {
my $username = shift or croak 'missing paramater: $username';
my $cfg = shift or croak 'missing paramter: $cfg';
- my @website_codes = @_;
- foreach my $prefix (@website_codes) {
+ foreach my $prefix (@SITE_CODES) {
my $update_user_cfg_filename
= _determine_user_config_filename_from( $username, $prefix,
$cfg );
@@ -479,7 +477,6 @@
}
sub get_production_data {
- my @website_codes = @_;
my $cmd;
my $dt = DateTime->now()->subtract( days => 1 );
@@ -488,14 +485,12 @@
my $timestamp = "${ymd}-06_25-${dow}";
print "Getting recent backup of production data...";
- foreach my $site_code (@website_codes) {
+ foreach my $site_code (@SITE_CODES) {
$cmd = "rsync csl-db-02.inside::backup/postgres/";
$cmd .= "${timestamp}_${site_code}_production_db.dump ";
$cmd .= "/tmp/${site_code}_production_data.dump";
- ( system($cmd) == 0 )
- or die
- "Failed to rsync ${timestamp}_${site_code}_production_db.sql\n";
+ system($cmd);
}
print "done\n";
}
@@ -503,12 +498,11 @@
sub load_production_data {
my $username = shift or croak 'missing param: $username';
my $cfg = shift or croak 'missing param: $cfg';
- my @website_codes = @_;
my $cmd;
print "Loading production data...";
- foreach my $suffix (@website_codes) {
+ foreach my $suffix (@SITE_CODES) {
my $cfg_filename
= _determine_user_config_filename_from( $username, $suffix,
$cfg );
@@ -529,14 +523,13 @@
sub load_test_data_for {
my $username = shift or croak 'missing param: $username';
my $cfg = shift or croak 'missing param: $cfg';
- my @website_codes = @_;
my $path_to_project_tools
= $cfg->param('ABSOLUTE_PATH.project_tools_dir');
my $cmd;
print "Loading test data...";
- foreach my $suffix (@website_codes) {
+ foreach my $suffix (@SITE_CODES) {
my $cfg_filename
= _determine_user_config_filename_from( $username, $suffix,
$cfg );
@@ -557,7 +550,7 @@
sub make_config_files_for {
my $username = shift;
my $cfg = shift;
- my @website_codes = @_;
+
my @keys_for_user_generated_values = qw/ DATABASE.database_magic_word /;
my $template_config_file
@@ -565,7 +558,7 @@
my $template_cfg = new Config::Simple($template_config_file)
or die "failed to create config object from $template_config_file";
- foreach my $site_code (@website_codes) {
+ foreach my $site_code (@SITE_CODES) {
my $cfg_filename
= _determine_user_config_filename_from( $username, $site_code,
@@ -579,7 +572,7 @@
print "Updating Config: $cfg_filename\n";
my %site_specific_values = _get_site_specific_values($site_code);
- $template_cfg = _add_site_specific_values( $template_cfg, $username,
+ $template_cfg = _add_site_specific_values( $template_cfg,
%site_specific_values );
$template_cfg
= _add_calculable_values( $template_cfg, $username, $site_code );
@@ -655,7 +648,7 @@
{ dest => "/home/$username/.ssh/config",
owner => "$username",
group => "$username",
- permissions => 'u=rwx,g=,o=',
+ permissions => 'u=rw,g=,o=',
contents => <<'CONTENT',
Host bazaar.launchpad.net
IdentityFile ~/.ssh/id_rsa_launchpad
@@ -684,7 +677,6 @@
sub make_databases_for {
my $username = shift or croak 'missing parameter: $username';
my $cfg = shift or croak 'missing parameter: $cfg';
- my @website_codes = @_ or croak 'mssing parameter: @website_codes';
my $dbh = _get_dbh_for_template1_db($cfg);
my $sql;
@@ -709,7 +701,7 @@
return;
}
- foreach my $suffix (@website_codes) {
+ foreach my $suffix (@SITE_CODES) {
if ( _db_exists( $dbh, "$username.$suffix" ) ) {
$sql = qq{DROP DATABASE "$username.${suffix}"};
$dbh->do($sql);
@@ -733,9 +725,9 @@
if ( -e $file_href->{dest} ) {
$file_href->{dest} = "$file_href->{dest}.default";
}
- open FILE, ">$file_href->{dest}" or croak "open FILE failed: $!";
- print FILE $file_href->{contents};
- close FILE or croak "close FILE failed: $!";
+ open my $FILE, ">$file_href->{dest}" or croak "open FILE failed: $!";
+ print $FILE $file_href->{contents};
+ close $FILE or croak "close FILE failed: $!";
my $chown_cmd
= "chown $file_href->{owner}:$file_href->{group} $file_href->{dest}";
my $chmod_cmd = "chmod $file_href->{permissions} $file_href->{dest}";
=== added file 'lib-mvhub/t/Utils/Setup/_add_calculable_values.t'
--- lib-mvhub/t/Utils/Setup/_add_calculable_values.t 1970-01-01 00:00:00 +0000
+++ lib-mvhub/t/Utils/Setup/_add_calculable_values.t 2010-06-16 17:11:20 +0000
@@ -0,0 +1,35 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use Test::More tests => 4 + 1; # + 1 for no warnings
+use Test::NoWarnings;
+use Test::Exception;
+use Config::Simple;
+
+use MVHub::Utils::Setup;
+
+my $test_message;
+
+###
+$test_message = 'dies when missing 1st parameter';
+###
+dies_ok { MVHub::Utils::Setup::_add_calculable_values() } $test_message;
+
+###
+$test_message = 'dies when missing 2nd parameter';
+###
+dies_ok { MVHub::Utils::Setup::_add_calculable_values(1) } $test_message;
+
+###
+$test_message = 'dies when missing 3rd parameter';
+###
+dies_ok { MVHub::Utils::Setup::_add_calculable_values(1, 2) } $test_message;
+
+###
+$test_message = 'lives with 3 valid parameters';
+###
+my $config = new Config::Simple($ENV{MV_TEST_CONFIG_FILE});
+lives_ok { MVHub::Utils::Setup::_add_calculable_values($config, 'user', 'nsp') } $test_message;
+
=== added file 'lib-mvhub/t/Utils/Setup/_add_site_specific_values.t'
--- lib-mvhub/t/Utils/Setup/_add_site_specific_values.t 1970-01-01 00:00:00 +0000
+++ lib-mvhub/t/Utils/Setup/_add_site_specific_values.t 2010-06-16 17:11:20 +0000
@@ -0,0 +1,30 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use Test::More tests => 2 + 1; # + 1 for NoWarnings
+use Test::NoWarnings;
+use Test::Exception;
+use Config::Simple;
+
+use MVHub::Utils::Setup;
+
+my $test_message;
+
+###
+$test_message = 'dies when missing 1st parameter';
+###
+dies_ok { MVHub::Utils::Setup::_add_site_specific_values() } $test_message;
+
+###
+$test_message = 'passed in value added to the config';
+###
+my $test_config = new Config::Simple( $ENV{MV_TEST_CONFIG_FILE} );
+my %test_values_to_add = (
+ 'TEST.key' => 'test_value',
+);
+
+my $result_cfg = MVHub::Utils::Setup::_add_site_specific_values( $test_config,
+ %test_values_to_add );
+is ( $result_cfg->param( 'TEST.key' ), $test_values_to_add{'TEST.key'}, $test_message);
=== added file 'lib-mvhub/t/Utils/Setup/_add_user_generated_values.t'
--- lib-mvhub/t/Utils/Setup/_add_user_generated_values.t 1970-01-01 00:00:00 +0000
+++ lib-mvhub/t/Utils/Setup/_add_user_generated_values.t 2010-06-16 17:11:20 +0000
@@ -0,0 +1,54 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use Test::More tests => 4 + 1; # + 1 for NoWarnings
+use Test::NoWarnings;
+use Test::Exception;
+use Config::Simple;
+
+use MVHub::Utils::Setup;
+
+{
+ package MVHub::Utils::Setup;
+
+ use subs qw/prompt/;
+
+ package main;
+
+ no warnings;
+ *MVHub::Utils::Setup::prompt = sub {
+ return $_ = 'test_value';
+ };
+ use warnings;
+}
+my $test_message;
+
+###
+$test_message = 'dies when missing 1st parameter';
+###
+dies_ok { MVHub::Utils::Setup::_add_user_generated_values() } $test_message;
+
+###
+$test_message = 'dies when missing 2nd parameter';
+###
+dies_ok { MVHub::Utils::Setup::_add_user_generated_values(1) } $test_message;
+
+###
+$test_message = 'Key not in config file added to config';
+###
+my $test_config = new Config::Simple( $ENV{MV_TEST_CONFIG_FILE} );
+my %test_values_to_add = (
+ 'TEST.key' => 'test_value',
+ 'DATABASE.database_user' => 'not_a_user',
+);
+
+my $result_cfg = MVHub::Utils::Setup::_add_user_generated_values( $test_config, $test_config,
+ %test_values_to_add );
+is ( $result_cfg->param( 'TEST.key' ), $test_values_to_add{'TEST.key'}, $test_message);
+
+###
+$test_message = 'Key already in config not added';
+###
+isnt ( $result_cfg->param( 'DATABASE.database_user' ), $test_values_to_add{'DATABASE.database_user'}, $test_message);
=== added file 'lib-mvhub/t/Utils/Setup/_append_to_file.t'
--- lib-mvhub/t/Utils/Setup/_append_to_file.t 1970-01-01 00:00:00 +0000
+++ lib-mvhub/t/Utils/Setup/_append_to_file.t 2010-06-16 17:11:20 +0000
@@ -0,0 +1,67 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use English '-no_match_vars';
+
+use Test::More tests => 3 + 1; # + 1 for no warnings
+use Test::NoWarnings;
+use Test::Exception;
+
+use MVHub::Utils::Setup;
+
+my $test_message;
+
+###
+$test_message = 'dies on bad file';
+###
+dies_ok { MVHub::Utils::Setup::_append_to_file('bad_file_to_open.bad', '') } $test_message;
+
+###
+$test_message ='Lines are appended to the file';
+###
+my $append_success = 1;
+my $test_file = "/tmp/_append_to_file_$PID.txt";
+
+open ( my $TEST,'>', $test_file );
+print $TEST "This is a test file, it can be deleted\n";
+close $TEST;
+
+MVHub::Utils::Setup::_append_to_file( $test_file, "Appended line\n");
+
+open ($TEST, "<", $test_file );
+my @lines = <$TEST>;
+close $TEST;
+
+foreach my $line (@lines) {
+if (!$line =~ m/deleted|Appended/) {
+ $append_success = 0;
+ }
+}
+
+ok($append_success, $test_message);
+
+###
+$test_message = 'dies when rename file fails';
+###
+{
+ package File::Copy;
+
+ use subs qw/ move /;
+
+ package main;
+
+ no warnings;
+ *File::Copy::move = sub
+ {
+ return 0;
+ };
+ use warnings;
+
+ dies_ok { MVHub::Utils::Setup::_append_to_file( $test_file, 'Appended line') } $test_message;
+}
+
+unlink $test_file;
+unlink "$test_file.tmp";
+
=== added file 'lib-mvhub/t/Utils/Setup/_db_exists.t'
--- lib-mvhub/t/Utils/Setup/_db_exists.t 1970-01-01 00:00:00 +0000
+++ lib-mvhub/t/Utils/Setup/_db_exists.t 2010-06-16 17:11:20 +0000
@@ -0,0 +1,44 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use Test::More tests => 4 + 1; # + 1 for NoWarnings
+use Test::NoWarnings;
+use Test::Exception;
+use Test::MockObject;
+use Config::Simple;
+
+use MVHub::Utils::Setup;
+
+my $test_message;
+
+###
+$test_message = 'dies when missing 1st parameter';
+###
+dies_ok { MVHub::Utils::Setup::_db_exists() } $test_message;
+
+###
+$test_message = 'dies when missing 2nd parameter';
+###
+dies_ok { MVHub::Utils::Setup::_db_exists(1) } $test_message;
+
+###
+$test_message = 'returns 1 if db exists';
+###
+my $mock_dbh = Test::MockObject->new();
+$mock_dbh->mock(
+ 'selectall_arrayref',
+ sub {
+ ( my $not_used, my $not_used_2, my @db_name ) = @_;
+ if ( $db_name[1] eq 'true' ) { return ['true'] }
+ else { return [] }
+ }
+);
+
+is ( MVHub::Utils::Setup::_db_exists( $mock_dbh, 'true'), '1', $test_message);
+
+###
+$test_message = 'returns 0 if db does not exist';
+###
+is ( MVHub::Utils::Setup::_db_exists( $mock_dbh, 'false'), '0', $test_message);
=== added file 'lib-mvhub/t/Utils/Setup/_db_user_found.t'
--- lib-mvhub/t/Utils/Setup/_db_user_found.t 1970-01-01 00:00:00 +0000
+++ lib-mvhub/t/Utils/Setup/_db_user_found.t 2010-06-16 17:11:20 +0000
@@ -0,0 +1,44 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use Test::More tests => 4 + 1; # + 1 for NoWarnings
+use Test::NoWarnings;
+use Test::Exception;
+use Test::MockObject;
+use Config::Simple;
+
+use MVHub::Utils::Setup;
+
+my $test_message;
+
+###
+$test_message = 'dies when missing 1st parameter';
+###
+dies_ok { MVHub::Utils::Setup::_db_user_found() } $test_message;
+
+###
+$test_message = 'dies when missing 2nd parameter';
+###
+dies_ok { MVHub::Utils::Setup::_db_user_found(1) } $test_message;
+
+###
+$test_message = 'returns 1 if user exists';
+###
+my $mock_dbh = Test::MockObject->new();
+$mock_dbh->mock(
+ 'selectall_arrayref',
+ sub {
+ ( my $not_used, my $not_used_2, my @user_name ) = @_;
+ if ( $user_name[1] eq 'true' ) { return ['true'] }
+ else { return [] }
+ }
+);
+
+is ( MVHub::Utils::Setup::_db_user_found( $mock_dbh, 'true'), '1', $test_message);
+
+###
+$test_message = 'returns 0 if user does not exist';
+###
+is ( MVHub::Utils::Setup::_db_user_found( $mock_dbh, 'false'), '0', $test_message);
=== added file 'lib-mvhub/t/Utils/Setup/_db_user_has_needed_roles.t'
--- lib-mvhub/t/Utils/Setup/_db_user_has_needed_roles.t 1970-01-01 00:00:00 +0000
+++ lib-mvhub/t/Utils/Setup/_db_user_has_needed_roles.t 2010-06-16 17:11:20 +0000
@@ -0,0 +1,48 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use Test::More tests => 4 + 1; # + 1 for NoWarnings
+use Test::NoWarnings;
+use Test::Exception;
+use Test::MockObject;
+use Config::Simple;
+
+use MVHub::Utils::Setup;
+
+my $test_message;
+
+###
+$test_message = 'dies when missing 1st parameter';
+###
+dies_ok { MVHub::Utils::Setup::_db_user_has_needed_roles() } $test_message;
+
+###
+$test_message = 'dies when missing 2nd parameter';
+###
+dies_ok { MVHub::Utils::Setup::_db_user_has_needed_roles(1) } $test_message;
+
+###
+$test_message = 'returns 1 if user has needed roles';
+###
+my $mock_dbh = Test::MockObject->new();
+$mock_dbh->mock(
+ 'selectall_arrayref',
+ sub {
+ ( my $not_used, my $not_used_2, my @user_name ) = @_;
+ if ( $user_name[1] eq 'true' ) {
+ return [ { 'rolcreaterole' => '1', 'rolcreatedb' => '1' } ];
+ }
+ else { return [] }
+ }
+);
+
+is( MVHub::Utils::Setup::_db_user_has_needed_roles( $mock_dbh, 'true' ),
+ '1', $test_message );
+
+###
+$test_message = 'returns 0 if user does not have needed roles';
+###
+is( MVHub::Utils::Setup::_db_user_has_needed_roles( $mock_dbh, 'false' ),
+ '0', $test_message );
=== added file 'lib-mvhub/t/Utils/Setup/_db_user_has_superuser_role.t'
--- lib-mvhub/t/Utils/Setup/_db_user_has_superuser_role.t 1970-01-01 00:00:00 +0000
+++ lib-mvhub/t/Utils/Setup/_db_user_has_superuser_role.t 2010-06-16 17:11:20 +0000
@@ -0,0 +1,48 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use Test::More tests => 4 + 1; # + 1 for NoWarnings
+use Test::NoWarnings;
+use Test::Exception;
+use Test::MockObject;
+use Config::Simple;
+
+use MVHub::Utils::Setup;
+
+my $test_message;
+
+###
+$test_message = 'dies when missing 1st parameter';
+###
+dies_ok { MVHub::Utils::Setup::_db_user_has_superuser_role() } $test_message;
+
+###
+$test_message = 'dies when missing 2nd parameter';
+###
+dies_ok { MVHub::Utils::Setup::_db_user_has_superuser_role(1) } $test_message;
+
+###
+$test_message = 'returns 1 if user is a superuser';
+###
+my $mock_dbh = Test::MockObject->new();
+$mock_dbh->mock(
+ 'selectall_arrayref',
+ sub {
+ ( my $not_used, my $not_used_2, my @user_name ) = @_;
+ if ( $user_name[1] eq 'true' ) {
+ return [ { 'rolsuper' => '1' } ];
+ }
+ else { return [] }
+ }
+);
+
+is( MVHub::Utils::Setup::_db_user_has_superuser_role( $mock_dbh, 'true' ),
+ '1', $test_message );
+
+###
+$test_message = 'returns 0 if user is not a superuser';
+###
+is( MVHub::Utils::Setup::_db_user_has_superuser_role( $mock_dbh, 'false' ),
+ '0', $test_message );
=== added file 'lib-mvhub/t/Utils/Setup/_determine_user_config_filename_from.t'
--- lib-mvhub/t/Utils/Setup/_determine_user_config_filename_from.t 1970-01-01 00:00:00 +0000
+++ lib-mvhub/t/Utils/Setup/_determine_user_config_filename_from.t 2010-06-16 17:11:20 +0000
@@ -0,0 +1,43 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use Test::More tests => 4 + 1; # + 1 for NoWarnings
+use Test::NoWarnings;
+use Test::Exception;
+use Test::MockObject;
+use Config::Simple;
+
+use MVHub::Utils::Setup;
+
+my $test_message;
+
+###
+$test_message = 'dies when missing 1st parameter';
+###
+dies_ok { MVHub::Utils::Setup::_determine_user_config_filename_from() }
+$test_message;
+
+###
+$test_message = 'dies when missing 2nd parameter';
+###
+dies_ok { MVHub::Utils::Setup::_determine_user_config_filename_from(1) }
+$test_message;
+
+###
+$test_message = 'dies when missing 3rd parameter';
+###
+dies_ok { MVHub::Utils::Setup::_determine_user_config_filename_from( 1, 2 ) }
+$test_message;
+
+###
+$test_message = 'lives when passed correct parameters';
+###
+my $test_cfg = new Config::Simple( $ENV{MV_TEST_CONFIG_FILE} );
+lives_ok {
+ MVHub::Utils::Setup::_determine_user_config_filename_from( 'test', 'nsp',
+ $test_cfg );
+}
+$test_message;
+
=== added file 'lib-mvhub/t/Utils/Setup/_do_or_die.t'
--- lib-mvhub/t/Utils/Setup/_do_or_die.t 1970-01-01 00:00:00 +0000
+++ lib-mvhub/t/Utils/Setup/_do_or_die.t 2010-06-16 17:11:20 +0000
@@ -0,0 +1,45 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use Test::More tests => 3 + 1; # + 1 for NoWarnings
+use Test::NoWarnings;
+use Test::Exception;
+use Config::Simple;
+BEGIN {
+ package MVHub::Utils::Setup;
+
+ use subs 'system';
+
+ package main;
+ *MVHub::Utils::Setup::system = sub {
+ my $cmd = shift;
+ if ($cmd eq 'true') {
+ return 0;
+ }
+ else { return 1 };
+ };
+
+}
+use MVHub::Utils::Setup;
+
+my $test_message;
+
+###
+$test_message = 'dies when missing 1st parameter';
+###
+dies_ok { MVHub::Utils::Setup::_do_or_die() }
+$test_message;
+
+###
+$test_message = 'lives when system executes command successfully';
+###
+
+lives_ok { MVHub::Utils::Setup::_do_or_die( 'true' ) } $test_message;
+
+###
+$test_message = 'dies when system fails on command';
+###
+# $fail = 1;
+dies_ok { MVHub::Utils::Setup::_do_or_die( 'false' ) } $test_message;
=== added file 'lib-mvhub/t/Utils/Setup/_get_dbh_for_template1_db.t'
--- lib-mvhub/t/Utils/Setup/_get_dbh_for_template1_db.t 1970-01-01 00:00:00 +0000
+++ lib-mvhub/t/Utils/Setup/_get_dbh_for_template1_db.t 2010-06-16 17:11:20 +0000
@@ -0,0 +1,42 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use Test::More tests => 3 + 1; # + 1 for NoWarnings
+use Test::NoWarnings;
+use Test::Exception;
+use Test::MockModule;
+use Config::Simple;
+use DBI;
+
+use MVHub::Utils::Setup;
+
+my $test_message;
+
+###
+$test_message = 'dies when missing 1st parameter';
+###
+dies_ok { MVHub::Utils::Setup::_get_dbh_for_template1_db() } $test_message;
+
+###
+$test_message = 'returns valid dbh from config file';
+###
+my $test_config = new Config::Simple( $ENV{MV_CONFIG_FILE} );
+
+my $mock_dbh = DBI->connect('DBI:Mock:', '', '');
+my $mock_module = new Test::MockModule('DBI');
+$mock_module->mock(
+ 'connect',
+ sub {
+ return $mock_dbh;
+ }
+);
+my $test_dbh = MVHub::Utils::Setup::_get_dbh_for_template1_db($test_config);
+ok(ref $test_dbh eq 'DBI::db', $test_message);
+
+###
+$test_message = 'dies if DBI->connect fails';
+###
+$mock_dbh = 0;
+dies_ok { MVHub::Utils::Setup::_get_dbh_for_template1_db($test_config) } $test_message;
=== added file 'lib-mvhub/t/Utils/Setup/_get_site_specific_values.t'
--- lib-mvhub/t/Utils/Setup/_get_site_specific_values.t 1970-01-01 00:00:00 +0000
+++ lib-mvhub/t/Utils/Setup/_get_site_specific_values.t 2010-06-16 17:11:20 +0000
@@ -0,0 +1,25 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use Test::More tests => 2 + 1; # + 1 for NoWarnings
+use Test::NoWarnings;
+use Test::Exception;
+use Test::MockObject;
+use Config::Simple;
+
+use MVHub::Utils::Setup;
+
+my $test_message;
+
+###
+$test_message = 'dies when missing 1st parameter';
+###
+dies_ok { MVHub::Utils::Setup::_get_site_specific_values() } $test_message;
+
+###
+$test_message = 'returns valid hash when passed in a site code';
+###
+my %test_hash = MVHub::Utils::Setup::_get_site_specific_values( 'nsp' );
+ok (scalar %test_hash, $test_message);
=== added file 'lib-mvhub/t/Utils/Setup/_make_empty_config_file_named.t'
--- lib-mvhub/t/Utils/Setup/_make_empty_config_file_named.t 1970-01-01 00:00:00 +0000
+++ lib-mvhub/t/Utils/Setup/_make_empty_config_file_named.t 2010-06-16 17:11:20 +0000
@@ -0,0 +1,29 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use English '-no_match_vars';
+
+use Test::More tests => 2 + 1; # + 1 for NoWarnings
+use Test::NoWarnings;
+use Test::Exception;
+
+use MVHub::Utils::Setup;
+
+my $test_message;
+
+###
+$test_message = 'dies when missing 1st parameter';
+###
+dies_ok { MVHub::Utils::Setup::_make_empty_config_file_named() } $test_message;
+
+###
+$test_message = 'Creates file when passed in filename';
+###
+my $filename = "/tmp/_make_empty_config_file_named_$PID.txt";
+MVHub::Utils::Setup::_make_empty_config_file_named( $filename );
+
+ok((-e $filename), $test_message);
+
+unlink $filename;
=== added file 'lib-mvhub/t/Utils/Setup/_merge_conf_objects.t'
--- lib-mvhub/t/Utils/Setup/_merge_conf_objects.t 1970-01-01 00:00:00 +0000
+++ lib-mvhub/t/Utils/Setup/_merge_conf_objects.t 2010-06-16 17:11:20 +0000
@@ -0,0 +1,45 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use Test::More tests => 3 + 1; # + 1 for NoWarnings
+use Test::NoWarnings;
+use Test::Exception;
+use Config::Simple;
+
+use MVHub::Utils::Setup;
+
+my $test_message;
+
+###
+$test_message = 'dies when missing 1st parameter';
+###
+dies_ok { MVHub::Utils::Setup::_merge_conf_objects() } $test_message;
+
+###
+$test_message = 'dies when missing 2nd parameter';
+###
+dies_ok { MVHub::Utils::Setup::_merge_conf_objects(1) } $test_message;
+
+###
+$test_message = 'merges conf files correctly';
+###
+my $test_cfg_1 = new Config::Simple(syntax => 'ini');
+my $test_cfg_2 = new Config::Simple(syntax => 'ini');
+$test_cfg_1->param( 'TEST.key_1', 'key_1_value' );
+$test_cfg_1->param( 'TEST.key_2', '' );
+$test_cfg_1->param( 'TEST.key_3', 'key_3_value' );
+
+$test_cfg_2->param( 'TEST.key_1', 'key_1_value' );
+$test_cfg_2->param( 'TEST.key_4', 'key_4_value' );
+
+$test_cfg_2
+ = MVHub::Utils::Setup::_merge_conf_objects( $test_cfg_1, $test_cfg_2 );
+my %expected = (
+ 'TEST.key_1' => 'key_1_value',
+ 'TEST.key_2' => 'BAD_MISSING',
+ 'TEST.key_3' => 'key_3_value'
+);
+my %got = $test_cfg_2->vars();
+is_deeply (\%got, \%expected, $test_message);
=== added file 'lib-mvhub/t/Utils/Setup/_possible_dup_line.t'
--- lib-mvhub/t/Utils/Setup/_possible_dup_line.t 1970-01-01 00:00:00 +0000
+++ lib-mvhub/t/Utils/Setup/_possible_dup_line.t 2010-06-16 17:11:20 +0000
@@ -0,0 +1,41 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use English '-no_match_vars';
+
+use Test::More tests => 4 + 1; # + 1 for NoWarnings
+use Test::NoWarnings;
+use Test::Exception;
+use Config::Simple;
+
+use MVHub::Utils::Setup;
+
+my $test_message;
+
+###
+$test_message = 'dies when missing 1st parameter';
+###
+dies_ok { MVHub::Utils::Setup::_possible_dup_line() } $test_message;
+
+###
+$test_message = 'dies when missing 2nd parameter';
+###
+dies_ok { MVHub::Utils::Setup::_possible_dup_line(1) } $test_message;
+
+###
+$test_message = 'returns true if host exists in file';
+###
+my $test_filename = "/tmp/_possible_dup_line_$PID.txt";
+open my $test_fh, ">", $test_filename or die "open error: $!";
+print $test_fh "This line contains the word true";
+close $test_fh or die "close error: $!";
+
+ok( MVHub::Utils::Setup::_possible_dup_line( 'true', $test_filename ), $test_message );
+
+###
+$test_message = 'returns false if host does not exist in file';
+###
+ok(! MVHub::Utils::Setup::_possible_dup_line( 'false', $test_filename ), $test_message );
+unlink $test_filename;
=== added file 'lib-mvhub/t/Utils/Setup/_run_sql_db_update_scripts.t'
--- lib-mvhub/t/Utils/Setup/_run_sql_db_update_scripts.t 1970-01-01 00:00:00 +0000
+++ lib-mvhub/t/Utils/Setup/_run_sql_db_update_scripts.t 2010-06-16 17:11:20 +0000
@@ -0,0 +1,43 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use Test::More tests => 2 + 1; # + 1 for NoWarnings
+use Test::NoWarnings;
+use Test::Exception;
+use Config::Simple;
+
+our $PASS_TEST = 1;
+
+BEGIN {
+ package MVHub::Utils::Setup;
+ use subs qw/ readpipe /;
+
+ package main;
+
+ *MVHub::Utils::Setup::readpipe = sub {
+ if ($PASS_TEST) {
+ return 'COMMIT';
+ }
+ else {
+ return 'ROLLBACK';
+ }
+ };
+}
+use MVHub::Utils::Setup;
+
+my $test_message;
+
+###
+$test_message = 'lives when COMMIT is returned';
+###
+my @test_scripts = ( 'test' );
+
+lives_ok { MVHub::Utils::Setup::_run_sql_db_update_scripts(@test_scripts) } $test_message;
+
+###
+$test_message = 'dies when ROLLBACK is returned';
+###
+$PASS_TEST = 0;
+dies_ok { MVHub::Utils::Setup::_run_sql_db_update_scripts(@test_scripts) } $test_message;
=== added file 'lib-mvhub/t/Utils/Setup/_set_db_ENV_vars.t'
--- lib-mvhub/t/Utils/Setup/_set_db_ENV_vars.t 1970-01-01 00:00:00 +0000
+++ lib-mvhub/t/Utils/Setup/_set_db_ENV_vars.t 2010-06-16 17:11:20 +0000
@@ -0,0 +1,25 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use Test::More tests => 2 + 1; # + 1 for NoWarnings
+use Test::NoWarnings;
+use Test::Exception;
+use Config::Simple;
+
+use MVHub::Utils::Setup;
+
+my $test_message;
+
+###
+$test_message = 'dies when missing 1st parameter';
+###
+dies_ok { MVHub::Utils::Setup::_set_db_ENV_vars() } $test_message;
+
+###
+$test_message = 'lives when passed valid config file';
+###
+my $test_config = new Config::Simple($ENV{MV_TEST_CONFIG_FILE});
+lives_ok { MVHub::Utils::Setup::_set_db_ENV_vars($test_config) } $test_message;
+
=== added file 'lib-mvhub/t/Utils/Setup/add_apache_config.t'
--- lib-mvhub/t/Utils/Setup/add_apache_config.t 1970-01-01 00:00:00 +0000
+++ lib-mvhub/t/Utils/Setup/add_apache_config.t 2010-06-16 17:11:20 +0000
@@ -0,0 +1,59 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use Test::More tests => 4 + 1; # + 1 for NoWarnings
+use Test::NoWarnings;
+use Test::Exception;
+use Test::Warn;
+use Config::Simple;
+
+use MVHub::Utils::Setup;
+
+
+my $test_message;
+
+###
+$test_message = 'dies when missing 1st parameter';
+###
+dies_ok { MVHub::Utils::Setup::add_apache_config() } $test_message;
+
+###
+$test_message = 'dies when missing 2nd parameter';
+###
+dies_ok { MVHub::Utils::Setup::add_apache_config(1) } $test_message;
+
+{
+ package MVHub::Utils::Setup;
+
+ use subs qw/ _append_to_file _possible_dup_line /;
+
+ package main;
+
+ my $fail = 1;
+
+ no warnings;
+ *MVHub::Utils::Setup::_append_to_file = sub {
+ return 0;
+ };
+ *MVHub::Utils::Setup::_possible_dup_line = sub {
+ return $fail;
+ };
+ use warnings;
+
+ ###
+ $test_message = 'outputs warning when duplicate line found';
+ ###
+ warning_like { MVHub::Utils::Setup::add_apache_config('test', 'nsp') } qr/skipping append/, $test_message;
+
+ ###
+ $test_message = 'no warning when no duplicate is found';
+ ###
+ $fail = 0;
+ lives_ok { MVHub::Utils::Setup::add_apache_config('test', 'nsp') } $test_message;
+
+}
+
+
+
=== added file 'lib-mvhub/t/Utils/Setup/add_dns.t'
--- lib-mvhub/t/Utils/Setup/add_dns.t 1970-01-01 00:00:00 +0000
+++ lib-mvhub/t/Utils/Setup/add_dns.t 2010-06-16 17:11:20 +0000
@@ -0,0 +1,53 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use Test::More tests => 3 + 1; # + 1 for NoWarnings
+use Test::NoWarnings;
+use Test::Exception;
+use Test::Warn;
+use Config::Simple;
+
+use MVHub::Utils::Setup;
+
+my $test_message;
+
+###
+$test_message = 'dies when missing 1st parameter';
+###
+dies_ok { MVHub::Utils::Setup::add_dns() } $test_message;
+
+{
+
+ package MVHub::Utils::Setup;
+
+ use subs qw/ _append_to_file _possible_dup_line /;
+
+ package main;
+
+ my $fail = 1;
+
+ no warnings;
+ *MVHub::Utils::Setup::_append_to_file = sub {
+ return 0;
+ };
+ *MVHub::Utils::Setup::_possible_dup_line = sub {
+ return $fail;
+ };
+ use warnings;
+
+ ###
+ $test_message = 'outputs warning when duplicate line found';
+ ###
+ warning_like { MVHub::Utils::Setup::add_dns( 'test', 'nsp' ) }
+ qr/skipping append/, $test_message;
+
+ ###
+ $test_message = 'no warning when no duplicate is found';
+ ###
+ $fail = 0;
+ lives_ok { MVHub::Utils::Setup::add_dns( 'test', 'nsp' ) } $test_message;
+
+}
+
=== added file 'lib-mvhub/t/Utils/Setup/apply_database_updates_for.t'
--- lib-mvhub/t/Utils/Setup/apply_database_updates_for.t 1970-01-01 00:00:00 +0000
+++ lib-mvhub/t/Utils/Setup/apply_database_updates_for.t 2010-06-16 17:11:20 +0000
@@ -0,0 +1,74 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use Test::More tests => 4 + 1; # + 1 for NoWarnings
+use Test::NoWarnings;
+use Test::Exception;
+use Test::Warn;
+use Config::Simple;
+
+use MVHub::Utils::Setup;
+
+my $test_message;
+
+###
+$test_message = 'dies when missing 1st parameter';
+###
+dies_ok { MVHub::Utils::Setup::apply_database_updates_for() } $test_message;
+
+###
+$test_message = 'dies when missing 2nd parameter';
+###
+dies_ok { MVHub::Utils::Setup::apply_database_updates_for(1) } $test_message;
+
+{
+ package MVHub::Utils::Setup;
+
+ use subs
+ qw/ _determine_user_config_filename_from
+ get_db_version
+ get_sql_db_update_scripts
+ _set_db_ENV_vars
+ _run_sql_db_update_scripts /;
+
+ package main;
+
+ my $fail = 1;
+
+ no warnings;
+ *MVHub::Utils::Setup::_determine_user_config_filename_from = sub {
+ return 1;
+ };
+ *MVHub::Utils::Setup::get_db_version = sub {
+ return 1;
+ };
+ *MVHub::Utils::Setup::get_sql_db_update_scripts = sub {
+ return 1;
+ };
+ *MVHub::Utils::Setup::_set_db_ENV_vars = sub {
+ return 1;
+ };
+ *MVHub::Utils::Setup::_run_sql_db_update_scripts = sub {
+ return 1;
+ };
+
+ use warnings;
+ SKIP: {
+ skip 'Not implemented', 2;
+ ###
+ $test_message = 'outputs warning when duplicate line found';
+ ###
+ warning_like { MVHub::Utils::Setup::apply_database_updates_for( 'test', 'nsp' ) }
+ qr/skipping append/, $test_message;
+
+ ###
+ $test_message = 'no warning when no duplicate is found';
+ ###
+ lives_ok { MVHub::Utils::Setup::apply_database_updates_for( 'test', 'nsp' ) }
+ $test_message;
+ };
+}
+
+
=== added file 'lib-mvhub/t/Utils/Setup/get_db_version.t'
--- lib-mvhub/t/Utils/Setup/get_db_version.t 1970-01-01 00:00:00 +0000
+++ lib-mvhub/t/Utils/Setup/get_db_version.t 2010-06-16 17:11:20 +0000
@@ -0,0 +1,45 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use Test::More tests => 3 + 1; # + 1 for NoWarnings
+use Test::NoWarnings;
+use Test::Exception;
+use Test::Warn;
+use Test::MockObject;
+use Config::Simple;
+
+use MVHub::Utils::Setup;
+
+
+my $test_message;
+
+###
+$test_message = 'dies when missing 1st parameter';
+###
+dies_ok { MVHub::Utils::Setup::get_db_version() } $test_message;
+
+###
+$test_message = 'returns non-zero if table exists';
+###
+my $table_exists = 1;
+my $mock_dbh = Test::MockObject->new();
+$mock_dbh->mock(
+ 'selectrow_array',
+ sub {
+ my $test_val = shift;
+ if ( $table_exists ) { return (1); }
+ else { return 0; }
+ }
+);
+
+my $version = MVHub::Utils::Setup::get_db_version( $mock_dbh );
+ok( $version, $test_message);
+
+###
+$test_message = 'returns zero if table does not exist';
+###
+$table_exists = 0;
+$version = MVHub::Utils::Setup::get_db_version( $mock_dbh );
+ok ( !$version, $test_message );
=== added file 'lib-mvhub/t/Utils/Setup/get_dirs_with.t'
--- lib-mvhub/t/Utils/Setup/get_dirs_with.t 1970-01-01 00:00:00 +0000
+++ lib-mvhub/t/Utils/Setup/get_dirs_with.t 2010-06-16 17:11:20 +0000
@@ -0,0 +1,28 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use Test::More tests => 3 + 1; # + 1 for NoWarnings
+use Test::NoWarnings;
+use Test::Exception;
+
+use MVHub::Utils::Setup;
+
+my $test_message;
+###
+$test_message = 'dies with no base directory';
+###
+dies_ok { MVHub::Utils::Setup::get_dirs_with() } $test_message;
+
+###
+$test_message = 'dies with no username';
+###
+dies_ok { MVHub::Utils::Setup::get_dirs_with('test') } $test_message;
+
+###
+$test_message = 'directories returned contain parameters passed in';
+###
+my @result = MVHub::Utils::Setup::get_dirs_with( 'test', 'test_username' );
+like ($result[0]->{dir}, qr/test\/test_username/, $test_message);
+
=== added file 'lib-mvhub/t/Utils/Setup/get_production_data.t'
--- lib-mvhub/t/Utils/Setup/get_production_data.t 1970-01-01 00:00:00 +0000
+++ lib-mvhub/t/Utils/Setup/get_production_data.t 2010-06-16 17:11:20 +0000
@@ -0,0 +1,29 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use Test::More tests => 1 + 1; # + 1 for NoWarnings
+use Test::NoWarnings;
+use Test::Exception;
+use MVHub::Utils::Setup;
+{
+ package MVHub::Utils::Setup;
+
+ use subs 'system';
+
+ package main;
+
+ no warnings;
+ *MVHub::Utils::Setup::system = sub {
+ return 0;
+ };
+ use warnings;
+}
+
+my $test_message;
+###
+$test_message = 'subroutine lives when called';
+###
+lives_ok { MVHub::Utils::Setup::get_production_data() } $test_message;
+
=== added file 'lib-mvhub/t/Utils/Setup/get_sql_db_update_scripts.t'
--- lib-mvhub/t/Utils/Setup/get_sql_db_update_scripts.t 1970-01-01 00:00:00 +0000
+++ lib-mvhub/t/Utils/Setup/get_sql_db_update_scripts.t 2010-06-16 17:11:20 +0000
@@ -0,0 +1,50 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use English '-no_match_vars';
+
+use File::Basename;
+use File::Copy;
+
+use Test::More tests => 3 + 1; # + 1 for NoWarnings
+use Test::NoWarnings;
+use Test::Exception;
+use Test::Warn;
+use Test::MockObject;
+use Config::Simple;
+
+use MVHub::Utils::Setup;
+
+
+my $test_message;
+
+###
+$test_message = 'dies when sql file in directory does not conform to naming standard';
+###
+my $test_filename = "/tmp/get_sql_db_update_scripts_$PID.sql";
+
+open my $test_fh, ">", $test_filename;
+print $test_fh "This a test file. It can be deleted.\n";
+close $test_fh;
+
+dies_ok { MVHub::Utils::Setup::get_sql_db_update_scripts(path => '/tmp/', version => 0) } $test_message;
+
+###
+$test_message = 'Adds scripts to array if properly formatted';
+###
+my $renamed = "/tmp/001_get_sql_db_update_scripts_$PID.sql";
+File::Copy::move($test_filename, $renamed) or die;
+
+my @returned_scripts = MVHub::Utils::Setup::get_sql_db_update_scripts(path => '/tmp/', version => 0);
+is(scalar @returned_scripts, 1, $test_message);
+
+###
+$test_message = 'Does not add scripts if less than version number given';
+###
+
+@returned_scripts = MVHub::Utils::Setup::get_sql_db_update_scripts(path => '/tmp/', version => 1);
+is(scalar @returned_scripts, 0, $test_message);
+
+unlink $renamed;
=== modified file 'lib-mvhub/t/conf/all.conf'
--- lib-mvhub/t/conf/all.conf 2010-06-13 22:41:22 +0000
+++ lib-mvhub/t/conf/all.conf 2010-06-16 17:11:20 +0000
@@ -6,7 +6,7 @@
[DATABASE]
# not needed for sqlite
-database_host=
+database_host=localhost
database_name=/tmp/test.sqlite
database_user=test
# the database user's p---word
Follow ups