postJson('/api/files/upload', [ 'file' => UploadedFile::fake()->create('sample.txt', 1), ]); $response->assertNotFound(); } public function test_it_uploads_file_and_downloads_it_via_temporary_signed_link(): void { Storage::fake('local'); Config::set('file_links.enabled', true); Config::set('file_links.disk', 'local'); Config::set('file_links.directory', 'temporary-links'); $response = $this->postJson('/api/files/upload', [ 'file' => UploadedFile::fake()->create('sample.txt', 1), ]); $response->assertOk(); $response->assertJsonStructure(['path', 'expiresAt', 'url']); $path = $response->json('path'); Storage::disk('local')->assertExists($path); $url = $response->json('url'); $parts = parse_url($url); $routePath = $parts['path']; if (isset($parts['query'])) { $routePath .= '?' . $parts['query']; } $downloadResponse = $this->get($routePath); $downloadResponse->assertOk(); $downloadResponse->assertHeader('content-disposition'); } }