commit ebbaf83a331395d86754f231ebf3852c31ee13e7 Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Tue Sep 19 16:07:16 2017 +0100 Show just a name if no known author url commit 7c3fc38a5101635efbb1659d7dc0e4e87f28977a Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Tue Sep 19 15:55:07 2017 +0100 Update changelog commit e05876d604b2655fdd1b03fe5390c3333cd5e064 Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Tue Sep 19 15:54:10 2017 +0100 Add a trait for testing tokens commit 1288769757e6c69fccf849a73ef53e6497953d74 Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Tue Sep 19 15:53:54 2017 +0100 Add a test for the process like job commit d85a7109d51c979846b2b15d92e2b4c3978c6dc7 Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Tue Sep 19 15:53:25 2017 +0100 fix typo, and allow for array of author info, or just a name commit 1fc63c6fb6c5648e31759502a011b2be0525af54 Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Mon Sep 18 15:38:16 2017 +0100 Add another test for creating likes commit 487723ac41fa00a8182f5bf3665ab7b5f8fece52 Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Mon Sep 18 15:38:03 2017 +0100 fix unexpected end of file error commit a24eef82ae7a2a3e1d3943a6cfed85757c713434 Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Mon Sep 18 15:37:31 2017 +0100 Better response when creating likes commit fa49df98613b136167dc093a97745eeb90a4a7a6 Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Mon Sep 18 14:43:39 2017 +0100 Make the author fields nullable commit 5a2f9273c18cf31a54eb54f40732024159c3dc2d Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Mon Sep 18 14:43:20 2017 +0100 Delegate to the LikeService for creating likes commit 801d6567ec3456cbcdfa6260339dd9ed2fdfa5b0 Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Mon Sep 18 14:42:54 2017 +0100 Create the Job that gets the content of the like and the author info commit df563473606b43a330c4e977b230d4b7b2a85268 Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Mon Sep 18 14:42:28 2017 +0100 Create the service the mpub controller delegates to commit ab6ebee71ffdeb584bbef0454874d3fc1c6499f4 Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Mon Sep 18 14:42:08 2017 +0100 Allow Like::create to work for just the url commit 6d70c43f11056597a493f863c3a1ac681ed06b71 Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Mon Sep 18 14:10:20 2017 +0100 Add some initial tests commit 4049342b061594656dbf7183d7428f95ba6b3598 Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Mon Sep 18 14:10:06 2017 +0100 Add database migration/seed/factory commit 5b3aa20fa14202e84af310477b97044723201ea7 Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Mon Sep 18 14:09:21 2017 +0100 Add domain logic for likes commit 7ef5392a1833df6cee77ecb1166af4fc0abc0eb5 Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Mon Sep 18 14:08:47 2017 +0100 Add routes for likes
88 lines
2.2 KiB
PHP
88 lines
2.2 KiB
PHP
<?php
|
|
|
|
namespace Tests\Feature;
|
|
|
|
use Queue;
|
|
use App\Like;
|
|
use Tests\TestCase;
|
|
use Tests\TestToken;
|
|
use GuzzleHttp\Client;
|
|
use App\Jobs\ProcessLike;
|
|
use Lcobucci\JWT\Builder;
|
|
use GuzzleHttp\HandlerStack;
|
|
use GuzzleHttp\Psr7\Response;
|
|
use GuzzleHttp\Handler\MockHandler;
|
|
use Lcobucci\JWT\Signer\Hmac\Sha256;
|
|
use Jonnybarnes\WebmentionsParser\Authorship;
|
|
use Illuminate\Foundation\Testing\DatabaseTransactions;
|
|
|
|
class LikesTest extends TestCase
|
|
{
|
|
use DatabaseTransactions, TestToken;
|
|
|
|
public function test_likes_page()
|
|
{
|
|
$response = $this->get('/likes');
|
|
$response->assertViewIs('likes.index');
|
|
}
|
|
|
|
public function test_single_like_page()
|
|
{
|
|
$response = $this->get('/likes');
|
|
$response->assertViewIs('likes.index');
|
|
}
|
|
|
|
public function test_like_micropub_request()
|
|
{
|
|
Queue::fake();
|
|
|
|
$response = $this->withHeaders([
|
|
'Authorization' => 'Bearer ' . $this->getToken(),
|
|
])->json('POST', '/api/post', [
|
|
'type' => ['h-entry'],
|
|
'properties' => [
|
|
'like-of' => ['https://example.org/blog-post'],
|
|
],
|
|
]);
|
|
|
|
$response->assertJson(['response' => 'created']);
|
|
|
|
Queue::assertPushed(ProcessLike::class);
|
|
$this->assertDatabaseHas('likes', ['url' => 'https://example.org/blog-post']);
|
|
}
|
|
|
|
public function test_process_like_job()
|
|
{
|
|
$like = new Like();
|
|
$like->url = 'http://example.org/note/id';
|
|
$like->save();
|
|
$id = $like->id;
|
|
|
|
$job = new ProcessLike($like);
|
|
|
|
$content = <<<END
|
|
<html>
|
|
<body>
|
|
<div class="h-entry">
|
|
<div class="e-content">
|
|
A post that I like.
|
|
</div>
|
|
by <span class="p-author">Fred Bloggs</span>
|
|
</div>
|
|
</body>
|
|
</html>
|
|
END;
|
|
$mock = new MockHandler([
|
|
new Response(200, [], $content),
|
|
new Response(200, [], $content),
|
|
]);
|
|
$handler = HandlerStack::create($mock);
|
|
$client = new Client(['handler' => $handler]);
|
|
$this->app->bind(Client::class, $client);
|
|
$authorship = new Authorship();
|
|
|
|
$job->handle($client, $authorship);
|
|
|
|
$this->assertEquals('Fred Bloggs', Like::find($id)->author_name);
|
|
}
|
|
}
|