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

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

Jens Segers's avatar
Jens Segers committed
6 7
class AuthTest extends TestCase
{
8 9 10 11 12 13 14 15 16

    public function tearDown()
    {
        User::truncate();
        DB::collection('password_reminders')->truncate();
    }

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

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

    public function testRemind()
    {
Jens Segers's avatar
Jens Segers committed
29
        if (Application::VERSION >= '5.2') {
Jens Segers's avatar
Jens Segers committed
30 31 32
            return;
        }

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

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

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

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

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

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

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

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