AuthTest.php 2.17 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
        if (Application::VERSION >= '5.2') {
31
            $this->expectNotToPerformAssertions();
32 33 34
            return;
        }

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

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

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

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

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

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

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

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