Skip to content

Commit

Permalink
Merge pull request #6 from takuma348/#5
Browse files Browse the repository at this point in the history
#5 Finished auth api test
  • Loading branch information
takuma348 committed Feb 19, 2019
2 parents 81dd276 + 6324d82 commit 143f397
Show file tree
Hide file tree
Showing 9 changed files with 139 additions and 1 deletion.
15 changes: 15 additions & 0 deletions vuesplash/app/Http/Controllers/Auth/LoginController.php
Expand Up @@ -4,6 +4,7 @@

use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Illuminate\Http\Request; // ★ 追加

class LoginController extends Controller
{
Expand Down Expand Up @@ -36,4 +37,18 @@ public function __construct()
{
$this->middleware('guest')->except('logout');
}

protected function authenticated(Request $request, $user)
{
return $user;
}

protected function loggedOut(Request $request)
{
// セッションを再生成する
$request->session()->regenerate();

return response()->json();
}

}
6 changes: 6 additions & 0 deletions vuesplash/app/Http/Controllers/Auth/RegisterController.php
Expand Up @@ -7,6 +7,7 @@
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Validator;
use Illuminate\Foundation\Auth\RegistersUsers;
use Illuminate\Http\Request;

class RegisterController extends Controller
{
Expand Down Expand Up @@ -69,4 +70,9 @@ protected function create(array $data)
'password' => Hash::make($data['password']),
]);
}

protected function registered(Request $request, $user)
{
return $user;
}
}
2 changes: 1 addition & 1 deletion vuesplash/app/Providers/RouteServiceProvider.php
Expand Up @@ -66,7 +66,7 @@ protected function mapWebRoutes()
protected function mapApiRoutes()
{
Route::prefix('api')
->middleware('api')
->middleware('web')
->namespace($this->namespace)
->group(base_path('routes/api.php'));
}
Expand Down
6 changes: 6 additions & 0 deletions vuesplash/config/database.php
Expand Up @@ -40,6 +40,12 @@
'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true),
],

'sqlite_testing' => [
'driver' => 'sqlite',
'database' => ':memory:',
'prefix' => '',
],

'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', '127.0.0.1'),
Expand Down
1 change: 1 addition & 0 deletions vuesplash/phpunit.xml
Expand Up @@ -24,6 +24,7 @@
</filter>
<php>
<env name="APP_ENV" value="testing"/>
<env name="DB_CONNECTION" value="sqlite_testing"/>
<env name="BCRYPT_ROUNDS" value="4"/>
<env name="CACHE_DRIVER" value="array"/>
<env name="MAIL_DRIVER" value="array"/>
Expand Down
4 changes: 4 additions & 0 deletions vuesplash/routes/api.php
Expand Up @@ -16,3 +16,7 @@
Route::middleware('auth:api')->get('/user', function (Request $request) {
return $request->user();
});
Route::post('/register', 'Auth\RegisterController@register')->name('register');
Route::post('/login', 'Auth\LoginController@login')->name('login');
Route::post('/login', 'Auth\LoginController@login')->name('login');
Route::post('/logout', 'Auth\LoginController@logout')->name('logout');
38 changes: 38 additions & 0 deletions vuesplash/tests/Feature/LoginApiTest.php
@@ -0,0 +1,38 @@
<?php

namespace Tests\Feature;

use App\User;
use Tests\TestCase;
use Illuminate\Foundation\Testing\WithFaker;
use Illuminate\Foundation\Testing\RefreshDatabase;

class LoginApiTest extends TestCase
{
use RefreshDatabase;

public function setUp()
{
parent::setUp();

// テストユーザー作成
$this->user = factory(User::class)->create();
}

/**
* @test
*/
public function should_登録済みのユーザーを認証して返却する()
{
$response = $this->json('POST', route('login'), [
'email' => $this->user->email,
'password' => 'secret',
]);

$response
->assertStatus(200)
->assertJson(['name' => $this->user->name]);

$this->assertAuthenticatedAs($this->user);
}
}
33 changes: 33 additions & 0 deletions vuesplash/tests/Feature/LogoutApiTest.php
@@ -0,0 +1,33 @@
<?php

namespace Tests\Feature;

use App\User;
use Tests\TestCase;
use Illuminate\Foundation\Testing\WithFaker;
use Illuminate\Foundation\Testing\RefreshDatabase;

class LogoutApiTest extends TestCase
{
use RefreshDatabase;

public function setUp()
{
parent::setUp();

// テストユーザー作成
$this->user = factory(User::class)->create();
}

/**
* @test
*/
public function should_認証済みのユーザーをログアウトさせる()
{
$response = $this->actingAs($this->user)
->json('POST', route('logout'));

$response->assertStatus(200);
$this->assertGuest();
}
}
35 changes: 35 additions & 0 deletions vuesplash/tests/Feature/RegisterApiTest.php
@@ -0,0 +1,35 @@
<?php

namespace Tests\Feature;

use App\User;
use Tests\TestCase;
use Illuminate\Foundation\Testing\WithFaker;
use Illuminate\Foundation\Testing\RefreshDatabase;

class RegisterApiTest extends TestCase
{
use RefreshDatabase;

/**
* @test
*/
public function should_新しいユーザーを作成して返却する()
{
$data = [
'name' => 'vuesplash user',
'email' => 'dummy@email.com',
'password' => 'test1234',
'password_confirmation' => 'test1234',
];

$response = $this->json('POST', route('register'), $data);

$user = User::first();
$this->assertEquals($data['name'], $user->name);

$response
->assertStatus(201)
->assertJson(['name' => $user->name]);
}
}

0 comments on commit 143f397

Please sign in to comment.