Find this useful? Enter your email to receive occasional updates for securing PHP code.
Signing you up...
Thank you for signing up!
PHP Decode
<?php namespace Illuminate\Tests\Integration\Cache; use Exception; use Illuminate\Suppor..
Decoded Output download
<?php
namespace Illuminate\Tests\Integration\Cache;
use Exception;
use Illuminate\Support\Facades\Cache;
use Orchestra\Testbench\Attributes\WithConfig;
use Orchestra\Testbench\TestCase;
#[WithConfig('cache.default', 'file')]
class FileCacheLockTest extends TestCase
{
public function testLocksCanBeAcquiredAndReleased()
{
Cache::lock('foo')->forceRelease();
$lock = Cache::lock('foo', 10);
$this->assertTrue($lock->get());
$this->assertFalse(Cache::lock('foo', 10)->get());
$lock->release();
$lock = Cache::lock('foo', 10);
$this->assertTrue($lock->get());
$this->assertFalse(Cache::lock('foo', 10)->get());
Cache::lock('foo')->release();
}
public function testLocksCanBlockForSeconds()
{
Cache::lock('foo')->forceRelease();
$this->assertSame('taylor', Cache::lock('foo', 10)->block(1, function () {
return 'taylor';
}));
Cache::lock('foo')->forceRelease();
$this->assertTrue(Cache::lock('foo', 10)->block(1));
}
public function testConcurrentLocksAreReleasedSafely()
{
Cache::lock('foo')->forceRelease();
$firstLock = Cache::lock('foo', 1);
$this->assertTrue($firstLock->get());
sleep(2);
$secondLock = Cache::lock('foo', 10);
$this->assertTrue($secondLock->get());
$firstLock->release();
$this->assertFalse(Cache::lock('foo')->get());
}
public function testLocksWithFailedBlockCallbackAreReleased()
{
Cache::lock('foo')->forceRelease();
$firstLock = Cache::lock('foo', 10);
try {
$firstLock->block(1, function () {
throw new Exception('failed');
});
} catch (Exception) {
// Not testing the exception, just testing the lock
// is released regardless of the how the exception
// thrown by the callback was handled.
}
$secondLock = Cache::lock('foo', 1);
$this->assertTrue($secondLock->get());
}
public function testLocksCanBeReleasedUsingOwnerToken()
{
Cache::lock('foo')->forceRelease();
$firstLock = Cache::lock('foo', 10);
$this->assertTrue($firstLock->get());
$owner = $firstLock->owner();
$secondLock = Cache::store('file')->restoreLock('foo', $owner);
$secondLock->release();
$this->assertTrue(Cache::lock('foo')->get());
}
public function testOwnerStatusCanBeCheckedAfterRestoringLock()
{
Cache::lock('foo')->forceRelease();
$firstLock = Cache::lock('foo', 10);
$this->assertTrue($firstLock->get());
$owner = $firstLock->owner();
$secondLock = Cache::store('file')->restoreLock('foo', $owner);
$this->assertTrue($secondLock->isOwnedByCurrentProcess());
}
public function testOtherOwnerDoesNotOwnLockAfterRestore()
{
Cache::lock('foo')->forceRelease();
$firstLock = Cache::lock('foo', 10);
$this->assertTrue($firstLock->isOwnedBy(null));
$this->assertTrue($firstLock->get());
$this->assertTrue($firstLock->isOwnedBy($firstLock->owner()));
$secondLock = Cache::store('file')->restoreLock('foo', 'other_owner');
$this->assertTrue($secondLock->isOwnedBy($firstLock->owner()));
$this->assertFalse($secondLock->isOwnedByCurrentProcess());
}
}
?>
Did this file decode correctly?
Original Code
<?php
namespace Illuminate\Tests\Integration\Cache;
use Exception;
use Illuminate\Support\Facades\Cache;
use Orchestra\Testbench\Attributes\WithConfig;
use Orchestra\Testbench\TestCase;
#[WithConfig('cache.default', 'file')]
class FileCacheLockTest extends TestCase
{
public function testLocksCanBeAcquiredAndReleased()
{
Cache::lock('foo')->forceRelease();
$lock = Cache::lock('foo', 10);
$this->assertTrue($lock->get());
$this->assertFalse(Cache::lock('foo', 10)->get());
$lock->release();
$lock = Cache::lock('foo', 10);
$this->assertTrue($lock->get());
$this->assertFalse(Cache::lock('foo', 10)->get());
Cache::lock('foo')->release();
}
public function testLocksCanBlockForSeconds()
{
Cache::lock('foo')->forceRelease();
$this->assertSame('taylor', Cache::lock('foo', 10)->block(1, function () {
return 'taylor';
}));
Cache::lock('foo')->forceRelease();
$this->assertTrue(Cache::lock('foo', 10)->block(1));
}
public function testConcurrentLocksAreReleasedSafely()
{
Cache::lock('foo')->forceRelease();
$firstLock = Cache::lock('foo', 1);
$this->assertTrue($firstLock->get());
sleep(2);
$secondLock = Cache::lock('foo', 10);
$this->assertTrue($secondLock->get());
$firstLock->release();
$this->assertFalse(Cache::lock('foo')->get());
}
public function testLocksWithFailedBlockCallbackAreReleased()
{
Cache::lock('foo')->forceRelease();
$firstLock = Cache::lock('foo', 10);
try {
$firstLock->block(1, function () {
throw new Exception('failed');
});
} catch (Exception) {
// Not testing the exception, just testing the lock
// is released regardless of the how the exception
// thrown by the callback was handled.
}
$secondLock = Cache::lock('foo', 1);
$this->assertTrue($secondLock->get());
}
public function testLocksCanBeReleasedUsingOwnerToken()
{
Cache::lock('foo')->forceRelease();
$firstLock = Cache::lock('foo', 10);
$this->assertTrue($firstLock->get());
$owner = $firstLock->owner();
$secondLock = Cache::store('file')->restoreLock('foo', $owner);
$secondLock->release();
$this->assertTrue(Cache::lock('foo')->get());
}
public function testOwnerStatusCanBeCheckedAfterRestoringLock()
{
Cache::lock('foo')->forceRelease();
$firstLock = Cache::lock('foo', 10);
$this->assertTrue($firstLock->get());
$owner = $firstLock->owner();
$secondLock = Cache::store('file')->restoreLock('foo', $owner);
$this->assertTrue($secondLock->isOwnedByCurrentProcess());
}
public function testOtherOwnerDoesNotOwnLockAfterRestore()
{
Cache::lock('foo')->forceRelease();
$firstLock = Cache::lock('foo', 10);
$this->assertTrue($firstLock->isOwnedBy(null));
$this->assertTrue($firstLock->get());
$this->assertTrue($firstLock->isOwnedBy($firstLock->owner()));
$secondLock = Cache::store('file')->restoreLock('foo', 'other_owner');
$this->assertTrue($secondLock->isOwnedBy($firstLock->owner()));
$this->assertFalse($secondLock->isOwnedByCurrentProcess());
}
}
Function Calls
None |
Stats
MD5 | b620e5fc00287cae95fb6b8a08cf2189 |
Eval Count | 0 |
Decode Time | 104 ms |