From 50fb8acfb214bc26eb69e4bc6fb37a73c2758b8d Mon Sep 17 00:00:00 2001 From: Erick Hitter <git-contrib@ethitter.com> Date: Sat, 9 Jul 2022 15:40:52 -0700 Subject: [PATCH] Test coverage --- phpcs.xml | 2 +- tests/bootstrap.php | 9 +- tests/inc/class-test-plugin.php | 187 +++++++++++++++++++++++++++++--- 3 files changed, 180 insertions(+), 18 deletions(-) diff --git a/phpcs.xml b/phpcs.xml index e41bee1..04859b2 100644 --- a/phpcs.xml +++ b/phpcs.xml @@ -32,7 +32,7 @@ <rule ref="WordPress.NamingConventions.PrefixAllGlobals"> <properties> <!-- Value: replace the function, class, and variable prefixes used. Separate multiple prefixes with a comma. --> - <property name="prefixes" type="array" value="redis_user_session_storage,wp_redis_user_session_storage"/> + <property name="prefixes" type="array" value="redis_user_session_storage,wp_redis_user_session"/> </properties> </rule> <rule ref="WordPress.WP.I18n"> diff --git a/tests/bootstrap.php b/tests/bootstrap.php index 9807b53..b8985bb 100755 --- a/tests/bootstrap.php +++ b/tests/bootstrap.php @@ -5,10 +5,6 @@ * @package WP_Revisions_Control */ -if ( ! defined( 'WP_REDIS_USER_SESSION_HOST' ) ) { - define( 'WP_REDIS_USER_SESSION_HOST', 'redis' ); -} - $redis_user_session_storage = getenv( 'WP_TESTS_DIR' ); if ( ! $redis_user_session_storage ) { @@ -33,3 +29,8 @@ tests_add_filter( 'muplugins_loaded', 'redis_user_session_storage_tests_manually // Start up the WP testing environment. require $redis_user_session_storage . '/includes/bootstrap.php'; + +// Set Redis host for CI. +if ( ! defined( 'WP_REDIS_USER_SESSION_HOST' ) ) { + define( 'WP_REDIS_USER_SESSION_HOST', 'redis' ); +} diff --git a/tests/inc/class-test-plugin.php b/tests/inc/class-test-plugin.php index 7dd0de8..e86d09a 100755 --- a/tests/inc/class-test-plugin.php +++ b/tests/inc/class-test-plugin.php @@ -167,20 +167,71 @@ class Test_Plugin extends WP_UnitTestCase { * Test `update_session()` method. * * @covers ::update_session() + * @covers ::update_sessions() * @return void */ public function test_update_session() { - $this->markTestIncomplete(); - } + $user_id = $this->factory->user->create(); + $plugin = new Plugin( $user_id ); - /** - * Test `update_sessions()` method. - * - * @covers ::update_sessions() - * @return void - */ - public function test_update_sessions() { - $this->markTestIncomplete(); + $plugin->create( time() + 60 ); + + $sessions = $this->_invoke_method( $user_id, 'get_sessions' ); + $verifier = array_keys( $sessions )[0]; + + $this->assertNotEmpty( + $sessions, + 'Failed to assert that session was created.' + ); + + $this->_invoke_method( + $user_id, + 'update_session', + array( + $verifier, + ) + ); + + $this->assertEmpty( + $this->_invoke_method( + $user_id, + 'get_session', + array( + $verifier, + ) + ), + 'Failed to assert that session is not destroyed when no session data is provided.' + ); + + $plugin->create( time() + 60 ); + + $sessions = $this->_invoke_method( $user_id, 'get_sessions' ); + $verifier = array_keys( $sessions )[0]; + $session_data = array( + 'expiration' => time() + 60, + 'foo' => 'bar', + ); + + $this->_invoke_method( + $user_id, + 'update_session', + array( + $verifier, + $session_data, + ) + ); + + $this->assertEquals( + $session_data, + $this->_invoke_method( + $user_id, + 'get_session', + array( + $verifier, + ) + ), + 'Failed to assert that session is updated when session data is provided.' + ); } /** @@ -190,7 +241,39 @@ class Test_Plugin extends WP_UnitTestCase { * @return void */ public function test_destroy_other_sessions() { - $this->markTestIncomplete(); + $user_id = $this->factory->user->create(); + $plugin = new Plugin( $user_id ); + + $plugin->create( time() + 60 ); + $plugin->create( time() + 120 ); + $plugin->create( time() + 180 ); + + $sessions = $this->_invoke_method( $user_id, 'get_sessions' ); + + $this->assertCount( + 3, + $sessions, + 'Failed to assert that multiple sessions were created.' + ); + + $verifier = array_keys( $sessions )[0]; + + $this->_invoke_method( + $user_id, + 'destroy_other_sessions', + array( + $verifier, + ) + ); + + $this->assertCount( + 1, + $this->_invoke_method( + $user_id, + 'get_sessions' + ), + 'Failed to assert that other sessions are destroyed.' + ); } /** @@ -200,7 +283,36 @@ class Test_Plugin extends WP_UnitTestCase { * @return void */ public function test_destroy_all_sessions() { - $this->markTestIncomplete(); + $user_id = $this->factory->user->create(); + $plugin = new Plugin( $user_id ); + + $plugin->create( time() + 60 ); + $plugin->create( time() + 120 ); + $plugin->create( time() + 180 ); + + $sessions = $this->_invoke_method( $user_id, 'get_sessions' ); + + $this->assertCount( + 3, + $this->_invoke_method( + $user_id, + 'get_sessions' + ), + 'Failed to assert that multiple sessions were created.' + ); + + $this->_invoke_method( + $user_id, + 'destroy_all_sessions' + ); + + $this->assertEmpty( + $this->_invoke_method( + $user_id, + 'get_sessions' + ), + 'Failed to assert that all sessions were destroyed.' + ); } /** @@ -211,7 +323,56 @@ class Test_Plugin extends WP_UnitTestCase { * @return void */ public function test_drop_sessions() { - $this->markTestIncomplete(); + $user_1 = $this->factory->user->create(); + $plugin_user_1 = new Plugin( $user_1 ); + $user_2 = $this->factory->user->create(); + $plugin_user_2 = new Plugin( $user_2 ); + + $plugin_user_1->create( time() + 60 ); + $plugin_user_1->create( time() + 120 ); + $plugin_user_1->create( time() + 180 ); + $plugin_user_2->create( time() + 60 ); + $plugin_user_2->create( time() + 120 ); + $plugin_user_2->create( time() + 180 ); + + $this->assertCount( + 3, + $this->_invoke_method( + $user_1, + 'get_sessions' + ), + 'Failed to assert that multiple sessions were created for user 1.' + ); + + $this->assertCount( + 3, + $this->_invoke_method( + $user_2, + 'get_sessions' + ), + 'Failed to assert that multiple sessions were created for user 2.' + ); + + $this->_invoke_method( + $user_1, + 'flush_redis_db' + ); + + $this->assertEmpty( + $this->_invoke_method( + $user_1, + 'get_sessions' + ), + 'Failed to assert that sessions were destroyed for user 1.' + ); + + $this->assertEmpty( + $this->_invoke_method( + $user_2, + 'get_sessions' + ), + 'Failed to assert that sessions were destroyed for user 2.' + ); } /** -- GitLab