health(); Storage::fake('local'); config(['queue.default' => 'database', 'portal.managers' => []]); $manager = User::factory()->create(['email_verified_at' => now()]); config(['portal.managers' => [$manager->email]]); $this->actingAs($manager)->post('/management/portal-services/upload', [ 'file' => UploadedFile::fake()->createWithContent('queue-worker-qa.txt', 'Harmless private queue worker integration test.'), ])->assertSessionHasNoErrors(); $document = DB::table('documents')->where('file_name', 'queue-worker-qa.txt')->firstOrFail(); $this->assertSame('pending', $document->malware_scan_status); $this->assertSame('quarantined', $document->status); ScanDocumentForMalware::dispatch($document->id)->onConnection('database')->onQueue('default'); Artisan::call('queue:work', ['connection' => 'database', '--once' => true, '--tries' => 3, '--timeout' => 150, '--queue' => 'default']); $document = DB::table('documents')->where('id', $document->id)->firstOrFail(); if ($health['available']) { $this->assertSame('clean', $document->malware_scan_status); $this->assertSame('active', $document->status); $this->assertSame($document->sha256, $document->malware_scanned_sha256); } else { $this->assertSame('inconclusive', $document->malware_scan_status); $this->assertSame('quarantined', $document->status); } $this->assertSame('internal', $document->data_classification); $this->assertSame(0, DB::table('portal_resources')->count()); $this->assertDatabaseHas('document_malware_scans', ['document_id' => $document->id, 'result' => $health['available'] ? 'clean' : 'inconclusive']); } }