AuthTest.php 2.12 KB
Newer Older
1 2
<?php

duxet's avatar
duxet committed
3
use Illuminate\Auth\Passwords\PasswordBroker;
4
use Illuminate\Foundation\Application;
Jens Segers's avatar
Jens Segers committed
5
use MongoDB\BSON\UTCDateTime;
duxet's avatar
duxet committed
6

Jens Segers's avatar
Jens Segers committed
7 8
class AuthTest extends TestCase
{
Stas's avatar
Stas committed
9
    public function tearDown(): void
10
    {
Stas's avatar
Stas committed
11
        parent::setUp();
12 13 14 15 16 17
        User::truncate();
        DB::collection('password_reminders')->truncate();
    }

    public function testAuthAttempt()
    {
18
        $user = User::create([
Jens Segers's avatar
Jens Segers committed
19 20
            'name' => 'John Doe',
            'email' => 'john@doe.com',
Jens Segers's avatar
Jens Segers committed
21
            'password' => Hash::make('foobar'),
22
        ]);
23

24
        $this->assertTrue(Auth::attempt(['email' => 'john@doe.com', 'password' => 'foobar'], true));
25 26 27
        $this->assertTrue(Auth::check());
    }

28
    public function testRemindOld()
29
    {
30 31 32 33
        if (Application::VERSION >= '5.2') {
            return;
        }

34
        $mailer = Mockery::mock('Illuminate\Mail\Mailer');
duxet's avatar
duxet committed
35 36 37 38
        $tokens = $this->app->make('auth.password.tokens');
        $users = $this->app['auth']->driver()->getProvider();

        $broker = new PasswordBroker($tokens, $users, $mailer, '');
39

40
        $user = User::create([
Jens Segers's avatar
Jens Segers committed
41 42
            'name' => 'John Doe',
            'email' => 'john@doe.com',
Jens Segers's avatar
Jens Segers committed
43
            'password' => Hash::make('foobar'),
44
        ]);
45 46

        $mailer->shouldReceive('send')->once();
47
        $broker->sendResetLink(['email' => 'john@doe.com']);
48

duxet's avatar
duxet committed
49 50
        $this->assertEquals(1, DB::collection('password_resets')->count());
        $reminder = DB::collection('password_resets')->first();
51 52
        $this->assertEquals('john@doe.com', $reminder['email']);
        $this->assertNotNull($reminder['token']);
Jens Segers's avatar
Jens Segers committed
53
        $this->assertInstanceOf(UTCDateTime::class, $reminder['created_at']);
54

55
        $credentials = [
Jens Segers's avatar
Jens Segers committed
56 57
            'email' => 'john@doe.com',
            'password' => 'foobar',
58
            'password_confirmation' => 'foobar',
Jens Segers's avatar
Jens Segers committed
59
            'token' => $reminder['token'],
60
        ];
61

Jens Segers's avatar
Jens Segers committed
62
        $response = $broker->reset($credentials, function ($user, $password) {
duxet's avatar
duxet committed
63
            $user->password = bcrypt($password);
64 65 66
            $user->save();
        });

duxet's avatar
duxet committed
67 68
        $this->assertEquals('passwords.reset', $response);
        $this->assertEquals(0, DB::collection('password_resets')->count());
69
    }
70
}