forked from mirror/pixelfed
Add Accept validator/test
This commit is contained in:
parent
cfbd7d5a1a
commit
714e47f387
3 changed files with 89 additions and 0 deletions
|
@ -53,3 +53,5 @@ MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
|
||||||
MIX_APP_URL="${APP_URL}"
|
MIX_APP_URL="${APP_URL}"
|
||||||
MIX_API_BASE="${API_BASE}"
|
MIX_API_BASE="${API_BASE}"
|
||||||
MIX_API_SEARCH="${API_SEARCH}"
|
MIX_API_SEARCH="${API_SEARCH}"
|
||||||
|
|
||||||
|
TELESCOPE_ENABLED=false
|
||||||
|
|
32
app/Util/ActivityPub/Validator/Accept.php
Normal file
32
app/Util/ActivityPub/Validator/Accept.php
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Util\ActivityPub\Validator;
|
||||||
|
|
||||||
|
use Validator;
|
||||||
|
use Illuminate\Validation\Rule;
|
||||||
|
|
||||||
|
class Accept {
|
||||||
|
|
||||||
|
public static function validate($payload)
|
||||||
|
{
|
||||||
|
$valid = Validator::make($payload, [
|
||||||
|
'@context' => 'required',
|
||||||
|
'id' => 'required|string',
|
||||||
|
'type' => [
|
||||||
|
'required',
|
||||||
|
Rule::in(['Accept'])
|
||||||
|
],
|
||||||
|
'actor' => 'required|url|active_url',
|
||||||
|
'object' => 'required',
|
||||||
|
'object.id' => 'required|url|active_url',
|
||||||
|
'object.type' => [
|
||||||
|
'required',
|
||||||
|
Rule::in(['Follow'])
|
||||||
|
],
|
||||||
|
'object.actor' => 'required|url|active_url',
|
||||||
|
'object.object' => 'required|url|active_url|same:actor',
|
||||||
|
])->passes();
|
||||||
|
|
||||||
|
return $valid;
|
||||||
|
}
|
||||||
|
}
|
55
tests/Unit/ActivityPub/AcceptVerbTest.php
Normal file
55
tests/Unit/ActivityPub/AcceptVerbTest.php
Normal file
|
@ -0,0 +1,55 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Tests\Unit;
|
||||||
|
|
||||||
|
use Tests\TestCase;
|
||||||
|
use Illuminate\Foundation\Testing\WithFaker;
|
||||||
|
use Illuminate\Foundation\Testing\RefreshDatabase;
|
||||||
|
use App\Util\ActivityPub\Validator\Accept;
|
||||||
|
|
||||||
|
class AcceptVerbTest extends TestCase
|
||||||
|
{
|
||||||
|
protected $validAccept;
|
||||||
|
protected $invalidAccept;
|
||||||
|
|
||||||
|
public function setUp()
|
||||||
|
{
|
||||||
|
parent::setUp();
|
||||||
|
$this->validAccept = [
|
||||||
|
'@context' => 'https://www.w3.org/ns/activitystreams',
|
||||||
|
'id' => 'https://example.org/og/b3e4a40b-0b26-4c5a-9079-094bd633fab7',
|
||||||
|
'type' => 'Accept',
|
||||||
|
'actor' => 'https://example.org/u/alice',
|
||||||
|
'object' => [
|
||||||
|
'id' => 'https://example.net/u/bob#follows/bb27f601-ddb9-4567-8f16-023d90605ca9',
|
||||||
|
'type' => 'Follow',
|
||||||
|
'actor' => 'https://example.net/u/bob',
|
||||||
|
'object' => 'https://example.org/u/alice'
|
||||||
|
]
|
||||||
|
];
|
||||||
|
$this->invalidAccept = [
|
||||||
|
'@context' => 'https://www.w3.org/ns/activitystreams',
|
||||||
|
'id' => 'https://example.org/og/b3e4a40b-0b26-4c5a-9079-094bd633fab7',
|
||||||
|
'type' => 'Accept2',
|
||||||
|
'actor' => 'https://example.org/u/alice',
|
||||||
|
'object' => [
|
||||||
|
'id' => 'https://example.net/u/bob#follows/bb27f601-ddb9-4567-8f16-023d90605ca9',
|
||||||
|
'type' => 'Follow',
|
||||||
|
'actor' => 'https://example.net/u/bob',
|
||||||
|
'object' => 'https://example.org/u/alice'
|
||||||
|
]
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @test */
|
||||||
|
public function basic_accept()
|
||||||
|
{
|
||||||
|
$this->assertTrue(Accept::validate($this->validAccept));
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @test */
|
||||||
|
public function invalid_accept()
|
||||||
|
{
|
||||||
|
$this->assertFalse(Accept::validate($this->invalidAccept));
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue