Rework indieauth checking in token endpoint
We know the me value, it is our app
This commit is contained in:
parent
b8608a3f57
commit
c3c395c659
4 changed files with 19 additions and 64 deletions
|
@ -5,12 +5,10 @@ declare(strict_types=1);
|
|||
namespace Tests\Feature;
|
||||
|
||||
use Exception;
|
||||
use GuzzleHttp\Client as GuzzleClient;
|
||||
use GuzzleHttp\Client;
|
||||
use GuzzleHttp\Handler\MockHandler;
|
||||
use GuzzleHttp\HandlerStack;
|
||||
use IndieAuth\Client as IndieAuthClient;
|
||||
use JsonException;
|
||||
use Mockery;
|
||||
use Tests\TestCase;
|
||||
|
||||
class TokenEndpointTest extends TestCase
|
||||
|
@ -23,11 +21,6 @@ class TokenEndpointTest extends TestCase
|
|||
*/
|
||||
public function tokenEndpointIssuesToken(): void
|
||||
{
|
||||
$mockIndieAuthClient = Mockery::mock(IndieAuthClient::class);
|
||||
$mockIndieAuthClient->shouldReceive('discoverAuthorizationEndpoint')
|
||||
->with(normalize_url(config('app.url')))
|
||||
->once()
|
||||
->andReturn('https://indieauth.com/auth');
|
||||
$mockHandler = new MockHandler([
|
||||
new \GuzzleHttp\Psr7\Response(200, [], json_encode([
|
||||
'me' => config('app.url'),
|
||||
|
@ -35,9 +28,8 @@ class TokenEndpointTest extends TestCase
|
|||
], JSON_THROW_ON_ERROR)),
|
||||
]);
|
||||
$handlerStack = HandlerStack::create($mockHandler);
|
||||
$mockGuzzleClient = new GuzzleClient(['handler' => $handlerStack]);
|
||||
$this->app->instance(IndieAuthClient::class, $mockIndieAuthClient);
|
||||
$this->app->instance(GuzzleClient::class, $mockGuzzleClient);
|
||||
$mockGuzzleClient = new Client(['handler' => $handlerStack]);
|
||||
$this->app->instance(Client::class, $mockGuzzleClient);
|
||||
$response = $this->post('/api/token', [
|
||||
'me' => config('app.url'),
|
||||
'code' => 'abc123',
|
||||
|
@ -59,20 +51,14 @@ class TokenEndpointTest extends TestCase
|
|||
*/
|
||||
public function tokenEndpointReturnsErrorWhenAuthEndpointLacksMeData(): void
|
||||
{
|
||||
$mockIndieAuthClient = Mockery::mock(IndieAuthClient::class);
|
||||
$mockIndieAuthClient->shouldReceive('discoverAuthorizationEndpoint')
|
||||
->with(normalize_url(config('app.url')))
|
||||
->once()
|
||||
->andReturn('https://indieauth.com/auth');
|
||||
$mockHandler = new MockHandler([
|
||||
new \GuzzleHttp\Psr7\Response(400, [], json_encode([
|
||||
'error' => 'error_message',
|
||||
], JSON_THROW_ON_ERROR)),
|
||||
]);
|
||||
$handlerStack = HandlerStack::create($mockHandler);
|
||||
$mockGuzzleClient = new GuzzleClient(['handler' => $handlerStack]);
|
||||
$this->app->instance(IndieAuthClient::class, $mockIndieAuthClient);
|
||||
$this->app->instance(GuzzleClient::class, $mockGuzzleClient);
|
||||
$mockGuzzleClient = new Client(['handler' => $handlerStack]);
|
||||
$this->app->instance(Client::class, $mockGuzzleClient);
|
||||
$response = $this->post('/api/token', [
|
||||
'me' => config('app.url'),
|
||||
'code' => 'abc123',
|
||||
|
@ -85,30 +71,4 @@ class TokenEndpointTest extends TestCase
|
|||
'error' => 'There was an error verifying the IndieAuth code',
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* @test
|
||||
*
|
||||
* @throws Exception
|
||||
*/
|
||||
public function tokenEndpointReturnsErrorWhenNoAuthEndpointFound(): void
|
||||
{
|
||||
$mockIndieAuthClient = Mockery::mock(IndieAuthClient::class);
|
||||
$mockIndieAuthClient->shouldReceive('discoverAuthorizationEndpoint')
|
||||
->with(normalize_url(config('app.url')))
|
||||
->once()
|
||||
->andReturn(null);
|
||||
$this->app->instance(IndieAuthClient::class, $mockIndieAuthClient);
|
||||
$response = $this->post('/api/token', [
|
||||
'me' => config('app.url'),
|
||||
'code' => 'abc123',
|
||||
'redirect_uri' => config('app.url') . '/indieauth-callback',
|
||||
'client_id' => config('app.url') . '/micropub-client',
|
||||
'state' => random_int(1000, 10000),
|
||||
]);
|
||||
$response->assertStatus(400);
|
||||
$response->assertJson([
|
||||
'error' => 'Could not discover the authorization endpoint for ' . config('app.url'),
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue