Skip to content
Snippets Groups Projects

Add tests

Merged Erick Hitter requested to merge add/tests into master
Files
4
@@ -82,6 +82,45 @@ class Test_Plugin extends WP_UnitTestCase {
);
}
/**
* Test `prepare_session()` method.
*
* @covers ::prepare_session()
* @return void
*/
public function test_prepare_session() {
$this->assertEquals(
array(
'expiration' => 1,
),
$this->_invoke_method(
0,
'prepare_session',
array(
1,
)
),
'Failed to assert that session data is transformed as expected.'
);
$test_data = array(
'expiration' => 2,
'foo' => 'bar',
);
$this->assertEquals(
$test_data,
$this->_invoke_method(
0,
'prepare_session',
array(
$test_data,
)
),
'Failed to assert that session data is not transformed if it is already prepared.'
);
}
/**
* Test `get_session()` method.
*
@@ -125,41 +164,230 @@ class Test_Plugin extends WP_UnitTestCase {
}
/**
* Test `prepare_session()` method.
* Test `update_session()` method.
*
* @covers ::prepare_session()
* @covers ::update_session()
* @covers ::update_sessions()
* @return void
*/
public function test_prepare_session() {
$this->assertEquals(
public function test_update_session() {
$user_id = $this->factory->user->create();
$plugin = new Plugin( $user_id );
$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(
'expiration' => 1,
),
$verifier,
)
);
$this->assertEmpty(
$this->_invoke_method(
0,
'prepare_session',
$user_id,
'get_session',
array(
1,
$verifier,
)
),
'Failed to assert that session data is transformed as expected.'
'Failed to assert that session is not destroyed when no session data is provided.'
);
$test_data = array(
'expiration' => 2,
$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(
$test_data,
$session_data,
$this->_invoke_method(
0,
'prepare_session',
$user_id,
'get_session',
array(
$test_data,
$verifier,
)
),
'Failed to assert that session data is not transformed if it is already prepared.'
'Failed to assert that session is updated when session data is provided.'
);
}
/**
* Test `destroy_other_sessions()` method.
*
* @covers ::destroy_other_sessions()
* @return void
*/
public function test_destroy_other_sessions() {
$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.'
);
}
/**
* Test `destroy_all_sessions()` method.
*
* @covers ::destroy_all_sessions()
* @return void
*/
public function test_destroy_all_sessions() {
$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.'
);
}
/**
* Test `drop_sessions()` method.
*
* @covers ::drop_sessions()
* @covers ::flush_redis_db()
* @return void
*/
public function test_drop_sessions() {
$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.'
);
}
/**
* Test `get_key()` method.
*
* @covers ::get_key()
* @return void
*/
public function test_get_key() {
$user_id = $this->factory->user->create();
$plugin = new Plugin( $user_id );
$this->assertEquals(
$plugin->prefix . ':' . $user_id,
$this->_invoke_method( $user_id, 'get_key' )
);
}
@@ -171,7 +399,11 @@ class Test_Plugin extends WP_UnitTestCase {
* @param array $args Method arguments.
* @return mixed
*/
protected function _invoke_method( $user_id, $method_name, $args = [] ) {
protected function _invoke_method(
$user_id,
$method_name,
$args = array()
) {
$object = new Plugin( $user_id );
$reflection = new ReflectionClass( $object );
$method = $reflection->getMethod( $method_name );
Loading