Skip to content
Snippets Groups Projects
Commit 7e7fe4c9 authored by Erick Hitter's avatar Erick Hitter
Browse files

Better tests

parent 35c2831f
No related branches found
No related tags found
No related merge requests found
......@@ -49,18 +49,34 @@ class Plugin_Functions extends WP_UnitTestCase {
/**
* Test whitelisted command validation
*
* @dataProvider whitelisted_command_provider
*/
function test_whitelist_using_validate_command() {
$this->assertTrue( is_string( WP_CLI_Cron_Control_Offload\validate_command( 'wp post list' ) ) );
$this->assertTrue( is_string( WP_CLI_Cron_Control_Offload\validate_command( 'post list' ) ) );
function test_whitelist_using_validate_command( $command ) {
$this->assertTrue( is_string( WP_CLI_Cron_Control_Offload\validate_command( $command ) ) );
}
function whitelisted_command_provider() {
return array(
array( 'wp post list' ),
array( 'post list' ),
);
}
/**
* Test blacklisted command validation
*
* @dataProvider blacklisted_command_provider
*/
function test_blacklist_using_validate_command() {
$this->assertTrue( is_wp_error( WP_CLI_Cron_Control_Offload\validate_command( 'wp cli info' ) ) );
$this->assertTrue( is_wp_error( WP_CLI_Cron_Control_Offload\validate_command( 'cli info' ) ) );
function test_blacklist_using_validate_command( $command ) {
$this->assertWPError( WP_CLI_Cron_Control_Offload\validate_command( $command ) );
}
function blacklisted_command_provider() {
return array(
array( 'wp cli info' ),
array( 'cli info' ),
);
}
/**
......@@ -71,36 +87,47 @@ class Plugin_Functions extends WP_UnitTestCase {
$this->assertTrue( is_int( WP_CLI_Cron_Control_Offload\schedule_cli_command( 'wp post list' ) ) );
// Should be blocked as a duplicate, thanks to Core's 10-minute lookahead.
$this->assertTrue( is_wp_error( WP_CLI_Cron_Control_Offload\schedule_cli_command( 'wp post list' ) ) );
$this->assertWPError( WP_CLI_Cron_Control_Offload\schedule_cli_command( 'wp post list' ) );
// Should also fail as normalization makes it a duplicate.
$this->assertTrue( is_wp_error( WP_CLI_Cron_Control_Offload\schedule_cli_command( 'post list' ) ) );
$this->assertWPError( WP_CLI_Cron_Control_Offload\schedule_cli_command( 'post list' ) );
}
/**
* Test scheduling several of the same blocked event
*
* @dataProvider blocked_events_provider
*/
function test_blocked_event_scheduling() {
// Should fail, is a blocked event.
$this->assertTrue( is_wp_error( WP_CLI_Cron_Control_Offload\schedule_cli_command( 'wp cli info' ) ) );
// Should fail as a blocked event, would otherwise fail as a duplicate.
$this->assertTrue( is_wp_error( WP_CLI_Cron_Control_Offload\schedule_cli_command( 'wp cli info' ) ) );
function test_blocked_event_scheduling( $command ) {
$this->assertWPError( WP_CLI_Cron_Control_Offload\schedule_cli_command( $command ) );
}
// Should also fail as a blocked event, though normalization would also block it as a duplicate.
$this->assertTrue( is_wp_error( WP_CLI_Cron_Control_Offload\schedule_cli_command( 'cli info' ) ) );
function blocked_events_provider() {
return array(
array( 'wp cli info' ), // Should fail, is a blocked event.
array( 'wp cli info' ), // Should fail as a blocked event, would otherwise fail as a duplicate.
array( 'cli info'), // Should also fail as a blocked event, though normalization would also block it as a duplicate.
);
}
/**
* Test each blocked bash operator
*
* @dataProvider invalid_bash_operators_provider
*/
function test_for_invalid_bash_operators() {
$this->assertTrue( is_wp_error( WP_CLI_Cron_Control_Offload\validate_command( 'post list & date' ) ) );
$this->assertTrue( is_wp_error( WP_CLI_Cron_Control_Offload\validate_command( 'post list | date' ) ) );
$this->assertTrue( is_wp_error( WP_CLI_Cron_Control_Offload\validate_command( 'post list > /tmp/nope' ) ) );
$this->assertTrue( is_wp_error( WP_CLI_Cron_Control_Offload\validate_command( 'post list 2> /tmp/nope' ) ) );
$this->assertTrue( is_wp_error( WP_CLI_Cron_Control_Offload\validate_command( 'post list 1>&2 /tmp/nope' ) ) );
$this->assertTrue( is_wp_error( WP_CLI_Cron_Control_Offload\validate_command( 'post list 2>&1 /tmp/nope' ) ) );
$this->assertTrue( is_wp_error( WP_CLI_Cron_Control_Offload\validate_command( 'post list &> /tmp/nope' ) ) );
function test_for_invalid_bash_operators( $command ) {
$this->assertWPError( WP_CLI_Cron_Control_Offload\validate_command( $command ) );
}
function invalid_bash_operators_provider() {
return array(
array( 'post list & date' ),
array( 'post list | date' ),
array( 'post list > /tmp/nope' ),
array( 'post list 2> /tmp/nope' ),
array( 'post list 1>&2 /tmp/nope' ),
array( 'post list 2>&1 /tmp/nope' ),
array( 'post list &> /tmp/nope' ),
);
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment