2017-12-12 12:05:22 +08:00
|
|
|
<?php
|
|
|
|
|
2017-12-29 11:17:26 +08:00
|
|
|
#use Swagger\Serializer;
|
2018-01-01 23:32:04 +08:00
|
|
|
use App\Models\User;
|
2017-12-29 11:17:26 +08:00
|
|
|
|
2017-12-12 12:05:22 +08:00
|
|
|
/**
|
|
|
|
* Test API calls and authentication, etc
|
|
|
|
*/
|
|
|
|
class ApiTest extends TestCase
|
|
|
|
{
|
|
|
|
public function setUp()
|
|
|
|
{
|
|
|
|
parent::setUp();
|
|
|
|
$this->addData('base');
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Ensure authentication against the API works
|
|
|
|
*/
|
|
|
|
public function testApiAuthentication()
|
|
|
|
{
|
2018-01-01 23:32:04 +08:00
|
|
|
$user = factory(User::class)->create();
|
2017-12-13 11:50:55 +08:00
|
|
|
$airport = factory(App\Models\Airport::class)->create();
|
|
|
|
|
|
|
|
$uri = '/api/airports/' . $airport->icao;
|
2017-12-12 12:05:22 +08:00
|
|
|
|
|
|
|
// Missing auth header
|
|
|
|
$this->get($uri)->assertStatus(401);
|
|
|
|
|
|
|
|
// Test invalid API key
|
|
|
|
$this->withHeaders(['Authorization' => 'invalidKey'])->get($uri)
|
|
|
|
->assertStatus(401);
|
|
|
|
|
2017-12-31 03:02:22 +08:00
|
|
|
$this->withHeaders(['Authorization' => ''])->get($uri)
|
|
|
|
->assertStatus(401);
|
|
|
|
|
2017-12-12 12:05:22 +08:00
|
|
|
// Test upper/lower case of Authorization header, etc
|
2017-12-13 10:14:01 +08:00
|
|
|
$this->withHeaders($this->apiHeaders())->get($uri)
|
2017-12-12 12:05:22 +08:00
|
|
|
->assertStatus(200)
|
2017-12-13 11:50:55 +08:00
|
|
|
->assertJson(['icao' => $airport->icao], true);
|
2017-12-12 12:05:22 +08:00
|
|
|
|
2018-01-01 23:32:04 +08:00
|
|
|
$this->withHeaders(['x-api-key' => $user->api_key])->get($uri)
|
2017-12-31 02:42:45 +08:00
|
|
|
->assertStatus(200)
|
|
|
|
->assertJson(['icao' => $airport->icao], true);
|
|
|
|
|
2018-01-01 23:32:04 +08:00
|
|
|
$this->withHeaders(['x-API-key' => $user->api_key])->get($uri)
|
2017-12-12 12:05:22 +08:00
|
|
|
->assertStatus(200)
|
2017-12-13 11:50:55 +08:00
|
|
|
->assertJson(['icao' => $airport->icao], true);
|
2017-12-31 02:42:45 +08:00
|
|
|
|
2018-01-01 23:32:04 +08:00
|
|
|
$this->withHeaders(['X-API-KEY' => $user->api_key])->get($uri)
|
2017-12-31 02:42:45 +08:00
|
|
|
->assertStatus(200)
|
|
|
|
->assertJson(['icao' => $airport->icao], true);
|
2017-12-12 12:05:22 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Make sure the airport data is returned
|
|
|
|
*/
|
|
|
|
public function testAirportRequest()
|
|
|
|
{
|
2017-12-13 11:50:55 +08:00
|
|
|
$airport = factory(App\Models\Airport::class)->create();
|
|
|
|
|
2017-12-29 11:17:26 +08:00
|
|
|
$response = $this->withHeaders($this->apiHeaders())->get('/api/airports/' . $airport->icao);
|
|
|
|
$response->assertStatus(200);
|
|
|
|
$response->assertJson(['icao' => $airport->icao], true);
|
|
|
|
|
2017-12-13 10:14:01 +08:00
|
|
|
$this->withHeaders($this->apiHeaders())->get('/api/airports/UNK')
|
2017-12-12 12:05:22 +08:00
|
|
|
->assertStatus(404);
|
|
|
|
}
|
|
|
|
}
|