/
PruneExpiredTest.php
108 lines (87 loc) · 3.65 KB
/
PruneExpiredTest.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
<?php
namespace Laravel\Sanctum\Tests;
use Illuminate\Foundation\Auth\User;
use Laravel\Sanctum\Contracts\HasApiTokens as HasApiTokensContract;
use Laravel\Sanctum\HasApiTokens;
use Laravel\Sanctum\PersonalAccessToken;
use Laravel\Sanctum\SanctumServiceProvider;
use Orchestra\Testbench\TestCase;
class PruneExpiredTest extends TestCase
{
protected function getEnvironmentSetUp($app)
{
$app['config']->set('database.default', 'testbench');
$app['config']->set('database.connections.testbench', [
'driver' => 'sqlite',
'database' => ':memory:',
'prefix' => '',
]);
}
public function test_can_delete_expired_tokens_with_integer_expiration()
{
$this->loadLaravelMigrations(['--database' => 'testbench']);
$this->artisan('migrate', ['--database' => 'testbench'])->run();
config(['sanctum.expiration' => 60]);
$user = UserForPruneExpiredTest::forceCreate([
'name' => 'Taylor Otwell',
'email' => 'taylor@laravel.com',
'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi',
]);
$token_1 = PersonalAccessToken::forceCreate([
'tokenable_id' => $user->id,
'tokenable_type' => get_class($user),
'name' => 'Test_1',
'token' => hash('sha256', 'test_1'),
'created_at' => now()->subMinutes(181),
]);
$token_2 = PersonalAccessToken::forceCreate([
'tokenable_id' => $user->id,
'tokenable_type' => get_class($user),
'name' => 'Test_2',
'token' => hash('sha256', 'test_2'),
'created_at' => now()->subMinutes(179),
]);
$token_3 = PersonalAccessToken::forceCreate([
'tokenable_id' => $user->id,
'tokenable_type' => get_class($user),
'name' => 'Test_3',
'token' => hash('sha256', 'test_3'),
'created_at' => now()->subMinutes(121),
]);
$this->artisan('sanctum:prune-expired --hours=2')
->expectsOutputToContain('Tokens expired for more than [2 hours] pruned successfully.');
$this->assertDatabaseMissing('personal_access_tokens', ['name' => 'Test_1']);
$this->assertDatabaseHas('personal_access_tokens', ['name' => 'Test_2']);
$this->assertDatabaseHas('personal_access_tokens', ['name' => 'Test_3']);
}
public function test_cant_delete_expired_tokens_with_null_expiration()
{
$this->loadLaravelMigrations(['--database' => 'testbench']);
$this->artisan('migrate', ['--database' => 'testbench'])->run();
config(['sanctum.expiration' => null]);
$user = UserForPruneExpiredTest::forceCreate([
'name' => 'Taylor Otwell',
'email' => 'taylor@laravel.com',
'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi',
]);
$token = PersonalAccessToken::forceCreate([
'tokenable_id' => $user->id,
'tokenable_type' => get_class($user),
'name' => 'Test',
'token' => hash('sha256', 'test'),
'created_at' => now()->subMinutes(70),
]);
$this->artisan('sanctum:prune-expired --hours=2')
->expectsOutputToContain('Expiration value not specified in configuration file.');
$this->assertDatabaseHas('personal_access_tokens', ['name' => 'Test']);
}
protected function getPackageProviders($app)
{
return [SanctumServiceProvider::class];
}
}
class UserForPruneExpiredTest extends User implements HasApiTokensContract
{
use HasApiTokens;
protected $table = 'users';
}