98 - Testing the Login Endpoint

This commit is contained in:
Adam Wathan
2017-05-02 14:05:46 -04:00
parent 9d0fb299b8
commit 0bc8954774
3 changed files with 78 additions and 33 deletions

View File

@@ -3,37 +3,19 @@
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Auth;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
class LoginController extends Controller
{
/*
|--------------------------------------------------------------------------
| Login Controller
|--------------------------------------------------------------------------
|
| This controller handles authenticating users for the application and
| redirecting them to your home screen. The controller uses a trait
| to conveniently provide its functionality to your applications.
|
*/
use AuthenticatesUsers;
/**
* Where to redirect users after login.
*
* @var string
*/
protected $redirectTo = '/home';
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
public function login()
{
$this->middleware('guest', ['except' => 'logout']);
if (! Auth::attempt(request(['email', 'password']))) {
return redirect('/login')->withErrors([
'email' => ['These credentials do not match our records.'],
]);
}
return redirect('/backstage/concerts');
}
}

View File

@@ -11,12 +11,8 @@
|
*/
Route::get('/mockups/order', function () {
return view('orders.show');
});
Route::get('/concerts/{id}', 'ConcertsController@show');
Route::post('/concerts/{id}/orders', 'ConcertOrdersController@store');
Route::get('/orders/{confirmationNumber}', 'OrdersController@show');
Route::post('/login', 'Auth\LoginController@login');

View File

@@ -0,0 +1,67 @@
<?php
use App\User;
use Illuminate\Support\Facades\Auth;
use Illuminate\Foundation\Testing\WithoutMiddleware;
use Illuminate\Foundation\Testing\DatabaseMigrations;
use Illuminate\Foundation\Testing\DatabaseTransactions;
class PromoterLoginTest extends TestCase
{
use DatabaseMigrations;
/** @test */
function logging_in_with_valid_credentials()
{
$this->disableExceptionHandling();
$user = factory(User::class)->create([
'email' => 'jane@example.com',
'password' => bcrypt('super-secret-password'),
]);
$response = $this->post('/login', [
'email' => 'jane@example.com',
'password' => 'super-secret-password',
]);
$response->assertRedirect('/backstage/concerts');
$this->assertTrue(Auth::check());
$this->assertTrue(Auth::user()->is($user));
}
/** @test */
function logging_in_with_invalid_credentials()
{
$this->disableExceptionHandling();
$user = factory(User::class)->create([
'email' => 'jane@example.com',
'password' => bcrypt('super-secret-password'),
]);
$response = $this->post('/login', [
'email' => 'jane@example.com',
'password' => 'not-the-right-password',
]);
$response->assertRedirect('/login');
$response->assertSessionHasErrors('email');
$this->assertFalse(Auth::check());
}
/** @test */
function logging_in_with_an_account_that_does_not_exist()
{
$this->disableExceptionHandling();
$response = $this->post('/login', [
'email' => 'nobody@example.com',
'password' => 'not-the-right-password',
]);
$response->assertRedirect('/login');
$response->assertSessionHasErrors('email');
$this->assertFalse(Auth::check());
}
}