AuthTest.php 2.16 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::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();
Divine's avatar
Divine committed
32

33 34 35
            return;
        }

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

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

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

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

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

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

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

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