commit b87b6b2a96de870f1782b00cfe3f393cc79b7d3b
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date: Mon Dec 18 14:05:11 2017 +0000
Even more tests for this micropub refactor
commit 2d967f33c3abeea8fc89f91e1764e970681dc58f
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date: Sat Dec 16 22:19:53 2017 +0000
Fill out token endpoint tests
commit 440dcbe3e53f058060c918429bea75911ddafdc1
Merge: 02a25b0 f60164f
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date: Fri Dec 15 14:32:50 2017 +0000
Merge pull request #77 from jonnybarnes/analysis-8KABW6
Apply fixes from StyleCI
commit f60164fe81dbcc1d2343704145d26c6d6412579a
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date: Fri Dec 15 14:27:40 2017 +0000
Apply fixes from StyleCI
commit 02a25b083a0305f73d715feb3f9d34f9de8f67d4
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date: Fri Dec 15 14:17:43 2017 +0000
phpcs fix
commit 144998de0866bf11f235847d7edc076235294545
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date: Fri Dec 15 14:16:59 2017 +0000
Don’t pass the request object to service files, pass request()->all()
commit dd5e52010c51a359665efa349ff8c13d4d6dbf57
Merge: 97b270a 23b145e
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date: Sun Dec 10 20:01:03 2017 +0000
Merge pull request #76 from jonnybarnes/analysis-86AVg6
Apply fixes from StyleCI
commit 23b145e7bf67a358b3cb894ea0793984b65ecab5
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date: Sun Dec 10 19:50:53 2017 +0000
Apply fixes from StyleCI
commit 97b270a89abe92e167e0d363029ae0b86608bbc9
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date: Sun Dec 10 19:43:38 2017 +0000
Improve test coverage of the refactor
commit 244102264559e4fb0b0614d1738c0283703a71dc
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date: Fri Dec 8 13:31:13 2017 +0000
Refactor the note creation code
commit 22b4786cbd7ae508b51a47f0c8cf9a15535edbb1
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date: Thu Dec 7 17:39:41 2017 +0000
Remove ununsed importsed classes in the controller
77 lines
2.9 KiB
PHP
77 lines
2.9 KiB
PHP
<?php
|
||
|
||
namespace Tests\Feature;
|
||
|
||
use Mockery;
|
||
use Tests\TestCase;
|
||
use IndieAuth\Client;
|
||
|
||
class TokenEndpointTest extends TestCase
|
||
{
|
||
public function test_token_endpoint_issues_token()
|
||
{
|
||
$mockClient = Mockery::mock(Client::class);
|
||
$mockClient->shouldReceive('discoverAuthorizationEndpoint')
|
||
->with(normalize_url(config('app.url')))
|
||
->once()
|
||
->andReturn('https://indieauth.com/auth');
|
||
$mockClient->shouldReceive('verifyIndieAuthCode')
|
||
->andReturn([
|
||
'me' => config('app.url'),
|
||
'scope' => 'create update',
|
||
]);
|
||
$this->app->instance(Client::class, $mockClient);
|
||
$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' => mt_rand(1000, 10000),
|
||
]);
|
||
parse_str($response->content(), $output);
|
||
$this->assertEquals(config('app.url'), $output['me']);
|
||
$this->assertTrue(array_key_exists('access_token', $output));
|
||
}
|
||
|
||
public function test_token_endpoint_returns_error_when_auth_endpoint_lacks_me_data()
|
||
{
|
||
$mockClient = Mockery::mock(Client::class);
|
||
$mockClient->shouldReceive('discoverAuthorizationEndpoint')
|
||
->with(normalize_url(config('app.url')))
|
||
->once()
|
||
->andReturn('https://indieauth.com/auth');
|
||
$mockClient->shouldReceive('verifyIndieAuthCode')
|
||
->andReturn([
|
||
'error' => 'error_message',
|
||
]);
|
||
$this->app->instance(Client::class, $mockClient);
|
||
$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' => mt_rand(1000, 10000),
|
||
]);
|
||
$response->assertStatus(400);
|
||
$response->assertSeeText('There was an error verifying the authorisation code.');
|
||
}
|
||
|
||
public function test_token_endpoint_returns_error_when_no_auth_endpoint_found()
|
||
{
|
||
$mockClient = Mockery::mock(Client::class);
|
||
$mockClient->shouldReceive('discoverAuthorizationEndpoint')
|
||
->with(normalize_url(config('app.url')))
|
||
->once()
|
||
->andReturn(null);
|
||
$this->app->instance(Client::class, $mockClient);
|
||
$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' => mt_rand(1000, 10000),
|
||
]);
|
||
$response->assertStatus(400);
|
||
$response->assertSeeText('Can’t determine the authorisation endpoint.');
|
||
}
|
||
}
|