- Delete unused Livewire Search test and fuel type select Blade component - Move subscription webhook listener from EventServiceProvider to AppServiceProvider - Add FUEL_TYPES global config to app layout for client-side use - Add Billable trait to User model and include email_verified_at in fillable - Implement monthly/annual cadence toggle with pricing display and smart CTA routing on homepage - Update VerifyApiKeyMiddlewareTest to use e10 instead of petrol - Refactor PollFuelPrices to auto-refresh stale stations based on last_seen_at - Add incremental polling with cached timestamp and effective-start-timestamp param to FuelPriceService - Normalize amenities/fuel_types from API objects to flat arrays, skip stations missing required fields - Log response body on API failures in ApiLogger - Default homepage sort to 'reliable' instead of 'price'
30 lines
923 B
PHP
30 lines
923 B
PHP
<?php
|
|
|
|
use App\Models\User;
|
|
use Laravel\Sanctum\Sanctum;
|
|
|
|
it('rejects requests without api key or sanctum session', function (): void {
|
|
$response = $this->getJson('/api/stations?postcode=SW1A1AA&fuel_type=e10');
|
|
|
|
$response->assertStatus(403);
|
|
});
|
|
|
|
it('accepts requests with valid api key', function (): void {
|
|
config(['app.api_secret_key' => 'test-secret']);
|
|
|
|
$response = $this->withHeader('X-Api-Key', 'test-secret')
|
|
->getJson('/api/stations?postcode=SW1A1AA&fuel_type=e10');
|
|
|
|
// 403 would mean middleware rejected — any other status means it passed through
|
|
expect($response->status())->not->toBe(403);
|
|
});
|
|
|
|
it('accepts requests from sanctum authenticated users', function (): void {
|
|
$user = User::factory()->create();
|
|
Sanctum::actingAs($user);
|
|
|
|
$response = $this->getJson('/api/stations?postcode=SW1A1AA&fuel_type=e10');
|
|
|
|
expect($response->status())->not->toBe(403);
|
|
});
|