mirror of
https://github.com/BookStackApp/BookStack.git
synced 2025-03-21 11:45:13 +08:00
Applied latest StyleCI changes
This commit is contained in:
parent
a3ead5062a
commit
04f37e21e2
@ -85,7 +85,7 @@ class ActivityLogger
|
||||
protected function dispatchWebhooks(string $type, $detail): void
|
||||
{
|
||||
$webhooks = Webhook::query()
|
||||
->whereHas('trackedEvents', function(Builder $query) use ($type) {
|
||||
->whereHas('trackedEvents', function (Builder $query) use ($type) {
|
||||
$query->where('event', '=', $type)
|
||||
->orWhere('event', '=', 'all');
|
||||
})
|
||||
|
@ -109,5 +109,4 @@ class ActivityQueries
|
||||
|
||||
return $newActivity;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -17,7 +17,10 @@ use Illuminate\Support\Facades\Log;
|
||||
|
||||
class DispatchWebhookJob implements ShouldQueue
|
||||
{
|
||||
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
|
||||
use Dispatchable;
|
||||
use InteractsWithQueue;
|
||||
use Queueable;
|
||||
use SerializesModels;
|
||||
|
||||
/**
|
||||
* @var Webhook
|
||||
@ -86,14 +89,14 @@ class DispatchWebhookJob implements ShouldQueue
|
||||
$textParts[] = '"' . $this->detail->name . '"';
|
||||
}
|
||||
|
||||
$data = [
|
||||
'event' => $this->event,
|
||||
'text' => implode(' ', $textParts),
|
||||
'triggered_at' => Carbon::createFromTimestampUTC($this->initiatedTime)->toISOString(),
|
||||
'triggered_by' => $this->initiator->attributesToArray(),
|
||||
$data = [
|
||||
'event' => $this->event,
|
||||
'text' => implode(' ', $textParts),
|
||||
'triggered_at' => Carbon::createFromTimestampUTC($this->initiatedTime)->toISOString(),
|
||||
'triggered_by' => $this->initiator->attributesToArray(),
|
||||
'triggered_by_profile_url' => $this->initiator->getProfileUrl(),
|
||||
'webhook_id' => $this->webhook->id,
|
||||
'webhook_name' => $this->webhook->name,
|
||||
'webhook_id' => $this->webhook->id,
|
||||
'webhook_name' => $this->webhook->name,
|
||||
];
|
||||
|
||||
if (method_exists($this->detail, 'getUrl')) {
|
||||
|
@ -9,11 +9,11 @@ use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\Relations\HasMany;
|
||||
|
||||
/**
|
||||
* @property int $id
|
||||
* @property string $name
|
||||
* @property string $endpoint
|
||||
* @property int $id
|
||||
* @property string $name
|
||||
* @property string $endpoint
|
||||
* @property Collection $trackedEvents
|
||||
* @property bool $active
|
||||
* @property bool $active
|
||||
*/
|
||||
class Webhook extends Model implements Loggable
|
||||
{
|
||||
|
@ -6,8 +6,8 @@ use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
/**
|
||||
* @property int $id
|
||||
* @property int $webhook_id
|
||||
* @property int $id
|
||||
* @property int $webhook_id
|
||||
* @property string $event
|
||||
*/
|
||||
class WebhookTrackedEvent extends Model
|
||||
|
@ -2,7 +2,6 @@
|
||||
|
||||
namespace BookStack\Http\Controllers;
|
||||
|
||||
use Activity;
|
||||
use BookStack\Actions\ActivityQueries;
|
||||
use BookStack\Actions\View;
|
||||
use BookStack\Entities\Models\Book;
|
||||
|
@ -24,6 +24,7 @@ class WebhookController extends Controller
|
||||
->orderBy('name', 'desc')
|
||||
->with('trackedEvents')
|
||||
->get();
|
||||
|
||||
return view('settings.webhooks.index', ['webhooks' => $webhooks]);
|
||||
}
|
||||
|
||||
@ -41,10 +42,10 @@ class WebhookController extends Controller
|
||||
public function store(Request $request)
|
||||
{
|
||||
$validated = $this->validate($request, [
|
||||
'name' => ['required', 'max:150'],
|
||||
'name' => ['required', 'max:150'],
|
||||
'endpoint' => ['required', 'url', 'max:500'],
|
||||
'events' => ['required', 'array'],
|
||||
'active' => ['required'],
|
||||
'events' => ['required', 'array'],
|
||||
'active' => ['required'],
|
||||
]);
|
||||
|
||||
$webhook = new Webhook($validated);
|
||||
@ -53,6 +54,7 @@ class WebhookController extends Controller
|
||||
$webhook->updateTrackedEvents(array_values($validated['events']));
|
||||
|
||||
$this->logActivity(ActivityType::WEBHOOK_CREATE, $webhook);
|
||||
|
||||
return redirect('/settings/webhooks');
|
||||
}
|
||||
|
||||
@ -75,10 +77,10 @@ class WebhookController extends Controller
|
||||
public function update(Request $request, string $id)
|
||||
{
|
||||
$validated = $this->validate($request, [
|
||||
'name' => ['required', 'max:150'],
|
||||
'name' => ['required', 'max:150'],
|
||||
'endpoint' => ['required', 'url', 'max:500'],
|
||||
'events' => ['required', 'array'],
|
||||
'active' => ['required'],
|
||||
'events' => ['required', 'array'],
|
||||
'active' => ['required'],
|
||||
]);
|
||||
|
||||
/** @var Webhook $webhook */
|
||||
@ -89,6 +91,7 @@ class WebhookController extends Controller
|
||||
$webhook->updateTrackedEvents($validated['events']);
|
||||
|
||||
$this->logActivity(ActivityType::WEBHOOK_UPDATE, $webhook);
|
||||
|
||||
return redirect('/settings/webhooks');
|
||||
}
|
||||
|
||||
@ -99,6 +102,7 @@ class WebhookController extends Controller
|
||||
{
|
||||
/** @var Webhook $webhook */
|
||||
$webhook = Webhook::query()->findOrFail($id);
|
||||
|
||||
return view('settings.webhooks.delete', ['webhook' => $webhook]);
|
||||
}
|
||||
|
||||
@ -114,6 +118,7 @@ class WebhookController extends Controller
|
||||
$webhook->delete();
|
||||
|
||||
$this->logActivity(ActivityType::WEBHOOK_DELETE, $webhook);
|
||||
|
||||
return redirect('/settings/webhooks');
|
||||
}
|
||||
}
|
||||
|
@ -7,7 +7,6 @@ use Illuminate\Database\Eloquent\Factories\Factory;
|
||||
|
||||
class WebhookFactory extends Factory
|
||||
{
|
||||
|
||||
protected $model = Webhook::class;
|
||||
|
||||
/**
|
||||
@ -18,9 +17,9 @@ class WebhookFactory extends Factory
|
||||
public function definition()
|
||||
{
|
||||
return [
|
||||
'name' => 'My webhook for ' . $this->faker->country(),
|
||||
'name' => 'My webhook for ' . $this->faker->country(),
|
||||
'endpoint' => $this->faker->url,
|
||||
'active' => true,
|
||||
'active' => true,
|
||||
];
|
||||
}
|
||||
}
|
||||
|
@ -17,7 +17,7 @@ class WebhookTrackedEventFactory extends Factory
|
||||
{
|
||||
return [
|
||||
'webhook_id' => Webhook::factory(),
|
||||
'event' => ActivityType::all()[array_rand(ActivityType::all())],
|
||||
'event' => ActivityType::all()[array_rand(ActivityType::all())],
|
||||
];
|
||||
}
|
||||
}
|
||||
|
@ -2,6 +2,7 @@
|
||||
|
||||
namespace Tests\Actions;
|
||||
|
||||
use function app;
|
||||
use BookStack\Actions\Activity;
|
||||
use BookStack\Actions\ActivityLogger;
|
||||
use BookStack\Actions\ActivityType;
|
||||
@ -11,9 +12,8 @@ use BookStack\Entities\Models\Page;
|
||||
use BookStack\Entities\Repos\PageRepo;
|
||||
use BookStack\Entities\Tools\TrashCan;
|
||||
use Carbon\Carbon;
|
||||
use Tests\TestCase;
|
||||
use function app;
|
||||
use function config;
|
||||
use Tests\TestCase;
|
||||
|
||||
class AuditLogTest extends TestCase
|
||||
{
|
||||
|
@ -15,7 +15,6 @@ use Tests\TestCase;
|
||||
|
||||
class WebhookCallTest extends TestCase
|
||||
{
|
||||
|
||||
public function test_webhook_listening_to_all_called_on_event()
|
||||
{
|
||||
$this->newWebhook([], ['all']);
|
||||
@ -73,8 +72,9 @@ class WebhookCallTest extends TestCase
|
||||
|
||||
$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();
|
||||
|
||||
return $request->isJson()
|
||||
&& $reqData['event'] === 'page_update'
|
||||
&& $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)
|
||||
{
|
||||
if (is_null($user)) {
|
||||
@ -112,5 +111,4 @@ class WebhookCallTest extends TestCase
|
||||
|
||||
return $webhook;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -8,11 +8,10 @@ use Tests\TestCase;
|
||||
|
||||
class WebhookManagementTest extends TestCase
|
||||
{
|
||||
|
||||
public function test_index_view()
|
||||
{
|
||||
$webhook = $this->newWebhook([
|
||||
'name' => 'My awesome webhook',
|
||||
'name' => 'My awesome webhook',
|
||||
'endpoint' => 'https://example.com/donkey/webhook',
|
||||
], ['all']);
|
||||
|
||||
@ -36,10 +35,10 @@ class WebhookManagementTest extends TestCase
|
||||
public function test_store()
|
||||
{
|
||||
$resp = $this->asAdmin()->post('/settings/webhooks/create', [
|
||||
'name' => 'My first webhook',
|
||||
'name' => 'My first webhook',
|
||||
'endpoint' => 'https://example.com/webhook',
|
||||
'events' => ['all'],
|
||||
'active' => 'true'
|
||||
'events' => ['all'],
|
||||
'active' => 'true',
|
||||
]);
|
||||
|
||||
$resp->assertRedirect('/settings/webhooks');
|
||||
@ -49,16 +48,16 @@ class WebhookManagementTest extends TestCase
|
||||
$resp->assertSee('Webhook successfully created');
|
||||
|
||||
$this->assertDatabaseHas('webhooks', [
|
||||
'name' => 'My first webhook',
|
||||
'name' => 'My first webhook',
|
||||
'endpoint' => 'https://example.com/webhook',
|
||||
'active' => true,
|
||||
'active' => true,
|
||||
]);
|
||||
|
||||
/** @var Webhook $webhook */
|
||||
$webhook = Webhook::query()->where('name', '=', 'My first webhook')->first();
|
||||
$this->assertDatabaseHas('webhook_tracked_events', [
|
||||
'webhook_id' => $webhook->id,
|
||||
'event' => 'all',
|
||||
'event' => 'all',
|
||||
]);
|
||||
}
|
||||
|
||||
@ -79,10 +78,10 @@ class WebhookManagementTest extends TestCase
|
||||
$webhook = $this->newWebhook();
|
||||
|
||||
$resp = $this->asAdmin()->put('/settings/webhooks/' . $webhook->id, [
|
||||
'name' => 'My updated webhook',
|
||||
'name' => 'My updated webhook',
|
||||
'endpoint' => 'https://example.com/updated-webhook',
|
||||
'events' => [ActivityType::PAGE_CREATE, ActivityType::PAGE_UPDATE],
|
||||
'active' => 'true'
|
||||
'events' => [ActivityType::PAGE_CREATE, ActivityType::PAGE_UPDATE],
|
||||
'active' => 'true',
|
||||
]);
|
||||
$resp->assertRedirect('/settings/webhooks');
|
||||
|
||||
@ -90,10 +89,10 @@ class WebhookManagementTest extends TestCase
|
||||
$resp->assertSee('Webhook successfully updated');
|
||||
|
||||
$this->assertDatabaseHas('webhooks', [
|
||||
'id' => $webhook->id,
|
||||
'name' => 'My updated webhook',
|
||||
'id' => $webhook->id,
|
||||
'name' => 'My updated webhook',
|
||||
'endpoint' => 'https://example.com/updated-webhook',
|
||||
'active' => true,
|
||||
'active' => true,
|
||||
]);
|
||||
|
||||
$trackedEvents = $webhook->trackedEvents()->get();
|
||||
@ -169,5 +168,4 @@ class WebhookManagementTest extends TestCase
|
||||
|
||||
return $webhook;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -407,7 +407,7 @@ class EntitySearchTest extends TestCase
|
||||
{
|
||||
$this->newPage([
|
||||
'name' => 'Test Page',
|
||||
'html' => '<p>На мен ми трябва нещо добро test</p>'
|
||||
'html' => '<p>На мен ми трябва нещо добро test</p>',
|
||||
]);
|
||||
|
||||
$search = $this->asEditor()->get('/search?term=' . urlencode('На мен ми трябва нещо добро'));
|
||||
|
Loading…
x
Reference in New Issue
Block a user