|
|
@@ -5,10 +5,23 @@ use PHPUnit\Framework\Attributes\DataProvider;
|
|
|
|
|
|
final class FeedTest extends \PHPUnit\Framework\TestCase {
|
|
|
|
|
|
+ #[\Override]
|
|
|
+ protected function setUp(): void {
|
|
|
+ FreshRSS_Context::initSystem(reload: true);
|
|
|
+ }
|
|
|
+
|
|
|
+ #[\Override]
|
|
|
+ protected function tearDown(): void {
|
|
|
+ FreshRSS_Context::initSystem(reload: true); // Restore the default curl_options
|
|
|
+ }
|
|
|
+
|
|
|
#[DataProvider('provideStoredAndRequestedUrls')]
|
|
|
- public function test_load_obeysRetryAfter(string $storedUrl, string $requestedUrl): void {
|
|
|
+ public function test_load_obeysRetryAfter(string $storedUrl, string $requestedUrl, string $systemProxy = ''): void {
|
|
|
+ if ($systemProxy !== '') {
|
|
|
+ FreshRSS_Context::systemConf()->_attribute('curl_options', [CURLOPT_PROXY => $systemProxy]);
|
|
|
+ }
|
|
|
$getRetryAfterFile = new ReflectionMethod(FreshRSS_http_Util::class, 'getRetryAfterFile');
|
|
|
- $file = $getRetryAfterFile->invoke(null, $requestedUrl, '');
|
|
|
+ $file = $getRetryAfterFile->invoke(null, $requestedUrl, $systemProxy);
|
|
|
self::assertIsString($file);
|
|
|
self::assertTrue(touch($file, time() + 600));
|
|
|
try {
|
|
|
@@ -21,12 +34,13 @@ final class FeedTest extends \PHPUnit\Framework\TestCase {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- /** @return array<string,array{string,string}> */
|
|
|
+ /** @return array<string,array{0:string,1:string,2?:string}> */
|
|
|
public static function provideStoredAndRequestedUrls(): array {
|
|
|
// On a local network, where Retry-After is per URL
|
|
|
return [
|
|
|
'HTML-encoded' => ['http://192.168.1.2/?action=display&bridge=Example', 'http://192.168.1.2/?action=display&bridge=Example'],
|
|
|
'force_feed' => ['http://192.168.1.2/feed#force_feed', 'http://192.168.1.2/feed'],
|
|
|
+ 'system proxy' => ['http://192.168.1.2/feed', 'http://192.168.1.2/feed', 'proxy.example.test:3128'],
|
|
|
];
|
|
|
}
|
|
|
}
|