Skip to content

Commit

Permalink
add integration tests
Browse files Browse the repository at this point in the history
  • Loading branch information
themsaid committed Dec 10, 2020
1 parent 4460bda commit 9849131
Showing 1 changed file with 126 additions and 0 deletions.
126 changes: 126 additions & 0 deletions tests/Integration/Queue/JobEncryptionTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,126 @@
<?php

namespace Illuminate\Tests\Integration\Queue;

use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Encryption\Encrypter;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Contracts\Queue\UsesEncryption;
use Illuminate\Database\DatabaseTransactionsManager;
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;
use Illuminate\Tests\Integration\Database\EloquentCollectionLoadMissingTest\Comment;
use Illuminate\Tests\Integration\Database\EloquentCollectionLoadMissingTest\Post;
use Illuminate\Tests\Integration\Database\EloquentCollectionLoadMissingTest\Revision;
use Illuminate\Tests\Integration\Database\EloquentCollectionLoadMissingTest\User;
use Mockery as m;
use Orchestra\Testbench\TestCase;

/**
* @group integration
*/
class JobEncryptionTest extends DatabaseTestCase
{
protected function getEnvironmentSetUp($app)
{
parent::getEnvironmentSetUp($app);

$app['config']->set('app.key', Str::random(32));
$app['config']->set('app.debug', 'true');
$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;

m::close();
}

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->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, UsesEncryption
{
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;
}
}

0 comments on commit 9849131

Please sign in to comment.