sessionless-1.x-dev/tests/src/Functional/SessionlessSessionTest.php
tests/src/Functional/SessionlessSessionTest.php
<?php
declare(strict_types=1);
namespace Drupal\Tests\sessionless\Functional;
use Drupal\sessionless\SessionlessEncryptAndSign;
use Drupal\sessionless\SessionlessInterface;
use Drupal\sessionless_session\SessionlessSession;
use Drupal\Tests\BrowserTestBase;
use GuzzleHttp\Psr7\Uri;
/**
* @group sessionless
*/
final class SessionlessSessionTest extends BrowserTestBase {
protected $defaultTheme = 'stark';
protected static $modules = [
'sessionless_session_test',
];
public function testSessionlessSessionService(): void {
$this->assertInstanceOf(SessionlessSession::class, \Drupal::service('sessionless_session.session'));
}
public function testSessionlessSessionInForm(): void {
$testData = ['text' => 'AliceInWonderland'];
$this->drupalGet('sessionless_session_test_form');
$this->assertSession()->statusCodeEquals(200);
$this->submitForm($testData, 'Submit');
$url = new Uri($this->getSession()->getCurrentUrl());
parse_str($url->getQuery(), $query);
$jwt = $query['sessionless'];
$this->assertIsString($jwt);
$this->assertNotEmpty($jwt);
$signedTokenService = \Drupal::service(SessionlessEncryptAndSign::class);
assert($signedTokenService instanceof SessionlessInterface);
$decrypted = $signedTokenService->decode($jwt);
$this->assertSame($testData, $decrypted);
}
}
