0
0
Fork 0
mirror of https://github.com/BookStackApp/BookStack.git synced 2025-04-18 10:28:43 +00:00

Applied latest StyleCI changes

This commit is contained in:
Dan Brown 2021-12-18 11:43:05 +00:00
parent a3ead5062a
commit 04f37e21e2
No known key found for this signature in database
GPG key ID: 46D9F943C24A2EF9
13 changed files with 53 additions and 52 deletions

View file

@ -85,7 +85,7 @@ class ActivityLogger
protected function dispatchWebhooks(string $type, $detail): void protected function dispatchWebhooks(string $type, $detail): void
{ {
$webhooks = Webhook::query() $webhooks = Webhook::query()
->whereHas('trackedEvents', function(Builder $query) use ($type) { ->whereHas('trackedEvents', function (Builder $query) use ($type) {
$query->where('event', '=', $type) $query->where('event', '=', $type)
->orWhere('event', '=', 'all'); ->orWhere('event', '=', 'all');
}) })

View file

@ -109,5 +109,4 @@ class ActivityQueries
return $newActivity; return $newActivity;
} }
}
}

View file

@ -17,7 +17,10 @@ use Illuminate\Support\Facades\Log;
class DispatchWebhookJob implements ShouldQueue class DispatchWebhookJob implements ShouldQueue
{ {
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; use Dispatchable;
use InteractsWithQueue;
use Queueable;
use SerializesModels;
/** /**
* @var Webhook * @var Webhook
@ -86,14 +89,14 @@ class DispatchWebhookJob implements ShouldQueue
$textParts[] = '"' . $this->detail->name . '"'; $textParts[] = '"' . $this->detail->name . '"';
} }
$data = [ $data = [
'event' => $this->event, 'event' => $this->event,
'text' => implode(' ', $textParts), 'text' => implode(' ', $textParts),
'triggered_at' => Carbon::createFromTimestampUTC($this->initiatedTime)->toISOString(), 'triggered_at' => Carbon::createFromTimestampUTC($this->initiatedTime)->toISOString(),
'triggered_by' => $this->initiator->attributesToArray(), 'triggered_by' => $this->initiator->attributesToArray(),
'triggered_by_profile_url' => $this->initiator->getProfileUrl(), 'triggered_by_profile_url' => $this->initiator->getProfileUrl(),
'webhook_id' => $this->webhook->id, 'webhook_id' => $this->webhook->id,
'webhook_name' => $this->webhook->name, 'webhook_name' => $this->webhook->name,
]; ];
if (method_exists($this->detail, 'getUrl')) { if (method_exists($this->detail, 'getUrl')) {

View file

@ -9,11 +9,11 @@ use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\Relations\HasMany;
/** /**
* @property int $id * @property int $id
* @property string $name * @property string $name
* @property string $endpoint * @property string $endpoint
* @property Collection $trackedEvents * @property Collection $trackedEvents
* @property bool $active * @property bool $active
*/ */
class Webhook extends Model implements Loggable class Webhook extends Model implements Loggable
{ {

View file

@ -6,8 +6,8 @@ use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
/** /**
* @property int $id * @property int $id
* @property int $webhook_id * @property int $webhook_id
* @property string $event * @property string $event
*/ */
class WebhookTrackedEvent extends Model class WebhookTrackedEvent extends Model

View file

@ -2,7 +2,6 @@
namespace BookStack\Http\Controllers; namespace BookStack\Http\Controllers;
use Activity;
use BookStack\Actions\ActivityQueries; use BookStack\Actions\ActivityQueries;
use BookStack\Actions\View; use BookStack\Actions\View;
use BookStack\Entities\Models\Book; use BookStack\Entities\Models\Book;

View file

@ -24,6 +24,7 @@ class WebhookController extends Controller
->orderBy('name', 'desc') ->orderBy('name', 'desc')
->with('trackedEvents') ->with('trackedEvents')
->get(); ->get();
return view('settings.webhooks.index', ['webhooks' => $webhooks]); return view('settings.webhooks.index', ['webhooks' => $webhooks]);
} }
@ -41,10 +42,10 @@ class WebhookController extends Controller
public function store(Request $request) public function store(Request $request)
{ {
$validated = $this->validate($request, [ $validated = $this->validate($request, [
'name' => ['required', 'max:150'], 'name' => ['required', 'max:150'],
'endpoint' => ['required', 'url', 'max:500'], 'endpoint' => ['required', 'url', 'max:500'],
'events' => ['required', 'array'], 'events' => ['required', 'array'],
'active' => ['required'], 'active' => ['required'],
]); ]);
$webhook = new Webhook($validated); $webhook = new Webhook($validated);
@ -53,6 +54,7 @@ class WebhookController extends Controller
$webhook->updateTrackedEvents(array_values($validated['events'])); $webhook->updateTrackedEvents(array_values($validated['events']));
$this->logActivity(ActivityType::WEBHOOK_CREATE, $webhook); $this->logActivity(ActivityType::WEBHOOK_CREATE, $webhook);
return redirect('/settings/webhooks'); return redirect('/settings/webhooks');
} }
@ -75,10 +77,10 @@ class WebhookController extends Controller
public function update(Request $request, string $id) public function update(Request $request, string $id)
{ {
$validated = $this->validate($request, [ $validated = $this->validate($request, [
'name' => ['required', 'max:150'], 'name' => ['required', 'max:150'],
'endpoint' => ['required', 'url', 'max:500'], 'endpoint' => ['required', 'url', 'max:500'],
'events' => ['required', 'array'], 'events' => ['required', 'array'],
'active' => ['required'], 'active' => ['required'],
]); ]);
/** @var Webhook $webhook */ /** @var Webhook $webhook */
@ -89,6 +91,7 @@ class WebhookController extends Controller
$webhook->updateTrackedEvents($validated['events']); $webhook->updateTrackedEvents($validated['events']);
$this->logActivity(ActivityType::WEBHOOK_UPDATE, $webhook); $this->logActivity(ActivityType::WEBHOOK_UPDATE, $webhook);
return redirect('/settings/webhooks'); return redirect('/settings/webhooks');
} }
@ -99,6 +102,7 @@ class WebhookController extends Controller
{ {
/** @var Webhook $webhook */ /** @var Webhook $webhook */
$webhook = Webhook::query()->findOrFail($id); $webhook = Webhook::query()->findOrFail($id);
return view('settings.webhooks.delete', ['webhook' => $webhook]); return view('settings.webhooks.delete', ['webhook' => $webhook]);
} }
@ -114,6 +118,7 @@ class WebhookController extends Controller
$webhook->delete(); $webhook->delete();
$this->logActivity(ActivityType::WEBHOOK_DELETE, $webhook); $this->logActivity(ActivityType::WEBHOOK_DELETE, $webhook);
return redirect('/settings/webhooks'); return redirect('/settings/webhooks');
} }
} }

View file

@ -7,7 +7,6 @@ use Illuminate\Database\Eloquent\Factories\Factory;
class WebhookFactory extends Factory class WebhookFactory extends Factory
{ {
protected $model = Webhook::class; protected $model = Webhook::class;
/** /**
@ -18,9 +17,9 @@ class WebhookFactory extends Factory
public function definition() public function definition()
{ {
return [ return [
'name' => 'My webhook for ' . $this->faker->country(), 'name' => 'My webhook for ' . $this->faker->country(),
'endpoint' => $this->faker->url, 'endpoint' => $this->faker->url,
'active' => true, 'active' => true,
]; ];
} }
} }

View file

@ -17,7 +17,7 @@ class WebhookTrackedEventFactory extends Factory
{ {
return [ return [
'webhook_id' => Webhook::factory(), 'webhook_id' => Webhook::factory(),
'event' => ActivityType::all()[array_rand(ActivityType::all())], 'event' => ActivityType::all()[array_rand(ActivityType::all())],
]; ];
} }
} }

View file

@ -2,6 +2,7 @@
namespace Tests\Actions; namespace Tests\Actions;
use function app;
use BookStack\Actions\Activity; use BookStack\Actions\Activity;
use BookStack\Actions\ActivityLogger; use BookStack\Actions\ActivityLogger;
use BookStack\Actions\ActivityType; use BookStack\Actions\ActivityType;
@ -11,9 +12,8 @@ use BookStack\Entities\Models\Page;
use BookStack\Entities\Repos\PageRepo; use BookStack\Entities\Repos\PageRepo;
use BookStack\Entities\Tools\TrashCan; use BookStack\Entities\Tools\TrashCan;
use Carbon\Carbon; use Carbon\Carbon;
use Tests\TestCase;
use function app;
use function config; use function config;
use Tests\TestCase;
class AuditLogTest extends TestCase class AuditLogTest extends TestCase
{ {

View file

@ -15,7 +15,6 @@ use Tests\TestCase;
class WebhookCallTest extends TestCase class WebhookCallTest extends TestCase
{ {
public function test_webhook_listening_to_all_called_on_event() public function test_webhook_listening_to_all_called_on_event()
{ {
$this->newWebhook([], ['all']); $this->newWebhook([], ['all']);
@ -73,8 +72,9 @@ class WebhookCallTest extends TestCase
$this->runEvent(ActivityType::PAGE_UPDATE, $page, $editor); $this->runEvent(ActivityType::PAGE_UPDATE, $page, $editor);
Http::assertSent(function(Request $request) use ($editor, $page, $webhook) { Http::assertSent(function (Request $request) use ($editor, $page, $webhook) {
$reqData = $request->data(); $reqData = $request->data();
return $request->isJson() return $request->isJson()
&& $reqData['event'] === 'page_update' && $reqData['event'] === 'page_update'
&& $reqData['text'] === ($editor->name . ' updated page "' . $page->name . '"') && $reqData['text'] === ($editor->name . ' updated page "' . $page->name . '"')
@ -88,7 +88,6 @@ class WebhookCallTest extends TestCase
}); });
} }
protected function runEvent(string $event, $detail = '', ?User $user = null) protected function runEvent(string $event, $detail = '', ?User $user = null)
{ {
if (is_null($user)) { if (is_null($user)) {
@ -112,5 +111,4 @@ class WebhookCallTest extends TestCase
return $webhook; return $webhook;
} }
}
}

View file

@ -8,11 +8,10 @@ use Tests\TestCase;
class WebhookManagementTest extends TestCase class WebhookManagementTest extends TestCase
{ {
public function test_index_view() public function test_index_view()
{ {
$webhook = $this->newWebhook([ $webhook = $this->newWebhook([
'name' => 'My awesome webhook', 'name' => 'My awesome webhook',
'endpoint' => 'https://example.com/donkey/webhook', 'endpoint' => 'https://example.com/donkey/webhook',
], ['all']); ], ['all']);
@ -36,10 +35,10 @@ class WebhookManagementTest extends TestCase
public function test_store() public function test_store()
{ {
$resp = $this->asAdmin()->post('/settings/webhooks/create', [ $resp = $this->asAdmin()->post('/settings/webhooks/create', [
'name' => 'My first webhook', 'name' => 'My first webhook',
'endpoint' => 'https://example.com/webhook', 'endpoint' => 'https://example.com/webhook',
'events' => ['all'], 'events' => ['all'],
'active' => 'true' 'active' => 'true',
]); ]);
$resp->assertRedirect('/settings/webhooks'); $resp->assertRedirect('/settings/webhooks');
@ -49,16 +48,16 @@ class WebhookManagementTest extends TestCase
$resp->assertSee('Webhook successfully created'); $resp->assertSee('Webhook successfully created');
$this->assertDatabaseHas('webhooks', [ $this->assertDatabaseHas('webhooks', [
'name' => 'My first webhook', 'name' => 'My first webhook',
'endpoint' => 'https://example.com/webhook', 'endpoint' => 'https://example.com/webhook',
'active' => true, 'active' => true,
]); ]);
/** @var Webhook $webhook */ /** @var Webhook $webhook */
$webhook = Webhook::query()->where('name', '=', 'My first webhook')->first(); $webhook = Webhook::query()->where('name', '=', 'My first webhook')->first();
$this->assertDatabaseHas('webhook_tracked_events', [ $this->assertDatabaseHas('webhook_tracked_events', [
'webhook_id' => $webhook->id, 'webhook_id' => $webhook->id,
'event' => 'all', 'event' => 'all',
]); ]);
} }
@ -79,10 +78,10 @@ class WebhookManagementTest extends TestCase
$webhook = $this->newWebhook(); $webhook = $this->newWebhook();
$resp = $this->asAdmin()->put('/settings/webhooks/' . $webhook->id, [ $resp = $this->asAdmin()->put('/settings/webhooks/' . $webhook->id, [
'name' => 'My updated webhook', 'name' => 'My updated webhook',
'endpoint' => 'https://example.com/updated-webhook', 'endpoint' => 'https://example.com/updated-webhook',
'events' => [ActivityType::PAGE_CREATE, ActivityType::PAGE_UPDATE], 'events' => [ActivityType::PAGE_CREATE, ActivityType::PAGE_UPDATE],
'active' => 'true' 'active' => 'true',
]); ]);
$resp->assertRedirect('/settings/webhooks'); $resp->assertRedirect('/settings/webhooks');
@ -90,10 +89,10 @@ class WebhookManagementTest extends TestCase
$resp->assertSee('Webhook successfully updated'); $resp->assertSee('Webhook successfully updated');
$this->assertDatabaseHas('webhooks', [ $this->assertDatabaseHas('webhooks', [
'id' => $webhook->id, 'id' => $webhook->id,
'name' => 'My updated webhook', 'name' => 'My updated webhook',
'endpoint' => 'https://example.com/updated-webhook', 'endpoint' => 'https://example.com/updated-webhook',
'active' => true, 'active' => true,
]); ]);
$trackedEvents = $webhook->trackedEvents()->get(); $trackedEvents = $webhook->trackedEvents()->get();
@ -169,5 +168,4 @@ class WebhookManagementTest extends TestCase
return $webhook; return $webhook;
} }
}
}

View file

@ -407,7 +407,7 @@ class EntitySearchTest extends TestCase
{ {
$this->newPage([ $this->newPage([
'name' => 'Test Page', 'name' => 'Test Page',
'html' => '<p>На мен ми трябва нещо добро test</p>' 'html' => '<p>На мен ми трябва нещо добро test</p>',
]); ]);
$search = $this->asEditor()->get('/search?term=' . urlencode('На мен ми трябва нещо добро')); $search = $this->asEditor()->get('/search?term=' . urlencode('На мен ми трябва нещо добро'));