X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=tests%2Fsrc%2FNetwork%2FProbeTest.php;h=d9c0f074ec9419c13cd641e88b5ba22ca09b805c;hb=262f960120178a83bc87dc976d5122913a7bf79d;hp=58711cb916f9c9442a2298e9b572955b1bfe0bc2;hpb=5232a8583f8d0ca5e6339e067814ff6f32dcf3fe;p=friendica.git diff --git a/tests/src/Network/ProbeTest.php b/tests/src/Network/ProbeTest.php index 58711cb916..d9c0f074ec 100644 --- a/tests/src/Network/ProbeTest.php +++ b/tests/src/Network/ProbeTest.php @@ -1,12 +1,49 @@ . + * + */ namespace Friendica\Test\src\Network; use Friendica\Network\Probe; -use PHPUnit\Framework\TestCase; +use Friendica\Test\DiceHttpMockHandlerTrait; +use Friendica\Test\MockedTest; +use GuzzleHttp\Middleware; -class ProbeTest extends TestCase +class ProbeTest extends MockedTest { + use DiceHttpMockHandlerTrait; + + protected function setUp(): void + { + parent::setUp(); + + $this->setupHttpMockHandler(); + } + + protected function tearDown(): void + { + $this->tearDownHandler(); + + parent::tearDown(); + } + const TEMPLATENOBASE = ' @@ -105,4 +142,155 @@ class ProbeTest extends TestCase } } } + + public function dataCleanUri(): array + { + return [ + '@-first' => [ + 'expected' => 'Artists4Future_Muenchen@climatejustice.global', + 'uri' => '@Artists4Future_Muenchen@climatejustice.global', + ], + 'no-scheme-no-fragment' => [ + 'expected' => 'example.com/path?arg=value', + 'uri' => 'example.com/path?arg=value', + ], + /* This case makes little sense, both in our expectation of receiving it in any context and in the way we + * do not change it in Probe::cleanUri, but it doesn't seem to be the source of any terrible security hole. + */ + 'no-scheme-fragment' => [ + 'expected' => 'example.com/path?arg=value#fragment', + 'uri' => 'example.com/path?arg=value#fragment', + ], + 'scheme-no-fragment' => [ + 'expected' => 'https://example.com/path?arg=value', + 'uri' => 'https://example.com/path?arg=value#fragment', + ], + 'scheme-fragment' => [ + 'expected' => 'https://example.com/path?arg=value', + 'uri' => 'https://example.com/path?arg=value#fragment', + ], + ]; + } + + /** + * @dataProvider dataCleanUri + */ + public function testCleanUri(string $expected, string $uri) + { + self::assertEquals($expected, Probe::cleanURI($uri)); + } + + public function dataUri(): array + { + return [ + 'Artists4Future_Muenchen@climatejustice.global' => [ + 'uri' => 'Artists4Future_Muenchen@climatejustice.global', + 'assertInfos' => [ + 'name' => 'Artists4Future München', + 'nick' => 'Artists4Future_Muenchen', + 'url' => 'https://climatejustice.global/users/Artists4Future_Muenchen', + 'alias' => 'https://climatejustice.global/@Artists4Future_Muenchen', + 'photo' => 'https://cdn.masto.host/climatejusticeglobal/accounts/avatars/000/021/220/original/05ee9e827a5b47fc.jpg', + 'header' => 'https://cdn.masto.host/climatejusticeglobal/accounts/headers/000/021/220/original/9b98b75cf696cd11.jpg', + 'account-type' => 0, + 'about' => 'Wir sind Künstler oder einfach gerne kreativ tätig und setzen uns unabhängig von politischen Parteien für den Klimaschutz ein. Die Bedingungen zu schaffen, die die [url=https://climatejustice.global/tags/Klimakrise]#Klimakrise[/url] verhindern/eindämmen (gemäß den Forderungen der [url=https://climatejustice.global/tags/Fridays4Future]#Fridays4Future[/url]) ist Aufgabe der Politik, muss aber gesamtgesellschaftlich getragen werden. Mit unseren künstlerischen Aktionen wollen wir einen anderen Zugang anbieten für wissenschaftlich rationale Argumente, speziell zur Erderwärmung und ihre Konsequenzen.', + 'hide' => 0, + 'batch' => 'https://climatejustice.global/inbox', + 'notify' => 'https://climatejustice.global/users/Artists4Future_Muenchen/inbox', + 'poll' => 'https://climatejustice.global/users/Artists4Future_Muenchen/outbox', + 'subscribe' => 'https://climatejustice.global/authorize_interaction?uri={uri}', + 'following' => 'https://climatejustice.global/users/Artists4Future_Muenchen/following', + 'followers' => 'https://climatejustice.global/users/Artists4Future_Muenchen/followers', + 'inbox' => 'https://climatejustice.global/users/Artists4Future_Muenchen/inbox', + 'outbox' => 'https://climatejustice.global/users/Artists4Future_Muenchen/outbox', + 'sharedinbox' => 'https://climatejustice.global/inbox', + 'priority' => 0, + 'network' => 'apub', + 'pubkey' => '-----BEGIN PUBLIC KEY----- +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA6pYKPuDKb+rmBB869uPV +uLYFPosGxMUfenWqfWmFKzEqJ87rAft0IQDAL6dCoYE55ov/lEDNROhasTZLirZf +M5b7/1JmwMrAfEiaciuYqDWT3/yDpnekOIdzP5iSClg4zt7e6HRFuClqo4+b6hIE +DTMV4ksItvq/92MIu62pZ2SZr5ADPPZ/914lJ86hIH5BanbE8ZFzDS9vJA7V74rt +Vvkr5c/OiUyuODNYApSl87Ez8cuj8Edt89YWkDCajQn3EkmXGeJY/VRjEDfcyk6r +AvdUa0ArjXud3y3NkakVFZ0d7tmB20Vn9s/CfYHU8FXzbI1kFkov2BX899VVP5Ay +xQIDAQAB +-----END PUBLIC KEY-----', + 'manually-approve' => 0, + 'baseurl' => 'https://climatejustice.global', + ] + ] + ]; + } + + /** + * @dataProvider dataUri + */ + public function testProbeUri(string $uri, array $assertInfos) + { + self::markTestIncomplete('hard work due mocking 19 different http-requests'); + + /** + * Requests: + * + * GET : https://climatejustice.global/.well-known/webfinger?resource=acct:Artists4Future_Muenchen%40climatejustice.global + * 200 + * GET : http://localhost/.well-known/nodeinfo + * 200 + * GET : http://localhost/statistics.json + * 404 + * GET : http://localhost + * 200 + * GET : http://localhost/friendica/json + * 404 + * GET : http://localhost/friendika/json + * 404 + * GET : http://localhost/poco + * 403 + * GET : http://localhost/api/v1/directory?limit=1 + * 200 + * GET : http://localhost/.well-known/x-social-relay + * 200 + * GET : http://localhost/friendica + * 404 + * GET : https://climatejustice.global/users/Artists4Future_Muenchen + * 200 + * GET : https://climatejustice.global/users/Artists4Future_Muenchen/following + * 200 + * GET : https://climatejustice.global/users/Artists4Future_Muenchen/followers + * 200 + * GET : https://climatejustice.global/users/Artists4Future_Muenchen/outbox + * 200 + * GET : https://climatejustice.global/.well-known/nodeinfo + * 200 + * GET : https://climatejustice.global/nodeinfo/2.0 + * 200 + * GET : https://climatejustice.global/poco + * 404 + * GET : https://climatejustice.global/api/v1/directory?limit=1 + * 200 + * GET : https://climatejustice.global/.well-known/webfinger?resource=acct%3AArtists4Future_Muenchen%40climatejustice.global + * 200 + * + */ + + $container = []; + $history = Middleware::history($container); + + $this->httpRequestHandler->push($history); + + self::assertArraySubset($assertInfos, Probe::uri($uri, '', 0)); + + // Iterate over the requests and responses + foreach ($container as $transaction) { + echo $transaction['request']->getMethod() . " : " . $transaction['request']->getUri() . PHP_EOL; + //> GET, HEAD + if ($transaction['response']) { + echo $transaction['response']->getStatusCode() . PHP_EOL; + //> 200, 200 + } elseif ($transaction['error']) { + echo $transaction['error']; + //> exception + } + } + } }