<?php declare(strict_types=1); namespace JKingWeb\Arsse; Use Phake; class TestFeedFetching extends \PHPUnit\Framework\TestCase { use Test\Tools; protected static $host = "http://localhost:8000/"; protected $base = ""; function setUp() { if(!extension_loaded('curl')) { $this->markTestSkipped("Feed fetching tests are only accurate with curl enabled."); } else if(!@file_get_contents(self::$host."IsUp")) { $this->markTestSkipped("Test Web server is not accepting requests"); } $this->base = self::$host."Feed/"; $this->clearData(); Data::$conf = new Conf(); } function testHandle400() { $this->assertException("unsupportedFeedFormat", "Feed"); new Feed(null, $this->base."Fetching/Error?code=400"); } function testHandle401() { $this->assertException("unauthorized", "Feed"); new Feed(null, $this->base."Fetching/Error?code=401"); } function testHandle403() { $this->assertException("forbidden", "Feed"); new Feed(null, $this->base."Fetching/Error?code=403"); } function testHandle404() { $this->assertException("invalidUrl", "Feed"); new Feed(null, $this->base."Fetching/Error?code=404"); } function testHandle500() { $this->assertException("unsupportedFeedFormat", "Feed"); new Feed(null, $this->base."Fetching/Error?code=500"); } function testHandleARedirectLoop() { $this->assertException("maxRedirect", "Feed"); new Feed(null, $this->base."Fetching/EndlessLoop?i=0"); } function testHandleATimeout() { Data::$conf->fetchTimeout = 1; $this->assertException("timeout", "Feed"); new Feed(null, $this->base."Fetching/Timeout"); } function testHandleAnOverlyLargeFeed() { Data::$conf->fetchSizeLimit = 512; $this->assertException("maxSize", "Feed"); new Feed(null, $this->base."Fetching/TooLarge"); } function testHandleACertificateError() { $this->assertException("invalidCertificate", "Feed"); new Feed(null, "https://localhost:8000/"); } }