App-MtAws

 view release on metacpan or  search on metacpan

t/unit/config_engine_parse.t  view on Meta::CPAN

#

my $max_concurrency = 30;
my $too_big_concurrency = $max_concurrency+1;


sub assert_config_throw_error($$$)
{
	my ($config, $errorre, $text) = @_;
	fake_config %$config => sub {
		disable_validations 'journal' => sub {
			my ($errors, $warnings, $command, $result) = config_create_and_parse(split(' ', $_ ));
			ok( $errors && $errors->[0] =~ $errorre, $text);
		}
	}
}


{
	fake_config sub {
		my ($errors, $warnings, $command, $result) = config_create_and_parse(split(' ',
		'sync --dir x --config y -journal z -to-va va -conc 9 --partsize=2  --from-dir z'
		));
		ok( $errors && $errors->[0] =~ /specified.*already defined/, 'delect already defined deprecated parameter');
		ok( $warnings &&
			($warnings->[0] =~ /to-vault deprecated, use vault instead/) ||
			($warnings->[1] =~ /to-vault deprecated, use vault instead/),
		'delect already defined deprecated parameter');
	}
}
{
	fake_config sub {
		my ($errors, $warnings, $command, $result) = config_create_and_parse(split(' ',
		'sync --config y -journal z -to-va va -conc 9 --partsize=2  --from-dir z'
		));
		ok( !$errors && $warnings && $warnings->[0] =~ /deprecated,\s*use.*instead/, 'warn about deprecated parameter');
	}
}

{
	fake_config sub {
		my ($errors, $warnings, $command, $result) = config_create_and_parse(split(' ',
		"sync --dir x --config y -journal z -to-va va -conc $too_big_concurrency --partsize=8 "
		));
		ok( $errors && $errors->[0] =~ /Max concurrency/, 'check concurrency range');
	}
}

{
	fake_config sub {
		my ($errors, $warnings, $command, $result) = config_create_and_parse(split(' ',
		'sync --dir x --config y -journal z -to-va va -conc 9 --partsize=3 '
		));
		ok( $errors && $errors->[0] =~ /must be power of two/, 'check partsize');
	}
}

{
	fake_config sub {
		my ($errors, $warnings, $command, $result) = config_create_and_parse(split(' ',
		'purge-vault --config=glacier.cfg --dir /data/backup --to-vault=myvault -journal=journal.log'
		));
		ok( !$errors && $warnings && $result, "should accept dir just like from-dir" );
	}
}

{
	fake_config key=>'mykey', secret => 'mysecret', region => 'myregion', vault => 'newvault', sub {
		my ($errors, $warnings, $command, $result)= config_create_and_parse(split(' ',
		'purge-vault --config=glacier.cfg  --vault=myvault -journal=journal.log'
		));
		ok( !$errors && !$warnings && $result && $result->{vault} eq 'myvault', "should override vault in command line" );
	}
}

{
	fake_config key=>'mykey', secret => 'mysecret', region => 'myregion', vault => 'newvault', sub {
		my ($errors, $warnings, $command, $result)= config_create_and_parse(split(' ',
		'purge-vault --key=newkey -secret=newsecret --region newregion  --vault=myvault -journal=journal.log'
		));
		ok( !$errors && !$warnings && $result && $result->{key} eq 'newkey' && $result->{secret} eq 'newsecret' && $result->{region} eq 'newregion', "should work without config" );
	}
}


{
	fake_config key=>'mykey', secret => 'mysecret', region => 'myregion', vault => 'newvault', sub {
		my ($errors, $warnings, $command, $result) = config_create_and_parse(split(' ',
		'purge-vault --config=glacier.cfg  -journal=journal.log'
		));
		ok( !$errors && !$warnings && $result && $result->{vault} eq 'newvault', "should use vault from config" );
	}
}

{
	fake_config key=>'mykey', secret => 'mysecret', region => 'myregion', vault => 'newvault', sub {
		my ($errors, $warnings, $command, $result) = config_create_and_parse(split(' ',
		'purge-vault --config=glacier.cfg  --to-vault=myvault -journal=journal.log'
		));
		ok( !$errors && $warnings && $result && $result->{vault} eq 'myvault', "should override vault in command line when deprecated-name is used in command line" );
	}
}

{
	fake_config key=>'mykey', secret => 'mysecret', region => 'myregion', vault => 'newvault', sub {
		my ($errors, $warnings, $command, $result) = config_create_and_parse(split(' ',
		''
		));
		ok( $errors && $errors->[0] eq 'Please specify command', "should catch missing command" );
	}
}

{
	fake_config key=>'mykey', secret => 'mysecret', region => 'myregion', vault => 'newvault', sub {
		local $SIG{__WARN__} = sub {}; # TODO: now suppress warnings, test for actual warning?
		my ($errors, $warnings, $command, $result) = config_create_and_parse(split(' ',
		'--myvault x'
		));
		ok( $errors, "should catch missing command even if there are options" );
	}
}



( run in 0.571 second using v1.01-cache-2.11-cpan-5a3173703d6 )