54 lines
1.5 KiB
PHP
54 lines
1.5 KiB
PHP
<?php
|
|
|
|
namespace Tests\Feature\Api\V1\BadgeScan;
|
|
|
|
use Illuminate\Foundation\Testing\RefreshDatabase;
|
|
use Tests\Concerns\CreatesApiTestUsers;
|
|
use Tests\TestCase;
|
|
|
|
class BadgeScanControllerTest extends TestCase
|
|
{
|
|
use CreatesApiTestUsers;
|
|
use RefreshDatabase;
|
|
|
|
public function test_scan_is_public_but_validates_badge_value(): void
|
|
{
|
|
$this->postJson('/api/v1/badge_scan/scan', [])
|
|
->assertStatus(422)
|
|
->assertJsonPath('status', false);
|
|
}
|
|
|
|
public function test_scan_returns_404_for_unrecognized_badge(): void
|
|
{
|
|
$this->postJson('/api/v1/badge_scan/scan', ['badge_scan' => 'UNKNOWN-BADGE-123'])
|
|
->assertNotFound()
|
|
->assertJsonPath('status', false);
|
|
}
|
|
|
|
public function test_logs_require_authentication(): void
|
|
{
|
|
$this->getJson('/api/v1/badge_scan/logs')
|
|
->assertStatus(401);
|
|
}
|
|
|
|
public function test_logs_are_forbidden_for_non_staff_roles(): void
|
|
{
|
|
$parent = $this->createApiUserWithRole('parent');
|
|
|
|
$this->actingAs($parent, 'api')
|
|
->getJson('/api/v1/badge_scan/logs')
|
|
->assertStatus(403);
|
|
}
|
|
|
|
public function test_logs_return_data_for_staff(): void
|
|
{
|
|
$admin = $this->createApiUserWithRole('administrator');
|
|
|
|
$this->actingAs($admin, 'api')
|
|
->getJson('/api/v1/badge_scan/logs')
|
|
->assertOk()
|
|
->assertJsonPath('status', true)
|
|
->assertJsonStructure(['status', 'data' => ['logs', 'meta']]);
|
|
}
|
|
}
|