jonnybarnes.uk/tests/MicropubClientTest.php

85 lines
2.4 KiB
PHP
Raw Normal View History

2016-05-19 15:01:28 +01:00
<?php
namespace App\Tests;
use TestCase;
use Lcobucci\JWT\Builder;
use Lcobucci\JWT\Signer\Hmac\Sha256;
use Illuminate\Foundation\Testing\WithoutMiddleware;
use Illuminate\Foundation\Testing\DatabaseMigrations;
use Illuminate\Foundation\Testing\DatabaseTransactions;
class MicropubClientTest extends TestCase
{
protected $appurl;
public function setUp()
{
parent::setUp();
$this->appurl = config('app.url');
}
/**
* Test the client gets shown for an unauthorised request.
*
* @return void
*/
public function testClientPageUnauthorised()
{
$this->visit($this->appurl . '/notes/new')
->see('IndieAuth');
}
public function testClientPageRecentAuth()
{
$syndication = [
[
'target' => 'https://twitter.com/jonnybarnes',
'name' => 'jonnybarnes on Twitter',
]
];
2016-05-19 15:01:28 +01:00
$this->withSession([
'me' => $this->appurl,
'syndication' => $syndication,
2016-05-19 15:01:28 +01:00
])->visit($this->appurl . '/notes/new')
->see($this->appurl)
->see('https://twitter.com/jonnybarnes');
2016-05-19 15:01:28 +01:00
}
2016-05-25 22:43:28 +01:00
public function testClientCreatesNewNoteWithTag()
2016-05-19 15:01:28 +01:00
{
//in this test, the syndication targets are blank
2016-05-19 15:01:28 +01:00
$faker = \Faker\Factory::create();
2016-05-25 22:43:28 +01:00
$note = 'Fake note from #PHPUnit: ' . $faker->text;
2016-05-19 15:01:28 +01:00
$this->withSession([
'me' => $this->appurl,
'token' => $this->getToken()
])->visit($this->appurl . '/notes/new')
->type($note, 'content')
->press('Submit');
$this->seeInDatabase('notes', ['note' => $note]);
2016-05-25 22:43:28 +01:00
$this->visit($this->appurl . '/notes/tagged/PHPUnit')
->see('PHPUnit');
//my client has made a request to my endpoint, which then adds
//to the db, so database transaction dont work
//so lets manually delete the new entry
$newNote = \App\Note::where('note', $note);
$newNote->forceDelete();
2016-05-19 15:01:28 +01:00
}
private function getToken()
{
$signer = new Sha256();
$token = (new Builder())
->set('client_id', 'https://quill.p3k.io')
->set('me', $this->appurl)
->set('scope', 'post')
->set('issued_at', time())
->sign($signer, env('APP_KEY'))
->getToken();
return $token;
}
}