Skip to content

Commit 9f26069

Browse files
committed
test: ensure session cookie properties
1 parent 64fc47b commit 9f26069

File tree

3 files changed

+44
-5
lines changed

3 files changed

+44
-5
lines changed

packages/http/src/Session/Resolvers/CookieSessionIdResolver.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,18 +27,18 @@ public function __construct(
2727

2828
public function resolve(): SessionId
2929
{
30-
$sessionId = str($this->appConfig->name ?? 'tempest')
30+
$sessionKey = str($this->appConfig->name ?? 'tempest')
3131
->snake()
3232
->append('_session_id')
3333
->toString();
3434

35-
$id = $this->cookies->get($sessionId)->value ?? null;
35+
$id = $this->cookies->get($sessionKey)->value ?? null;
3636

3737
if (! $id) {
3838
$id = (string) Uuid::v4();
3939

4040
$this->cookies->add(new Cookie(
41-
key: $sessionId,
41+
key: $sessionKey,
4242
value: $id,
4343
path: '/',
4444
secure: true,

packages/http/src/Session/Resolvers/HeaderSessionIdResolver.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,13 @@ public function __construct(
1919

2020
public function resolve(): SessionId
2121
{
22-
$sessionId = str($this->appConfig->name ?? 'tempest')
22+
$sessionKey = str($this->appConfig->name ?? 'tempest')
2323
->snake()
2424
->append('_session_id')
2525
->toString();
2626

2727
return new SessionId(
28-
id: $this->request->headers[$sessionId] ?? Uuid::v4()->toString(),
28+
id: $this->request->headers[$sessionKey] ?? Uuid::v4()->toString(),
2929
);
3030
}
3131
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
<?php
2+
3+
namespace Tests\Tempest\Integration\Http;
4+
5+
use Tempest\Core\AppConfig;
6+
use Tempest\DateTime\DateTime;
7+
use Tempest\Http\Cookie\Cookie;
8+
use Tempest\Http\Cookie\CookieManager;
9+
use Tempest\Http\Cookie\SameSite;
10+
use Tempest\Http\Session\Resolvers\CookieSessionIdResolver;
11+
use Tests\Tempest\Integration\FrameworkIntegrationTestCase;
12+
13+
final class CookieSessionIdResolverTest extends FrameworkIntegrationTestCase
14+
{
15+
public function test_sets_cookie(): void
16+
{
17+
$cookies = $this->container->get(CookieManager::class);
18+
$resolver = $this->container->get(CookieSessionIdResolver::class);
19+
$resolver->resolve();
20+
21+
$this->assertInstanceOf(Cookie::class, $cookie = $cookies->get('tempest_session_id'));
22+
$this->assertTrue($cookie->expiresAt->after(DateTime::now()->plusHours(2)->minusSecond()));
23+
$this->assertSame('/', $cookie->path);
24+
$this->assertTrue($cookie->secure);
25+
$this->assertTrue($cookie->httpOnly);
26+
$this->assertSame(SameSite::LAX, $cookie->sameSite);
27+
}
28+
29+
public function test_cookie_name(): void
30+
{
31+
$this->container->get(AppConfig::class)->name = 'Tempest Cloud';
32+
33+
$cookies = $this->container->get(CookieManager::class);
34+
$resolver = $this->container->get(CookieSessionIdResolver::class);
35+
$resolver->resolve();
36+
37+
$this->assertInstanceOf(Cookie::class, $cookies->get('tempest_cloud_session_id'));
38+
}
39+
}

0 commit comments

Comments
 (0)