koel/tests/Feature/ObjectStorage/S3Test.php

65 lines
1.8 KiB
PHP
Raw Normal View History

2016-06-13 09:04:42 +00:00
<?php
2017-02-14 06:53:02 +00:00
namespace Tests\Feature\ObjectStorage;
2018-08-24 15:27:19 +00:00
use App\Models\Song;
2016-06-13 09:04:42 +00:00
use Illuminate\Foundation\Testing\WithoutMiddleware;
2024-01-09 18:34:40 +00:00
use Tests\TestCase;
2016-06-13 09:04:42 +00:00
2024-01-18 11:13:05 +00:00
use function Tests\create_admin;
2017-08-05 16:56:11 +00:00
class S3Test extends TestCase
2016-06-13 09:04:42 +00:00
{
2017-08-05 16:56:11 +00:00
use WithoutMiddleware;
2016-06-13 09:04:42 +00:00
2019-07-22 07:03:23 +00:00
public function setUp(): void
2017-02-14 06:53:02 +00:00
{
parent::setUp();
2017-06-11 00:15:28 +00:00
$this->disableMiddlewareForAllTests();
2024-01-18 11:13:05 +00:00
// ensure there's a default admin user
create_admin();
2017-02-14 06:53:02 +00:00
}
2019-07-22 07:03:23 +00:00
public function testStoringASong(): void
2016-06-13 09:04:42 +00:00
{
$this->post('api/os/s3/song', [
'bucket' => 'koel',
'key' => 'sample.mp3',
'tags' => [
'title' => 'A Koel Song',
'album' => 'Koel Testing Vol. 1',
'artist' => 'Koel',
'lyrics' => "When you wake up, turn your radio on, and you'll hear this simple song",
'duration' => 10,
'track' => 5,
],
2024-01-18 11:13:05 +00:00
])->assertSuccessful();
2020-09-06 18:21:39 +00:00
/** @var Song $song */
$song = Song::query()->where('path', 's3://koel/sample.mp3')->firstOrFail();
self::assertSame('A Koel Song', $song->title);
self::assertSame('Koel Testing Vol. 1', $song->album->name);
self::assertSame('Koel', $song->artist->name);
self::assertSame('When you wake up, turn your radio on, and you\'ll hear this simple song', $song->lyrics);
2022-10-07 14:25:44 +00:00
self::assertSame(10, (int) $song->length);
self::assertSame(5, $song->track);
2016-06-13 09:04:42 +00:00
}
2019-07-22 07:03:23 +00:00
public function testRemovingASong(): void
2016-06-13 09:04:42 +00:00
{
Song::factory()->create([
2018-08-24 15:27:19 +00:00
'path' => 's3://koel/sample.mp3',
]);
2016-06-13 09:04:42 +00:00
$this->delete('api/os/s3/song', [
'bucket' => 'koel',
'key' => 'sample.mp3',
2020-09-06 18:21:39 +00:00
]);
self::assertDatabaseMissing(Song::class, ['path' => 's3://koel/sample.mp3']);
2016-06-13 09:04:42 +00:00
}
}