Files

46 lines
1.8 KiB
PHP

<?php
namespace Tests\Feature;
use App\Models\SonarDeskRelease;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Support\Facades\Storage;
use Tests\TestCase;
final class ReleaseDistributionTest extends TestCase
{
use RefreshDatabase;
public function test_download_page_is_public(): void
{
$this->get('/release')->assertOk()->assertSee('Download SonarDesk');
}
public function test_latest_download_returns_published_package(): void
{
Storage::fake('local');
Storage::disk('local')->put('sonardesk/releases/SonarDesk.dmg', 'package');
SonarDeskRelease::create([
'version' => '1.2.0', 'build_number' => 120, 'channel' => 'stable',
'file_path' => 'sonardesk/releases/SonarDesk.dmg', 'original_filename' => 'SonarDesk-1.2.0.dmg',
'file_size' => 7, 'sha256' => hash('sha256', 'package'), 'is_published' => true, 'published_at' => now(),
]);
$this->get('/download')->assertOk()->assertDownload('SonarDesk-1.2.0.dmg');
}
public function test_draft_release_is_not_downloadable(): void
{
$release = SonarDeskRelease::create(['version'=>'1.0.0','build_number'=>1,'channel'=>'stable','is_published'=>false]);
$this->get('/downloads/'.$release->id)->assertNotFound();
}
public function test_appcast_contains_published_release(): void
{
SonarDeskRelease::create([
'version'=>'2.0.0','build_number'=>200,'channel'=>'stable','file_path'=>'sonardesk/releases/a.dmg',
'original_filename'=>'a.dmg','file_size'=>10,'sha256'=>str_repeat('a',64),'is_published'=>true,'published_at'=>now(),
]);
$this->get('/updates/appcast.xml')->assertOk()->assertSee('SonarDesk 2.0.0')->assertSee('sparkle:version', false);
}
}