Squashed commit of the following: commit 18996bc4916e945e130ad4abb17149ea2d0afa93 Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Thu Dec 7 14:46:41 2017 +0000 Fixing styleci issue commit e5bfedfdede637d3090603b55946cc34aec8b52d Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Thu Dec 7 14:45:47 2017 +0000 The Micorpub controller istelf is basically refactored now commit 9eacc968c8bf9b0f5e746c38f04423c51f678d50 Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Thu Dec 7 14:16:23 2017 +0000 Add more tests, easily into 90% plus test coverage now commit 2dcbf94298841884083f752f17de46ef7809a369 Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Thu Dec 7 10:57:42 2017 +0000 Fix some styleci issues commit 6a989f61af412d59751281bc09ba0778597f09ec Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Thu Dec 7 10:56:13 2017 +0000 First real attempt at refactoring micropub controller commit c10da3d630ca8e06b120122041bb6c64c1084325 Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Tue Dec 5 16:51:20 2017 +0000 Fix a styleci issue commit d7ee556fdebdd2160620e65d4bf3c67134f01187 Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Tue Dec 5 16:47:52 2017 +0000 Improve the code for the media endpoint and add tests commit bc81bbaff3fad8afcc2135d76f213bba8ba54534 Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Tue Dec 5 16:47:07 2017 +0000 Modify process image to process media, this allows for improvment within the micropub controller commit d13035cb2cbeff41d15ff017beb9a5b6bb41daee Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Mon Dec 4 15:14:18 2017 +0000 Better name the current tests commit 0a2ef16f74f3e322a945a8d6b239be3f97e8c5b8 Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Mon Dec 4 14:08:13 2017 +0000 Reach 100% code coverage for webmentions commit 60f8b196a0fb4e6570b74d7577a9ff5f6c218613 Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Mon Dec 4 13:35:03 2017 +0000 Fix a styleci issue commit e96be1869da909b8b080a38e4e33f94656b5b786 Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Mon Dec 4 13:32:54 2017 +0000 Add tests for Notes Admin code commit 213319798bf5b3118034ab18a7c9eca5cf18296f Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Mon Dec 4 12:44:02 2017 +0000 Fix a styleci issue commit a614332c7664f66edcb78ef23db392a417c0deb0 Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Mon Dec 4 12:43:02 2017 +0000 Fix a phpcs issue commit 6a2e445dbf87fb8b48a24b34ca0fc3518b4376b6 Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Mon Dec 4 12:20:19 2017 +0000 Add some tests fopr editing places in the admin cp commit 7044f2555228ffd7df2823c0c19a4380ca886b5d Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Mon Dec 4 11:35:59 2017 +0000 Add tests for contacts admin code commit 280c4498dbe2cf2879a08ee45a90a0c9ff2f296a Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Sat Dec 2 13:45:27 2017 +0000 Improve admin related tests commit ee93a108d11053b1f2fe38f30f3219b3e96267fc Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Sat Dec 2 00:01:42 2017 +0000 Measure coverage with coveralls commit 47c4f5088b1b12e4d183a72b9792e723bda64f77 Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Fri Dec 1 23:57:32 2017 +0000 Remove un-used PhotosController commit 5737621dbc0ff7009896b483e1d004cdf2eb1523 Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Fri Dec 1 23:47:08 2017 +0000 Remove the curl test that was used for debugging purposes commit b4d312b056df884eef7e4b0392b5dd1a3ae978bd Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Fri Dec 1 23:39:47 2017 +0000 We don’t want ports in the longurl/shorturl env vars commit 915370845448ef4e1be1ff5e7f4ef084c4200953 Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Fri Dec 1 23:30:17 2017 +0000 Use the right port commit f9a3eac51063899fd003a8fa572dcf972d2f3a5c Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Fri Dec 1 23:18:57 2017 +0000 I can’t get nginx listening on custom domains commit 3742a04cda5b5ae56ad839bf0ed74ddd9874e74c Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Fri Dec 1 23:10:51 2017 +0000 Try naked domains, i.e. without .localhost commit d46040f86f32f0a70dae3bd1cf7c27465ee83a77 Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Fri Dec 1 23:02:51 2017 +0000 Add some default values back for pid and error_log commit f15eb73b995f215e3b56243bbba49f23393beb5e Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Fri Dec 1 22:56:38 2017 +0000 Let pid be the default value commit 91048b96302b5f13c1eba4ae9ab226ff00859ea6 Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Fri Dec 1 22:51:22 2017 +0000 Don’t try and run php-fpm and nginx on the same port commit 4203f7de976df9d0e832c09b18f15fff05837af7 Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Fri Dec 1 22:36:26 2017 +0000 Can only have one default_server commit 6d117929d09707add7d687883d4cb6eba5881e96 Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Fri Dec 1 22:10:35 2017 +0000 Try and get a long url and short url both working commit 995c7721e3dd96b01307cf75ae0f839fad96aaf9 Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Fri Dec 1 22:01:14 2017 +0000 Test the remaining shorturl redirects commit d4c8a1a9c41c4e807d986b54c397b88a54292713 Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Fri Dec 1 22:00:54 2017 +0000 Get rid of some of my legacy redirects commit 96d8c5b4cf576d66864a9e241cbef89b7bbe4597 Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Fri Dec 1 21:46:42 2017 +0000 Try and fix which url is being replied to commit 692a7d0a2dcb3050f9c6da4afce2bb6c8ee72583 Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Fri Dec 1 21:22:15 2017 +0000 Add tests and improve code for the search feature commit 442c26ff485a4d20710e1c38ab78bb1df212edda Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Fri Dec 1 20:04:00 2017 +0000 Add tests for saving css preference in the session commit e2180f0c40e4e8de293d2dd174816095affb0e3f Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Fri Dec 1 19:35:32 2017 +0000 Some styleci fixes commit a90bbe79c092ee4548f4fbad1399b99fddcb432c Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Fri Dec 1 19:33:40 2017 +0000 Don’t consider un-used laravel middleware when calculating code coverage commit 15edeb0d0179d5a37648c454d316c99250ba9bea Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Fri Dec 1 19:27:42 2017 +0000 Add some tests for the process webmention job commit a354c63945c582196990823845b57c7e51ff182d Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Fri Dec 1 17:55:47 2017 +0000 Add tests for save profile image job commit 0230102bafddbccd81512c37330be0e2fcb39a53 Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Fri Dec 1 15:05:30 2017 +0000 Test sending webmentions commit e664e911c5fcca7fc884eda39253b503970a8bc2 Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Fri Dec 1 15:04:44 2017 +0000 Fix typo in test name commit 391d1aa8f584b9e8bd8a7154b68447a2098ddc1a Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Fri Dec 1 12:04:05 2017 +0000 Add tests for syndication jobs commit 16d8215c09ff235c5b8253189055ad6c17f2f009 Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Fri Dec 1 11:49:05 2017 +0000 Fix issue with scope date and month being 12 the int or 12 the string commit 0d9aaaa178b088a6856a70f4338fffea0ad8a0f3 Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Thu Nov 30 19:00:39 2017 +0000 Improve Bookmark processing code and test coverage commit 93d4419b37af7d0fcf8fe48cb855c1290512b30c Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Thu Nov 30 18:59:10 2017 +0000 Improve Like processing code and test coverage commit 1ccb42c48a4760daf9cf0bed744740aa931a6a89 Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Thu Nov 30 14:12:07 2017 +0000 Try and install nginx natively, given its listed in travis-ci/apt-package-whitelist commit 126a3c4c9639eae1a986674a952923dd4e1384cc Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Thu Nov 30 12:09:47 2017 +0000 Test the download webmention job commit 2889e95c1526796684613d7fbb0998f654dbef28 Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Thu Nov 30 12:08:56 2017 +0000 Test the add client job commit 4054a24e93ffe5dd68c2ab211bf6a88b114c3f10 Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Mon Nov 27 21:21:09 2017 +0000 Ignore code coverage for such a trivial command commit 5bda55d401fa677a84d334b6200d7ce045e23a90 Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Mon Nov 27 18:22:18 2017 +0000 For now don’t analyse laravel’s exception handler commit bb21e2ffc620cf22c14b49f2f292616f0d1bcc77 Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Mon Nov 27 18:21:55 2017 +0000 test coverage commit 2980127778d5be8dee7dd119cc6eb20b7a9f5e52 Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Mon Nov 27 16:30:44 2017 +0000 phpcs fixes commit 6e802bf78a93e5886a38007177d54d33ed85b31b Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Mon Nov 27 16:28:47 2017 +0000 Increase and improve tests for bookmarks commit 1f6ffbacb86be86faa2cd37022d50e41f9582d59 Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Mon Nov 27 13:04:11 2017 +0000 Increase test coverage for token generation/validation commit 66d866fdbfd1dcd0f161d4d30c7fb79fbb4a7250 Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Sun Nov 26 16:58:30 2017 +0000 Increase test coverage for Place relasted code commit 6774d5c837ccc8c7d9f1cd80607dd40ffb5257f5 Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Sun Nov 26 16:57:42 2017 +0000 Increase test coverage for Like relasted code commit 4e055527276499eca721cf9be64473d91b30e1d9 Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Sun Nov 26 10:21:21 2017 +0000 Ignore code that can’t be tested from coverage analysis commit fbe7a88ab2319a3dcf4d441bd6db7be49e6445c5 Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Sun Nov 26 10:20:48 2017 +0000 Increase test coverages for note creation/deletion commit cae9bce276372a4870b0cbe7ebd561ef49d1b131 Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Fri Nov 24 15:16:52 2017 +0000 Test a single bookmark page commit e23cf9846ae5bb28554d7665aee92826e237dc38 Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Fri Nov 24 15:16:34 2017 +0000 Test login route for admin page commit 9e2902f2048edac949edd0cc73e1abbf84a4f224 Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Fri Nov 24 14:11:46 2017 +0000 Improve articles controller to redirect outdated links, add tests commit 49bfaaf615461149a06bcfb74fd7a676eb3d49f8 Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Fri Nov 24 13:57:03 2017 +0000 Remove Auth controllers we don’t use commit 5cebbc45aa72d24fc729c314c4f6ef1fc99c16d3 Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Fri Nov 24 13:36:11 2017 +0000 More testing, looking at middleware being applied commit 2e5c9dd77143d3b23b3461decd5d1cda1375c510 Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Fri Nov 24 13:12:56 2017 +0000 Tweak reply webmentions and re-parsing them, as well as add tests commit 766739f42fe8432daa10172ae7fcff84fe29d78d Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Thu Nov 23 21:18:56 2017 +0000 Test redownload webmentions command dispatches the job commit 6a25e99af4bad4ea3070a1ac4277542a52f6b465 Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Thu Nov 23 20:24:18 2017 +0000 Fixing and increasing test coverage for notes, still some work left to do commit 1e10fffb344b50a4665060d42e94cb564a8404e7 Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Thu Nov 23 15:16:11 2017 +0000 Increase test coverage for places commit 0b40ccedd285262b57be2414dfa2fd637e80ef2b Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Thu Nov 23 11:54:08 2017 +0000 Tweak of code and increased test coverage commit 64dc03b381fb79046e57ba2c623cb3a667adc345 Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Wed Nov 22 15:38:17 2017 +0000 Increase text coverage for Tags commit 62bdb775ec5ec2c06595fc4d427703c683ae81a7 Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Wed Nov 22 15:25:33 2017 +0000 Increase test coverage for media-client code commit 6bcf4cb909048e94aed7b7807bbe380833c258a1 Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Wed Nov 22 15:25:05 2017 +0000 Incurease test coverage for media commit 89ede0fd1c9d7ee66b1af8be2b4d75b03b4bd8b9 Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Wed Nov 22 15:24:36 2017 +0000 Fix some issues with notes and increase test coverage commit 1ad7c952703e9098bd80c2024eeec0a0937c9db3 Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Tue Nov 21 14:40:33 2017 +0000 Improve bookmarks test coverage commit 5a3cb440edeb9c63e9c447a36b3000dcb0b0ec7a Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Tue Nov 21 14:40:05 2017 +0000 Add Like tests commit 8481e367ea74b081269a99ee97175f49d71176b8 Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Tue Nov 21 14:08:38 2017 +0000 Add a another Like to the db without content and with an auhtor_url commit 4053dcf8ec02e8b3618eb3ad2b875870368eab49 Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Tue Nov 21 14:07:32 2017 +0000 Don’t show the url instead of content, just leave blank commit 8e12a125b927efd327323044e5f86beef6ccef8c Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Tue Nov 21 14:05:36 2017 +0000 Add tests for Article model commit d827d3399a1ed9513c4bac05e5078345f2768081 Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Tue Nov 21 14:05:14 2017 +0000 Make sure year and month are cast to ints for scopeDate commit db747d95bc80e521604b4b3487bed6c7fd46b8fe Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Tue Nov 21 14:04:26 2017 +0000 Remove un-needed webmentions method, change scopeDate to use integers for month
397 lines
12 KiB
PHP
397 lines
12 KiB
PHP
<?php
|
||
|
||
namespace Tests\Feature;
|
||
|
||
use Tests\TestCase;
|
||
use Tests\TestToken;
|
||
use Lcobucci\JWT\Builder;
|
||
use App\Jobs\ProcessMedia;
|
||
use Illuminate\Http\UploadedFile;
|
||
use Lcobucci\JWT\Signer\Hmac\Sha256;
|
||
use Illuminate\Support\Facades\Queue;
|
||
use Illuminate\Support\Facades\Storage;
|
||
use Illuminate\Foundation\Testing\DatabaseTransactions;
|
||
|
||
class MicropubControllerTest extends TestCase
|
||
{
|
||
use DatabaseTransactions, TestToken;
|
||
|
||
/**
|
||
* Test a GET request for the micropub endpoint without a token gives a
|
||
* 400 response. Also check the error message.
|
||
*
|
||
* @return void
|
||
*/
|
||
public function test_micropub_get_request_without_token_returns_401_response()
|
||
{
|
||
$response = $this->get('/api/post');
|
||
$response->assertStatus(401);
|
||
$response->assertJsonFragment(['error_description' => 'No access token was provided in the request']);
|
||
}
|
||
|
||
/**
|
||
* Test a GET request for the micropub endpoint without a valid token gives
|
||
* a 400 response. Also check the error message.
|
||
*
|
||
* @return void
|
||
*/
|
||
public function test_micropub_get_request_without_valid_token_returns_400_response()
|
||
{
|
||
$response = $this->call('GET', '/api/post', [], [], [], ['HTTP_Authorization' => 'Bearer abc123']);
|
||
$response->assertStatus(400);
|
||
$response->assertJsonFragment(['error_description' => 'The provided token did not pass validation']);
|
||
}
|
||
|
||
/**
|
||
* Test a GET request for the micropub endpoint with a valid token gives a
|
||
* 200 response. Check token information is returned in the response.
|
||
*
|
||
* @return void
|
||
*/
|
||
public function test_micropub_get_request_with_valid_token_returns_200_response()
|
||
{
|
||
$response = $this->call('GET', '/api/post', [], [], [], ['HTTP_Authorization' => 'Bearer ' . $this->getToken()]);
|
||
$response->assertStatus(200);
|
||
$response->assertJsonFragment(['response' => 'token']);
|
||
}
|
||
|
||
/**
|
||
* Test a GET request for syndication targets.
|
||
*
|
||
* @return void
|
||
*/
|
||
public function test_micropub_get_request_for_syndication_targets()
|
||
{
|
||
$response = $this->call('GET', '/api/post', ['q' => 'syndicate-to'], [], [], ['HTTP_Authorization' => 'Bearer ' . $this->getToken()]);
|
||
$response->assertJsonFragment(['uid' => 'https://twitter.com/jonnybarnes']);
|
||
}
|
||
|
||
/**
|
||
* Test a request for places.
|
||
*
|
||
* @return void
|
||
*/
|
||
public function test_micropub_get_request_for_nearby_places()
|
||
{
|
||
$response = $this->call('GET', '/api/post', ['q' => 'geo:53.5,-2.38'], [], [], ['HTTP_Authorization' => 'Bearer ' . $this->getToken()]);
|
||
$response->assertJson(['places' => [['slug' =>'the-bridgewater-pub']]]);
|
||
}
|
||
|
||
/**
|
||
* Test a request for places, this time with an uncertainty parameter.
|
||
*
|
||
* @return void
|
||
*/
|
||
public function test_micropub_get_request_for_nearby_places_with_uncertainty_parameter()
|
||
{
|
||
$response = $this->call('GET', '/api/post', ['q' => 'geo:53.5,-2.38;u=35'], [], [], ['HTTP_Authorization' => 'Bearer ' . $this->getToken()]);
|
||
$response->assertJson(['places' => [['slug' => 'the-bridgewater-pub']]]);
|
||
}
|
||
|
||
/**
|
||
* Test a request for places, where there will be an “empty” response.
|
||
*
|
||
* @return void
|
||
*/
|
||
public function test_micropub_get_request_for_nearby_places_where_non_exist()
|
||
{
|
||
$response = $this->call('GET', '/api/post', ['q' => 'geo:1.23,4.56'], [], [], ['HTTP_Authorization' => 'Bearer ' . $this->getToken()]);
|
||
$response->assertJson(['places' => []]);
|
||
}
|
||
|
||
/**
|
||
* Test a request for the micropub config.
|
||
*
|
||
* @return void
|
||
*/
|
||
public function test_micropub_get_request_for_config()
|
||
{
|
||
$response = $this->call('GET', '/api/post', ['q' => 'config'], [], [], ['HTTP_Authorization' => 'Bearer ' . $this->getToken()]);
|
||
$response->assertJsonFragment(['uid' => 'https://twitter.com/jonnybarnes']);
|
||
}
|
||
|
||
/**
|
||
* Test a valid micropub requests creates a new note.
|
||
*
|
||
* @return void
|
||
*/
|
||
public function test_micropub_post_request_creates_new_note()
|
||
{
|
||
$faker = \Faker\Factory::create();
|
||
$note = $faker->text;
|
||
$response = $this->call(
|
||
'POST',
|
||
'/api/post',
|
||
[
|
||
'h' => 'entry',
|
||
'content' => $note
|
||
],
|
||
[],
|
||
[],
|
||
['HTTP_Authorization' => 'Bearer ' . $this->getToken()]
|
||
);
|
||
$response->assertJson(['response' => 'created']);
|
||
$this->assertDatabaseHas('notes', ['note' => $note]);
|
||
}
|
||
|
||
/**
|
||
* Test a valid micropub requests creates a new place.
|
||
*
|
||
* @return void
|
||
*/
|
||
public function test_micropub_post_request_creates_new_place()
|
||
{
|
||
$response = $this->call(
|
||
'POST',
|
||
'/api/post',
|
||
[
|
||
'h' => 'card',
|
||
'name' => 'The Barton Arms',
|
||
'geo' => 'geo:53.4974,-2.3768'
|
||
],
|
||
[],
|
||
[],
|
||
['HTTP_Authorization' => 'Bearer ' . $this->getToken()]
|
||
);
|
||
$response->assertJson(['response' => 'created']);
|
||
$this->assertDatabaseHas('places', ['slug' => 'the-barton-arms']);
|
||
}
|
||
|
||
/**
|
||
* Test a valid micropub requests creates a new place with latitude
|
||
* and longitude values defined separately.
|
||
*
|
||
* @return void
|
||
*/
|
||
public function test_micropub_post_request_creates_new_place_with_latlng()
|
||
{
|
||
$response = $this->call(
|
||
'POST',
|
||
'/api/post',
|
||
[
|
||
'h' => 'card',
|
||
'name' => 'The Barton Arms',
|
||
'latitude' => '53.4974',
|
||
'longitude' => '-2.3768',
|
||
],
|
||
[],
|
||
[],
|
||
['HTTP_Authorization' => 'Bearer ' . $this->getToken()]
|
||
);
|
||
$response->assertJson(['response' => 'created']);
|
||
$this->assertDatabaseHas('places', ['slug' => 'the-barton-arms']);
|
||
}
|
||
|
||
/**
|
||
* Test a valid micropub requests using JSON syntax creates a new note.
|
||
*
|
||
* @return void
|
||
*/
|
||
public function test_micropub_post_request_with_json_syntax_creates_new_note()
|
||
{
|
||
$faker = \Faker\Factory::create();
|
||
$note = $faker->text;
|
||
$response = $this->json(
|
||
'POST',
|
||
'/api/post',
|
||
[
|
||
'type' => ['h-entry'],
|
||
'properties' => [
|
||
'content' => [$note],
|
||
],
|
||
],
|
||
['HTTP_Authorization' => 'Bearer ' . $this->getToken()]
|
||
);
|
||
$response
|
||
->assertStatus(201)
|
||
->assertJson(['response' => 'created']);
|
||
}
|
||
|
||
/**
|
||
* Test a micropub requests using JSON syntax without a token returns an
|
||
* error. Also check the message.
|
||
*
|
||
* @return void
|
||
*/
|
||
public function test_micropub_post_request_with_json_syntax_without_token_returns_error()
|
||
{
|
||
$faker = \Faker\Factory::create();
|
||
$note = $faker->text;
|
||
$response = $this->json(
|
||
'POST',
|
||
'/api/post',
|
||
[
|
||
'type' => ['h-entry'],
|
||
'properties' => [
|
||
'content' => [$note],
|
||
],
|
||
]
|
||
);
|
||
$response
|
||
->assertJson([
|
||
'response' => 'error',
|
||
'error' => 'unauthorized'
|
||
])
|
||
->assertStatus(401);
|
||
}
|
||
|
||
/**
|
||
* Test a micropub requests using JSON syntax without a valis token returns
|
||
* an error. Also check the message.
|
||
*
|
||
* @return void
|
||
*/
|
||
public function test_micropub_post_request_with_json_syntax_with_invalid_token_returns_error()
|
||
{
|
||
$faker = \Faker\Factory::create();
|
||
$note = $faker->text;
|
||
$response = $this->json(
|
||
'POST',
|
||
'/api/post',
|
||
[
|
||
'type' => ['h-entry'],
|
||
'properties' => [
|
||
'content' => [$note],
|
||
],
|
||
],
|
||
['HTTP_Authorization' => 'Bearer ' . $this->getInvalidToken()]
|
||
);
|
||
$response
|
||
->assertJson([
|
||
'response' => 'error',
|
||
'error' => 'insufficient_scope'
|
||
])
|
||
->assertStatus(401);
|
||
}
|
||
|
||
public function test_micropub_post_request_with_json_syntax_creates_new_place()
|
||
{
|
||
$faker = \Faker\Factory::create();
|
||
$response = $this->json(
|
||
'POST',
|
||
'/api/post',
|
||
[
|
||
'type' => ['h-card'],
|
||
'properties' => [
|
||
'name' => $faker->name,
|
||
'geo' => 'geo:' . $faker->latitude . ',' . $faker->longitude
|
||
],
|
||
],
|
||
['HTTP_Authorization' => 'Bearer ' . $this->getToken()]
|
||
);
|
||
$response
|
||
->assertJson(['response' => 'created'])
|
||
->assertStatus(201);
|
||
}
|
||
|
||
public function test_micropub_post_request_with_json_syntax_and_uncertainty_parameter_creates_new_place()
|
||
{
|
||
$faker = \Faker\Factory::create();
|
||
$response = $this->json(
|
||
'POST',
|
||
'/api/post',
|
||
[
|
||
'type' => ['h-card'],
|
||
'properties' => [
|
||
'name' => $faker->name,
|
||
'geo' => 'geo:' . $faker->latitude . ',' . $faker->longitude . ';u=35'
|
||
],
|
||
],
|
||
['HTTP_Authorization' => 'Bearer ' . $this->getToken()]
|
||
);
|
||
$response
|
||
->assertJson(['response' => 'created'])
|
||
->assertStatus(201);
|
||
}
|
||
|
||
public function test_micropub_post_request_with_json_syntax_update_replace_post()
|
||
{
|
||
$response = $this->json(
|
||
'POST',
|
||
'/api/post',
|
||
[
|
||
'action' => 'update',
|
||
'url' => config('app.url') . '/notes/A',
|
||
'replace' => [
|
||
'content' => ['replaced content'],
|
||
],
|
||
],
|
||
['HTTP_Authorization' => 'Bearer ' . $this->getToken()]
|
||
);
|
||
$response
|
||
->assertJson(['response' => 'updated'])
|
||
->assertStatus(200);
|
||
}
|
||
|
||
public function test_micropub_post_request_with_json_syntax_update_add_post()
|
||
{
|
||
$response = $this->json(
|
||
'POST',
|
||
'/api/post',
|
||
[
|
||
'action' => 'update',
|
||
'url' => config('app.url') . '/notes/A',
|
||
'add' => [
|
||
'syndication' => ['https://www.swarmapp.com/checkin/123'],
|
||
],
|
||
],
|
||
['HTTP_Authorization' => 'Bearer ' . $this->getToken()]
|
||
);
|
||
$response
|
||
->assertJson(['response' => 'updated'])
|
||
->assertStatus(200);
|
||
$this->assertDatabaseHas('notes', [
|
||
'swarm_url' => 'https://www.swarmapp.com/checkin/123'
|
||
]);
|
||
}
|
||
|
||
public function test_media_endpoint_request_with_invalid_token_return_400_response()
|
||
{
|
||
$response = $this->call(
|
||
'POST',
|
||
'/api/media',
|
||
[],
|
||
[],
|
||
[],
|
||
['HTTP_Authorization' => 'Bearer abc123']
|
||
);
|
||
$response->assertStatus(400);
|
||
$response->assertJsonFragment(['error_description' => 'The provided token did not pass validation']);
|
||
}
|
||
|
||
public function test_media_endpoint_request_with_insufficient_token_scopes_returns_401_response()
|
||
{
|
||
$response = $this->call(
|
||
'POST',
|
||
'/api/media',
|
||
[],
|
||
[],
|
||
[],
|
||
['HTTP_Authorization' => 'Bearer ' . $this->getInvalidToken()]
|
||
);
|
||
$response->assertStatus(401);
|
||
$response->assertJsonFragment(['error_description' => 'The token’s scope does not have the necessary requirements.']);
|
||
}
|
||
|
||
public function test_media_endpoint_upload_a_file()
|
||
{
|
||
Queue::fake();
|
||
Storage::fake('local');
|
||
|
||
$response = $this->call(
|
||
'POST',
|
||
'/api/media',
|
||
[],
|
||
[],
|
||
[
|
||
'file' => UploadedFile::fake()->image('scrot.png', 1920, 1080)->size(250),
|
||
],
|
||
['HTTP_Authorization' => 'Bearer ' . $this->getToken()]
|
||
);
|
||
|
||
$path = parse_url($response->getData()->location, PHP_URL_PATH);
|
||
$filename = substr($path, 7);
|
||
Queue::assertPushed(ProcessMedia::class);
|
||
Storage::disk('local')->assertExists($filename);
|
||
}
|
||
}
|