123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- <?php
- namespace Illuminate\Tests\Integration\Queue;
- use Illuminate\Bus\Queueable;
- use Illuminate\Contracts\Encryption\DecryptException;
- use Illuminate\Contracts\Queue\ShouldBeEncrypted;
- use Illuminate\Contracts\Queue\ShouldQueue;
- use Illuminate\Database\Schema\Blueprint;
- use Illuminate\Foundation\Bus\Dispatchable;
- use Illuminate\Support\Facades\Bus;
- use Illuminate\Support\Facades\DB;
- use Illuminate\Support\Facades\Queue;
- use Illuminate\Support\Facades\Schema;
- use Illuminate\Support\Str;
- use Illuminate\Tests\Integration\Database\DatabaseTestCase;
- class JobEncryptionTest extends DatabaseTestCase
- {
- protected function getEnvironmentSetUp($app)
- {
- parent::getEnvironmentSetUp($app);
- $app['config']->set('app.key', Str::random(32));
- $app['config']->set('queue.default', 'database');
- }
- protected function setUp(): void
- {
- parent::setUp();
- Schema::create('jobs', function (Blueprint $table) {
- $table->bigIncrements('id');
- $table->string('queue')->index();
- $table->longText('payload');
- $table->unsignedTinyInteger('attempts');
- $table->unsignedInteger('reserved_at')->nullable();
- $table->unsignedInteger('available_at');
- $table->unsignedInteger('created_at');
- });
- }
- protected function tearDown(): void
- {
- JobEncryptionTestEncryptedJob::$ran = false;
- JobEncryptionTestNonEncryptedJob::$ran = false;
- parent::tearDown();
- }
- public function testEncryptedJobPayloadIsStoredEncrypted()
- {
- Bus::dispatch(new JobEncryptionTestEncryptedJob);
- $this->assertNotEmpty(
- decrypt(json_decode(DB::table('jobs')->first()->payload)->data->command)
- );
- }
- public function testNonEncryptedJobPayloadIsStoredRaw()
- {
- Bus::dispatch(new JobEncryptionTestNonEncryptedJob);
- $this->expectException(DecryptException::class);
- $this->expectExceptionMessage('The payload is invalid');
- $this->assertInstanceOf(JobEncryptionTestNonEncryptedJob::class,
- unserialize(json_decode(DB::table('jobs')->first()->payload)->data->command)
- );
- decrypt(json_decode(DB::table('jobs')->first()->payload)->data->command);
- }
- public function testQueueCanProcessEncryptedJob()
- {
- Bus::dispatch(new JobEncryptionTestEncryptedJob);
- Queue::pop()->fire();
- $this->assertTrue(JobEncryptionTestEncryptedJob::$ran);
- }
- public function testQueueCanProcessUnEncryptedJob()
- {
- Bus::dispatch(new JobEncryptionTestNonEncryptedJob);
- Queue::pop()->fire();
- $this->assertTrue(JobEncryptionTestNonEncryptedJob::$ran);
- }
- }
- class JobEncryptionTestEncryptedJob implements ShouldQueue, ShouldBeEncrypted
- {
- use Dispatchable, Queueable;
- public static $ran = false;
- public function handle()
- {
- static::$ran = true;
- }
- }
- class JobEncryptionTestNonEncryptedJob implements ShouldQueue
- {
- use Dispatchable, Queueable;
- public static $ran = false;
- public function handle()
- {
- static::$ran = true;
- }
- }
|