appurl = config('app.url'); } public function testMicropubRequestWithoutToken() { $this->call('GET', $this->appurl . '/api/post'); $this->assertResponseStatus(400); $this->see('No OAuth token sent with request.'); } public function testMicropubRequestWithoutValidToken() { $this->call('GET', $this->appurl . '/api/post', [], [], [], ['HTTP_Authorization' => 'Bearer abc123']); $this->assertResponseStatus(400); $this->see('Invalid token'); } public function testMicropubRequestWithValidToken() { $this->call('GET', $this->appurl . '/api/post', [], [], [], ['HTTP_Authorization' => 'Bearer ' . $this->getToken()]); $this->see('me=https%3A%2F%2Fjonnybarnes.localhost'); } public function testMicropubRequestForSyndication() { $this->call('GET', $this->appurl . '/api/post', ['q' => 'syndicate-to'], [], [], ['HTTP_Authorization' => 'Bearer ' . $this->getToken()]); $this->seeJson(['uid' => 'https://twitter.com/jonnybarnes']); } public function testMicropubRequestForNearbyPlacesThatExist() { $this->call('GET', $this->appurl . '/api/post', ['q' => 'geo:53.5,-2.38'], [], [], ['HTTP_Authorization' => 'Bearer ' . $this->getToken()]); $this->see('the-bridgewater-pub'); } public function testMicropubRequestForNearbyPlacesThatDoNotExist() { $this->call('GET', $this->appurl . '/api/post', ['q' => 'geo:1.23,4.56'], [], [], ['HTTP_Authorization' => 'Bearer ' . $this->getToken()]); $this->see('[]'); } public function testMicropubRequestCreateNewNote() { $faker = \Faker\Factory::create(); $note = $faker->text; $this->call( 'POST', $this->appurl . '/api/post', [ 'h' => 'entry', 'content' => $note ], [], [], ['HTTP_Authorization' => 'Bearer ' . $this->getToken()] ); $this->seeInDatabase('notes', ['note' => $note]); } public function testMicropubRequestCreateNewPlace() { $this->call( 'POST', $this->appurl . '/api/post', [ 'h' => 'card', 'name' => 'The Barton Arms', 'geo' => 'geo:53.4974,-2.3768' ], [], [], ['HTTP_Authorization' => 'Bearer ' . $this->getToken()] ); $this->seeInDatabase('places', ['slug' => 'the-barton-arms']); } private function getToken() { $signer = new Sha256(); $token = (new Builder()) ->set('client_id', 'https://quill.p3k.io') ->set('me', 'https://jonnybarnes.localhost') ->set('scope', 'post') ->set('issued_at', time()) ->sign($signer, env('APP_KEY')) ->getToken(); return $token; } }