46 lines
1.8 KiB
PHP
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);
|
|
}
|
|
}
|