aboutsummaryrefslogtreecommitdiffstats
path: root/tests/lib/Http/Client/LocalAddressCheckerTest.php
diff options
context:
space:
mode:
authorChristoph Wurst <christoph@winzerhof-wurst.at>2022-10-27 14:33:31 +0200
committerChristoph Wurst <christoph@winzerhof-wurst.at>2022-10-31 16:13:28 +0100
commit8aea25b5b92dac105f7e862470ee0dcf0e876615 (patch)
tree3095f0a58eb70e1c21117ce9c3450a1e60e323ba /tests/lib/Http/Client/LocalAddressCheckerTest.php
parentaa81b87f26552bc3d49de6cf0babfe6a79c21af5 (diff)
downloadnextcloud-server-8aea25b5b92dac105f7e862470ee0dcf0e876615.tar.gz
nextcloud-server-8aea25b5b92dac105f7e862470ee0dcf0e876615.zip
Add remote host validation API
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
Diffstat (limited to 'tests/lib/Http/Client/LocalAddressCheckerTest.php')
-rw-r--r--tests/lib/Http/Client/LocalAddressCheckerTest.php158
1 files changed, 0 insertions, 158 deletions
diff --git a/tests/lib/Http/Client/LocalAddressCheckerTest.php b/tests/lib/Http/Client/LocalAddressCheckerTest.php
deleted file mode 100644
index 024c52b3705..00000000000
--- a/tests/lib/Http/Client/LocalAddressCheckerTest.php
+++ /dev/null
@@ -1,158 +0,0 @@
-<?php
-
-declare(strict_types=1);
-
-/**
- * @copyright Copyright (c) 2021, Lukas Reschke <lukas@statuscode.ch>
- *
- * @author Lukas Reschke <lukas@statuscode.ch>
- *
- * @license GNU AGPL version 3 or any later version
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-namespace Test\Http\Client;
-
-use OCP\Http\Client\LocalServerException;
-use OC\Http\Client\LocalAddressChecker;
-use Psr\Log\LoggerInterface;
-
-class LocalAddressCheckerTest extends \Test\TestCase {
- /** @var LocalAddressChecker */
- private $localAddressChecker;
-
- protected function setUp(): void {
- parent::setUp();
-
- $logger = $this->createMock(LoggerInterface::class);
- $this->localAddressChecker = new LocalAddressChecker($logger);
- }
-
- /**
- * @dataProvider dataPreventLocalAddress
- * @param string $uri
- */
- public function testThrowIfLocalAddress($uri) : void {
- $this->expectException(LocalServerException::class);
- $this->localAddressChecker->throwIfLocalAddress('http://' . $uri);
- }
-
- /**
- * @dataProvider dataAllowLocalAddress
- * @param string $uri
- */
- public function testThrowIfLocalAddressGood($uri) : void {
- $this->localAddressChecker->throwIfLocalAddress('http://' . $uri);
- $this->assertTrue(true);
- }
-
-
- /**
- * @dataProvider dataInternalIPs
- * @param string $ip
- */
- public function testThrowIfLocalIpBad($ip) : void {
- $this->expectException(LocalServerException::class);
- $this->localAddressChecker->throwIfLocalIp($ip);
- }
-
- /**
- * @dataProvider dataPublicIPs
- * @param string $ip
- */
- public function testThrowIfLocalIpGood($ip) : void {
- $this->localAddressChecker->throwIfLocalIp($ip);
- $this->assertTrue(true);
- }
-
- public function dataPublicIPs() : array {
- return [
- ['8.8.8.8'],
- ['8.8.4.4'],
- ['2001:4860:4860::8888'],
- ['2001:4860:4860::8844'],
- ];
- }
-
- public function dataInternalIPs() : array {
- return [
- ['192.168.0.1'],
- ['fe80::200:5aee:feaa:20a2'],
- ['0:0:0:0:0:ffff:10.0.0.1'],
- ['0:0:0:0:0:ffff:127.0.0.0'],
- ['10.0.0.1'],
- ['::'],
- ['::1'],
- ['100.100.100.200'],
- ['192.0.0.1'],
- ];
- }
-
- public function dataPreventLocalAddress():array {
- return [
- ['localhost/foo.bar'],
- ['localHost/foo.bar'],
- ['random-host/foo.bar'],
- ['[::1]/bla.blub'],
- ['[::]/bla.blub'],
- ['192.168.0.1'],
- ['172.16.42.1'],
- ['[fdf8:f53b:82e4::53]/secret.ics'],
- ['[fe80::200:5aee:feaa:20a2]/secret.ics'],
- ['[0:0:0:0:0:ffff:10.0.0.1]/secret.ics'],
- ['[0:0:0:0:0:ffff:127.0.0.0]/secret.ics'],
- ['10.0.0.1'],
- ['another-host.local'],
- ['service.localhost'],
- ['!@#$'], // test invalid url
- ['100.100.100.200'],
- ['192.0.0.1'],
- ['randomdomain.internal'],
- ['0177.0.0.9'],
- ['⑯⑨。②⑤④。⑯⑨。②⑤④'],
- ['127。②⑤④。⑯⑨.②⑤④'],
- ['127.0.00000000000000000000000000000000001'],
- ['127.1'],
- ['127.000.001'],
- ['0177.0.0.01'],
- ['0x7f.0x0.0x0.0x1'],
- ['0x7f000001'],
- ['2130706433'],
- ['00000000000000000000000000000000000000000000000000177.1'],
- ['0x7f.1'],
- ['127.0x1'],
- ['[0000:0000:0000:0000:0000:0000:0000:0001]'],
- ['[0:0:0:0:0:0:0:1]'],
- ['[0:0:0:0::0:0:1]'],
- ['%31%32%37%2E%30%2E%30%2E%31'],
- ['%31%32%37%2E%30%2E%30.%31'],
- ['[%3A%3A%31]'],
- ];
- }
-
- public function dataAllowLocalAddress():array {
- return [
- ['example.com/foo.bar'],
- ['example.net/foo.bar'],
- ['example.org/foo.bar'],
- ['8.8.8.8/bla.blub'],
- ['8.8.4.4/bla.blub'],
- ['8.8.8.8'],
- ['8.8.4.4'],
- ['[2001:4860:4860::8888]/secret.ics'],
- ];
- }
-}