Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F117827813
D5022.1775300710.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Authored By
Unknown
Size
11 KB
Referenced Files
None
Subscribers
None
D5022.1775300710.diff
View Options
diff --git a/src/app/Observers/DomainObserver.php b/src/app/Observers/DomainObserver.php
--- a/src/app/Observers/DomainObserver.php
+++ b/src/app/Observers/DomainObserver.php
@@ -80,7 +80,9 @@
*/
public function updated(Domain $domain)
{
- \App\Jobs\Domain\UpdateJob::dispatch($domain->id);
+ if (!$domain->trashed()) {
+ \App\Jobs\Domain\UpdateJob::dispatch($domain->id);
+ }
}
/**
diff --git a/src/app/Observers/GroupObserver.php b/src/app/Observers/GroupObserver.php
--- a/src/app/Observers/GroupObserver.php
+++ b/src/app/Observers/GroupObserver.php
@@ -63,7 +63,9 @@
*/
public function updated(Group $group)
{
- \App\Jobs\Group\UpdateJob::dispatch($group->id);
+ if (!$group->trashed()) {
+ \App\Jobs\Group\UpdateJob::dispatch($group->id);
+ }
}
/**
diff --git a/src/app/Observers/ResourceObserver.php b/src/app/Observers/ResourceObserver.php
--- a/src/app/Observers/ResourceObserver.php
+++ b/src/app/Observers/ResourceObserver.php
@@ -74,7 +74,9 @@
*/
public function updated(Resource $resource)
{
- \App\Jobs\Resource\UpdateJob::dispatch($resource->id);
+ if (!$resource->trashed()) {
+ \App\Jobs\Resource\UpdateJob::dispatch($resource->id);
+ }
// Update the folder property if name changed
if ($resource->name != $resource->getOriginal('name')) {
diff --git a/src/app/Observers/SharedFolderObserver.php b/src/app/Observers/SharedFolderObserver.php
--- a/src/app/Observers/SharedFolderObserver.php
+++ b/src/app/Observers/SharedFolderObserver.php
@@ -78,7 +78,9 @@
*/
public function updated(SharedFolder $folder)
{
- \App\Jobs\SharedFolder\UpdateJob::dispatch($folder->id);
+ if (!$folder->trashed()) {
+ \App\Jobs\SharedFolder\UpdateJob::dispatch($folder->id);
+ }
// Update the folder property if name changed
if ($folder->name != $folder->getOriginal('name')) {
diff --git a/src/app/Observers/UserObserver.php b/src/app/Observers/UserObserver.php
--- a/src/app/Observers/UserObserver.php
+++ b/src/app/Observers/UserObserver.php
@@ -163,7 +163,9 @@
*/
public function updated(User $user)
{
- \App\Jobs\User\UpdateJob::dispatch($user->id);
+ if (!$user->trashed()) {
+ \App\Jobs\User\UpdateJob::dispatch($user->id);
+ }
$oldStatus = $user->getOriginal('status');
$newStatus = $user->status;
diff --git a/src/tests/Feature/DomainTest.php b/src/tests/Feature/DomainTest.php
--- a/src/tests/Feature/DomainTest.php
+++ b/src/tests/Feature/DomainTest.php
@@ -255,15 +255,23 @@
$this->assertTrue($domain->fresh()->trashed());
$this->assertFalse($domain->fresh()->isDeleted());
+ Queue::assertPushed(\App\Jobs\Domain\DeleteJob::class, 1);
+ Queue::assertPushed(\App\Jobs\Domain\UpdateJob::class, 0);
+
// Delete the domain for real
$job = new \App\Jobs\Domain\DeleteJob($domain->id);
$job->handle();
$this->assertTrue(Domain::withTrashed()->where('id', $domain->id)->first()->isDeleted());
+ Queue::fake();
+
$domain->forceDelete();
$this->assertCount(0, Domain::withTrashed()->where('id', $domain->id)->get());
+
+ Queue::assertPushed(\App\Jobs\Domain\DeleteJob::class, 0);
+ Queue::assertPushed(\App\Jobs\Domain\UpdateJob::class, 0);
}
/**
diff --git a/src/tests/Feature/GroupTest.php b/src/tests/Feature/GroupTest.php
--- a/src/tests/Feature/GroupTest.php
+++ b/src/tests/Feature/GroupTest.php
@@ -115,11 +115,7 @@
$this->assertSame(0, $entitlements->count());
$this->assertSame(1, $entitlements->withTrashed()->count());
- $group->forceDelete();
-
- $this->assertSame(0, $entitlements->withTrashed()->count());
- $this->assertCount(0, Group::withTrashed()->where('id', $group->id)->get());
-
+ Queue::assertPushed(\App\Jobs\Group\UpdateJob::class, 0);
Queue::assertPushed(\App\Jobs\Group\DeleteJob::class, 1);
Queue::assertPushed(
\App\Jobs\Group\DeleteJob::class,
@@ -131,6 +127,16 @@
&& $groupId === $group->id;
}
);
+
+ Queue::fake();
+
+ $group->forceDelete();
+
+ $this->assertSame(0, $entitlements->withTrashed()->count());
+ $this->assertCount(0, Group::withTrashed()->where('id', $group->id)->get());
+
+ Queue::assertPushed(\App\Jobs\Group\UpdateJob::class, 0);
+ Queue::assertPushed(\App\Jobs\Group\DeleteJob::class, 0);
}
/**
diff --git a/src/tests/Feature/Jobs/Group/DeleteTest.php b/src/tests/Feature/Jobs/Group/DeleteTest.php
--- a/src/tests/Feature/Jobs/Group/DeleteTest.php
+++ b/src/tests/Feature/Jobs/Group/DeleteTest.php
@@ -49,6 +49,9 @@
$this->assertFalse($group->isLdapReady());
}
+ $group->deleted_at = \now();
+ $group->saveQuietly();
+
Queue::fake();
$job = new \App\Jobs\Group\DeleteJob($group->id);
@@ -58,6 +61,8 @@
$this->assertFalse($group->isLdapReady());
$this->assertTrue($group->isDeleted());
+
+ Queue::assertPushed(\App\Jobs\Group\UpdateJob::class, 0);
/*
Queue::assertPushed(\App\Jobs\IMAP\AclCleanupJob::class, 1);
Queue::assertPushed(
diff --git a/src/tests/Feature/Jobs/Resource/DeleteTest.php b/src/tests/Feature/Jobs/Resource/DeleteTest.php
--- a/src/tests/Feature/Jobs/Resource/DeleteTest.php
+++ b/src/tests/Feature/Jobs/Resource/DeleteTest.php
@@ -56,6 +56,10 @@
$this->assertTrue($resource->isImapReady());
$this->assertFalse($resource->isDeleted());
+ $resource->deleted_at = \now();
+ $resource->saveQuietly();
+ Queue::fake();
+
// Test successful deletion
$job = new \App\Jobs\Resource\DeleteJob($resource->id);
$job->handle();
@@ -66,6 +70,8 @@
$this->assertFalse($resource->isImapReady());
$this->assertTrue($resource->isDeleted());
+ Queue::assertPushed(\App\Jobs\Resource\UpdateJob::class, 0);
+
// Test deleting already deleted resource
$job = new \App\Jobs\Resource\DeleteJob($resource->id);
$job->handle();
diff --git a/src/tests/Feature/Jobs/SharedFolder/DeleteTest.php b/src/tests/Feature/Jobs/SharedFolder/DeleteTest.php
--- a/src/tests/Feature/Jobs/SharedFolder/DeleteTest.php
+++ b/src/tests/Feature/Jobs/SharedFolder/DeleteTest.php
@@ -60,6 +60,10 @@
$this->assertTrue($folder->isImapReady());
$this->assertFalse($folder->isDeleted());
+ $folder->deleted_at = \now();
+ $folder->saveQuietly();
+ Queue::fake();
+
// Test successful deletion
$job = new \App\Jobs\SharedFolder\DeleteJob($folder->id);
$job->handle();
@@ -70,6 +74,8 @@
$this->assertFalse($folder->isImapReady());
$this->assertTrue($folder->isDeleted());
+ Queue::assertPushed(\App\Jobs\SharedFolder\UpdateJob::class, 0);
+
// Test deleting already deleted folder
$job = new \App\Jobs\SharedFolder\DeleteJob($folder->id);
$job->handle();
diff --git a/src/tests/Feature/Jobs/User/DeleteTest.php b/src/tests/Feature/Jobs/User/DeleteTest.php
--- a/src/tests/Feature/Jobs/User/DeleteTest.php
+++ b/src/tests/Feature/Jobs/User/DeleteTest.php
@@ -71,9 +71,13 @@
// Test success delete from LDAP, IMAP and Roundcube
$user->status ^= User::STATUS_DELETED;
- $user->save();
+ $user->deleted_at = \now();
+ $user->saveQuietly();
$this->assertFalse($user->isDeleted());
+ $this->assertTrue($user->trashed());
+
+ Queue::fake();
$job = new \App\Jobs\User\DeleteJob($user->id);
$job->handle();
@@ -86,6 +90,8 @@
$this->assertTrue($user->isDeleted());
$this->assertNull($rcdb->table('users')->where('username', $user->email)->first());
+ Queue::assertPushed(\App\Jobs\User\UpdateJob::class, 0);
+
/*
if (\config('app.with_imap')) {
Queue::assertPushed(\App\Jobs\IMAP\AclCleanupJob::class, 1);
diff --git a/src/tests/Feature/ResourceTest.php b/src/tests/Feature/ResourceTest.php
--- a/src/tests/Feature/ResourceTest.php
+++ b/src/tests/Feature/ResourceTest.php
@@ -156,11 +156,7 @@
$this->assertSame(0, $entitlements->count());
$this->assertSame(1, $entitlements->withTrashed()->count());
- $resource->forceDelete();
-
- $this->assertSame(0, $entitlements->withTrashed()->count());
- $this->assertCount(0, Resource::withTrashed()->where('id', $resource->id)->get());
-
+ Queue::assertPushed(\App\Jobs\Resource\UpdateJob::class, 0);
Queue::assertPushed(\App\Jobs\Resource\DeleteJob::class, 1);
Queue::assertPushed(
\App\Jobs\Resource\DeleteJob::class,
@@ -172,6 +168,16 @@
&& $resourceId === $resource->id;
}
);
+
+ Queue::fake();
+
+ $resource->forceDelete();
+
+ $this->assertSame(0, $entitlements->withTrashed()->count());
+ $this->assertCount(0, Resource::withTrashed()->where('id', $resource->id)->get());
+
+ Queue::assertPushed(\App\Jobs\Resource\UpdateJob::class, 0);
+ Queue::assertPushed(\App\Jobs\Resource\DeleteJob::class, 0);
}
/**
diff --git a/src/tests/Feature/SharedFolderTest.php b/src/tests/Feature/SharedFolderTest.php
--- a/src/tests/Feature/SharedFolderTest.php
+++ b/src/tests/Feature/SharedFolderTest.php
@@ -220,11 +220,7 @@
$this->assertSame(0, $entitlements->count());
$this->assertSame(1, $entitlements->withTrashed()->count());
- $folder->forceDelete();
-
- $this->assertSame(0, $entitlements->withTrashed()->count());
- $this->assertCount(0, SharedFolder::withTrashed()->where('id', $folder->id)->get());
-
+ Queue::assertPushed(\App\Jobs\SharedFolder\UpdateJob::class, 0);
Queue::assertPushed(\App\Jobs\SharedFolder\DeleteJob::class, 1);
Queue::assertPushed(
\App\Jobs\SharedFolder\DeleteJob::class,
@@ -236,6 +232,16 @@
&& $folderId === $folder->id;
}
);
+
+ Queue::fake();
+
+ $folder->forceDelete();
+
+ $this->assertSame(0, $entitlements->withTrashed()->count());
+ $this->assertCount(0, SharedFolder::withTrashed()->where('id', $folder->id)->get());
+
+ Queue::assertPushed(\App\Jobs\SharedFolder\UpdateJob::class, 0);
+ Queue::assertPushed(\App\Jobs\SharedFolder\DeleteJob::class, 0);
}
/**
diff --git a/src/tests/Feature/UserTest.php b/src/tests/Feature/UserTest.php
--- a/src/tests/Feature/UserTest.php
+++ b/src/tests/Feature/UserTest.php
@@ -748,22 +748,32 @@
$this->assertCount(7, $user->entitlements()->get());
+ Queue::fake();
+
$user->delete();
$this->assertCount(0, $user->entitlements()->get());
$this->assertTrue($user->fresh()->trashed());
$this->assertFalse($user->fresh()->isDeleted());
+ Queue::assertPushed(\App\Jobs\User\DeleteJob::class, 1);
+ Queue::assertPushed(\App\Jobs\User\UpdateJob::class, 0);
+
// Delete the user for real
$job = new \App\Jobs\User\DeleteJob($id);
$job->handle();
$this->assertTrue(User::withTrashed()->where('id', $id)->first()->isDeleted());
+ Queue::fake();
+
$user->forceDelete();
$this->assertCount(0, User::withTrashed()->where('id', $id)->get());
+ Queue::assertPushed(\App\Jobs\User\DeleteJob::class, 0);
+ Queue::assertPushed(\App\Jobs\User\UpdateJob::class, 0);
+
// Test an account with users, domain, and group, and resource
$userA = $this->getTestUser('UserAccountA@UserAccount.com');
$userB = $this->getTestUser('UserAccountB@UserAccount.com');
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sat, Apr 4, 11:05 AM (8 h, 12 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
18828825
Default Alt Text
D5022.1775300710.diff (11 KB)
Attached To
Mode
D5022: Don't dispatch update jobs on deleted objects
Attached
Detach File
Event Timeline