mirror of
https://github.com/nothingworksinc/ticketbeast.git
synced 2026-01-26 03:04:05 +00:00
159 - Unit Testing Middleware
This commit is contained in:
@@ -9,6 +9,11 @@ use Illuminate\Support\Facades\Auth;
|
||||
|
||||
class StripeConnectController extends Controller
|
||||
{
|
||||
public function connect()
|
||||
{
|
||||
return view('backstage.stripe-connect.connect');
|
||||
}
|
||||
|
||||
public function authorizeRedirect()
|
||||
{
|
||||
$url = vsprintf('%s?%s', [
|
||||
|
||||
25
app/Http/Middleware/ForceStripeAccount.php
Normal file
25
app/Http/Middleware/ForceStripeAccount.php
Normal file
@@ -0,0 +1,25 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Middleware;
|
||||
|
||||
use Closure;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
|
||||
class ForceStripeAccount
|
||||
{
|
||||
/**
|
||||
* Handle an incoming request.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @param \Closure $next
|
||||
* @return mixed
|
||||
*/
|
||||
public function handle($request, Closure $next)
|
||||
{
|
||||
if (Auth::user()->stripe_account_id === null) {
|
||||
return redirect()->route('backstage.stripe-connect.connect');
|
||||
}
|
||||
|
||||
// return $next($request);
|
||||
}
|
||||
}
|
||||
22
resources/views/backstage/stripe-connect/connect.blade.php
Normal file
22
resources/views/backstage/stripe-connect/connect.blade.php
Normal file
@@ -0,0 +1,22 @@
|
||||
@extends('layouts.master')
|
||||
|
||||
@section('body')
|
||||
<div class="container-fluid bg-soft">
|
||||
<div class="full-height flex-center">
|
||||
<div class="constrain constrain-sm flex-fit">
|
||||
<div class="card p-xs-6">
|
||||
<h1 class="text-xl wt-light text-center m-xs-b-6">Connect your Stripe account</h1>
|
||||
<p class="m-xs-b-6">
|
||||
Good news, TicketBeast now integrates directly with your Stripe account!
|
||||
</p>
|
||||
<p class="m-xs-b-6">
|
||||
To continue, connect your Stripe account by clicking the button below:
|
||||
</p>
|
||||
<div>
|
||||
<a href="{{ route('backstage.stripe-connect.authorize') }}" class="btn btn-block btn-primary">Connect with Stripe</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
@@ -36,7 +36,8 @@ Route::group(['middleware' => 'auth', 'prefix' => 'backstage', 'namespace' => 'B
|
||||
Route::get('/concerts/{id}/messages/new', 'ConcertMessagesController@create')->name('backstage.concert-messages.new');
|
||||
Route::post('/concerts/{id}/messages', 'ConcertMessagesController@store')->name('backstage.concert-messages.store');
|
||||
|
||||
Route::get('/stripe-connect/authorize', 'StripeConnectController@authorizeRedirect');
|
||||
Route::get('/stripe-connect/redirect', 'StripeConnectController@redirect');
|
||||
Route::get('/stripe-connect/connect', 'StripeConnectController@connect')->name('backstage.stripe-connect.connect');
|
||||
Route::get('/stripe-connect/authorize', 'StripeConnectController@authorizeRedirect')->name('backstage.stripe-connect.authorize');
|
||||
Route::get('/stripe-connect/redirect', 'StripeConnectController@redirect')->name('backstage.stripe-connect.redirect');
|
||||
});
|
||||
|
||||
|
||||
@@ -21,7 +21,8 @@ class ConnectWithStripeTest extends DuskTestCase
|
||||
|
||||
$this->browse(function (Browser $browser) use ($user) {
|
||||
$browser->loginAs($user)
|
||||
->visit('/backstage/stripe-connect/authorize')
|
||||
->visit('/backstage/stripe-connect/connect')
|
||||
->clickLink('Connect with Stripe')
|
||||
->assertUrlIs('https://connect.stripe.com/oauth/authorize')
|
||||
->assertQueryStringHas('response_type', 'code')
|
||||
->assertQueryStringHas('scope', 'read_write')
|
||||
|
||||
33
tests/Unit/Http/Middleware/ForceStripeAccountTest.php
Normal file
33
tests/Unit/Http/Middleware/ForceStripeAccountTest.php
Normal file
@@ -0,0 +1,33 @@
|
||||
<?php
|
||||
|
||||
namespace Tests\Unit\Http\Middleware;
|
||||
|
||||
use App\User;
|
||||
use Tests\TestCase;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Http\RedirectResponse;
|
||||
use App\Http\Middleware\ForceStripeAccount;
|
||||
use Illuminate\Foundation\Testing\WithFaker;
|
||||
use Illuminate\Foundation\Testing\RefreshDatabase;
|
||||
|
||||
class ForceStripeAccountTest extends TestCase
|
||||
{
|
||||
use RefreshDatabase;
|
||||
|
||||
/** @test */
|
||||
public function users_without_a_stripe_account_are_forced_to_connect_with_stripe()
|
||||
{
|
||||
$this->be(factory(User::class)->create([
|
||||
'stripe_account_id' => null,
|
||||
]));
|
||||
|
||||
$middleware = new ForceStripeAccount;
|
||||
|
||||
$response = $middleware->handle(new Request, function ($request) {
|
||||
$this->fail("Next middleware was called when it should not have been.");
|
||||
});
|
||||
|
||||
$this->assertInstanceOf(RedirectResponse::class, $response);
|
||||
$this->assertEquals(route('backstage.stripe-connect.connect'), $response->getTargetUrl());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user