Squashed commit of the following: commit 74ed84617fcbecf661695763323e50d049a88db7 Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Mon Jan 15 12:46:29 2018 +0000 Test passes so remove the dump statement commit a7d3323be02da64f76e8ec88713e3de84a13ded7 Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Mon Jan 15 12:40:35 2018 +0000 Values with spaces need to be quoted commit 58a120bb238f14346793c388b948b7351d3b51fd Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Mon Jan 15 12:37:23 2018 +0000 We need a diplay name for the tests to work now we are using strict type checking commit b46f177053bd697db9a4835d073f2f37e088b26f Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Mon Jan 15 12:31:29 2018 +0000 Get travis to show more info about failing test commit 60323f3ce5a0561329a1721ee94821571cdcc86a Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Mon Jan 15 12:23:27 2018 +0000 Remove un-used namnepsace imports commit 096d3505920bc94ff8677c77430eca0aae0be58a Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Mon Jan 15 12:21:55 2018 +0000 we need php7.2 for object type-hint commit bb818bc19c73d02d510af9f002199f5718a54608 Author: Jonny Barnes <jonny@jonnybarnes.uk> Date: Mon Jan 15 12:15:48 2018 +0000 Added lots of strict_types
190 lines
7.2 KiB
PHP
190 lines
7.2 KiB
PHP
<?php
|
|
|
|
namespace Tests\Feature;
|
|
|
|
use Tests\TestCase;
|
|
use Tests\TestToken;
|
|
use Lcobucci\JWT\Builder;
|
|
use Lcobucci\JWT\Signer\Hmac\Sha256;
|
|
use Illuminate\Foundation\Testing\DatabaseTransactions;
|
|
|
|
class SwarmTest extends TestCase
|
|
{
|
|
use DatabaseTransactions, TestToken;
|
|
|
|
public function test_faked_ownyourswarm_request_with_foursquare()
|
|
{
|
|
$response = $this->json(
|
|
'POST',
|
|
'api/post',
|
|
[
|
|
'type' => ['h-entry'],
|
|
'properties' => [
|
|
'published' => [\Carbon\Carbon::now()->toDateTimeString()],
|
|
'syndication' => ['https://www.swarmapp.com/checkin/abc'],
|
|
'content' => [[
|
|
'value' => 'My first #checkin using Example Product',
|
|
'html' => 'My first #checkin using <a href="http://example.org">Example Product</a>',
|
|
]],
|
|
'checkin' => [[
|
|
'type' => ['h-card'],
|
|
'properties' => [
|
|
'name' => ['Awesome Venue'],
|
|
'url' => ['https://foursquare.com/v/123456'],
|
|
'latitude' => ['1.23'],
|
|
'longitude' => ['4.56'],
|
|
],
|
|
]],
|
|
],
|
|
],
|
|
['HTTP_Authorization' => 'Bearer ' . $this->getToken()]
|
|
);
|
|
$response
|
|
->assertStatus(201)
|
|
->assertJson(['response' => 'created']);
|
|
$this->assertDatabaseHas('notes', [
|
|
'swarm_url' => 'https://www.swarmapp.com/checkin/abc'
|
|
]);
|
|
$this->assertDatabaseHas('places', [
|
|
'external_urls' => '{"foursquare": "https://foursquare.com/v/123456"}'
|
|
]);
|
|
}
|
|
|
|
// this request would actually come from another client than OwnYourSwarm
|
|
public function test_faked_ownyourswarm_request_with_osm()
|
|
{
|
|
$response = $this->json(
|
|
'POST',
|
|
'api/post',
|
|
[
|
|
'type' => ['h-entry'],
|
|
'properties' => [
|
|
'published' => [\Carbon\Carbon::now()->toDateTimeString()],
|
|
'content' => [[
|
|
'value' => 'My first #checkin using Example Product',
|
|
'html' => 'My first #checkin using <a href="http://example.org">Example Product</a>',
|
|
]],
|
|
'checkin' => [[
|
|
'type' => ['h-card'],
|
|
'properties' => [
|
|
'name' => ['Awesome Venue'],
|
|
'url' => ['https://www.openstreetmap.org/way/123456'],
|
|
'latitude' => ['1.23'],
|
|
'longitude' => ['4.56'],
|
|
],
|
|
]],
|
|
],
|
|
],
|
|
['HTTP_Authorization' => 'Bearer ' . $this->getToken()]
|
|
);
|
|
$response
|
|
->assertStatus(201)
|
|
->assertJson(['response' => 'created']);
|
|
$this->assertDatabaseHas('places', [
|
|
'external_urls' => '{"osm": "https://www.openstreetmap.org/way/123456"}'
|
|
]);
|
|
}
|
|
|
|
// this request would actually come from another client than OwnYourSwarm
|
|
public function test_faked_ownyourswarm_request_without_known_external_url()
|
|
{
|
|
$response = $this->json(
|
|
'POST',
|
|
'api/post',
|
|
[
|
|
'type' => ['h-entry'],
|
|
'properties' => [
|
|
'published' => [\Carbon\Carbon::now()->toDateTimeString()],
|
|
'content' => [[
|
|
'value' => 'My first #checkin using Example Product',
|
|
'html' => 'My first #checkin using <a href="http://example.org">Example Product</a>',
|
|
]],
|
|
'checkin' => [[
|
|
'type' => ['h-card'],
|
|
'properties' => [
|
|
'name' => ['Awesome Venue'],
|
|
'url' => ['https://www.example.org/way/123456'],
|
|
'latitude' => ['1.23'],
|
|
'longitude' => ['4.56'],
|
|
],
|
|
]],
|
|
],
|
|
],
|
|
['HTTP_Authorization' => 'Bearer ' . $this->getToken()]
|
|
);
|
|
$response
|
|
->assertStatus(201)
|
|
->assertJson(['response' => 'created']);
|
|
$this->assertDatabaseHas('places', [
|
|
'external_urls' => '{"default": "https://www.example.org/way/123456"}'
|
|
]);
|
|
}
|
|
|
|
public function test_faked_ownyourswarm_request_with_no_text_content()
|
|
{
|
|
$response = $this->json(
|
|
'POST',
|
|
'api/post',
|
|
[
|
|
'type' => ['h-entry'],
|
|
'properties' => [
|
|
'published' => [\Carbon\Carbon::now()->toDateTimeString()],
|
|
'syndication' => ['https://www.swarmapp.com/checkin/def'],
|
|
'checkin' => [[
|
|
'type' => ['h-card'],
|
|
'properties' => [
|
|
'name' => ['Awesomer Venue'],
|
|
'url' => ['https://foursquare.com/v/654321'],
|
|
'latitude' => ['3.21'],
|
|
'longitude' => ['6.54'],
|
|
],
|
|
]],
|
|
],
|
|
],
|
|
['HTTP_Authorization' => 'Bearer ' . $this->getToken()]
|
|
);
|
|
$response
|
|
->assertStatus(201)
|
|
->assertJson(['response' => 'created']);
|
|
$this->assertDatabaseHas('places', [
|
|
'external_urls' => '{"foursquare": "https://foursquare.com/v/654321"}'
|
|
]);
|
|
$this->assertDatabaseHas('notes', [
|
|
'swarm_url' => 'https://www.swarmapp.com/checkin/def'
|
|
]);
|
|
$this->get($response->__get('headers')->get('location'))->assertSee('round pushpin');
|
|
}
|
|
|
|
public function test_faked_ownyourswarm_request_saves_just_post_when_error_in_checkin_data()
|
|
{
|
|
$response = $this->json(
|
|
'POST',
|
|
'api/post',
|
|
[
|
|
'type' => ['h-entry'],
|
|
'properties' => [
|
|
'published' => [\Carbon\Carbon::now()->toDateTimeString()],
|
|
'syndication' => ['https://www.swarmapp.com/checkin/abc'],
|
|
'content' => [[
|
|
'value' => 'My first #checkin using Example Product',
|
|
'html' => 'My first #checkin using <a href="http://example.org">Example Product</a>',
|
|
]],
|
|
'checkin' => [[
|
|
'type' => ['h-card'],
|
|
'properties' => [
|
|
'name' => ['Awesome Venue'],
|
|
'url' => ['https://foursquare.com/v/123456'],
|
|
],
|
|
]],
|
|
],
|
|
],
|
|
['HTTP_Authorization' => 'Bearer ' . $this->getToken()]
|
|
);
|
|
$response
|
|
->assertStatus(201)
|
|
->assertJson(['response' => 'created']);
|
|
$this->assertDatabaseMissing('places', [
|
|
'name' => 'Awesome Venue',
|
|
]);
|
|
}
|
|
}
|