|
5 | 5 | use FrameworkX\AccessLogHandler; |
6 | 6 | use FrameworkX\Container; |
7 | 7 | use FrameworkX\ErrorHandler; |
| 8 | +use FrameworkX\Io\LogStreamHandler; |
| 9 | +use FrameworkX\Io\ReactiveHandler; |
8 | 10 | use FrameworkX\Io\RouteHandler; |
9 | 11 | use PHPUnit\Framework\TestCase; |
10 | 12 | use Psr\Container\ContainerInterface; |
@@ -2636,7 +2638,7 @@ public function testGetObjectReturnsDefaultRouteHandlerInstance(): void |
2636 | 2638 | $this->assertInstanceOf(RouteHandler::class, $router); |
2637 | 2639 |
|
2638 | 2640 | $ref = new \ReflectionProperty($router, 'container'); |
2639 | | - if (\PHP_VERSION_ID < 801000) { |
| 2641 | + if (PHP_VERSION_ID < 80100) { |
2640 | 2642 | $ref->setAccessible(true); |
2641 | 2643 | } |
2642 | 2644 | $ret = $ref->getValue($router); |
@@ -2702,7 +2704,7 @@ public function testGetObjectReturnsDefaultRouteHandlerInstanceIfPsrContainerHas |
2702 | 2704 | $this->assertInstanceOf(RouteHandler::class, $router); |
2703 | 2705 |
|
2704 | 2706 | $ref = new \ReflectionProperty($router, 'container'); |
2705 | | - if (\PHP_VERSION_ID < 801000) { |
| 2707 | + if (PHP_VERSION_ID < 80100) { |
2706 | 2708 | $ref->setAccessible(true); |
2707 | 2709 | } |
2708 | 2710 | $ret = $ref->getValue($router); |
@@ -2823,6 +2825,130 @@ public function testGetObjectThrowsIfPsrContainerReturnsWrongType(): void |
2823 | 2825 | $container->getObject(AccessLogHandler::class); |
2824 | 2826 | } |
2825 | 2827 |
|
| 2828 | + public function testGetSapiReturnsDefaultReactiveHandlerInstance(): void |
| 2829 | + { |
| 2830 | + $container = new Container([]); |
| 2831 | + |
| 2832 | + $sapi = $container->getSapi(); |
| 2833 | + |
| 2834 | + $this->assertInstanceOf(ReactiveHandler::class, $sapi); |
| 2835 | + |
| 2836 | + $ref = new \ReflectionProperty($sapi, 'listenAddress'); |
| 2837 | + if (PHP_VERSION_ID < 80100) { |
| 2838 | + $ref->setAccessible(true); |
| 2839 | + } |
| 2840 | + $listenAddress = $ref->getValue($sapi); |
| 2841 | + |
| 2842 | + $this->assertEquals('127.0.0.1:8080', $listenAddress); |
| 2843 | + } |
| 2844 | + |
| 2845 | + public function testGetSapiReturnsDefaultReactiveHandlerInstanceWithCustomListenAddress(): void |
| 2846 | + { |
| 2847 | + $container = new Container([ |
| 2848 | + 'X_LISTEN' => '127.0.0.1:8081' |
| 2849 | + ]); |
| 2850 | + |
| 2851 | + $sapi = $container->getSapi(); |
| 2852 | + |
| 2853 | + $this->assertInstanceOf(ReactiveHandler::class, $sapi); |
| 2854 | + |
| 2855 | + $ref = new \ReflectionProperty($sapi, 'listenAddress'); |
| 2856 | + if (PHP_VERSION_ID < 80100) { |
| 2857 | + $ref->setAccessible(true); |
| 2858 | + } |
| 2859 | + $listenAddress = $ref->getValue($sapi); |
| 2860 | + |
| 2861 | + $this->assertEquals('127.0.0.1:8081', $listenAddress); |
| 2862 | + } |
| 2863 | + |
| 2864 | + public function testGetSapiTwiceReturnsSameReactiveHandlerInstance(): void |
| 2865 | + { |
| 2866 | + $container = new Container([]); |
| 2867 | + |
| 2868 | + $sapi = $container->getSapi(); |
| 2869 | + |
| 2870 | + $this->assertSame($sapi, $container->getSapi()); |
| 2871 | + } |
| 2872 | + |
| 2873 | + public function testGetSapiReturnsReactiveHandlerInstanceFromConfig(): void |
| 2874 | + { |
| 2875 | + $sapi = new ReactiveHandler(new LogStreamHandler('php://output'), null); |
| 2876 | + |
| 2877 | + $container = new Container([ |
| 2878 | + ReactiveHandler::class => $sapi |
| 2879 | + ]); |
| 2880 | + |
| 2881 | + $ret = $container->getSapi(); |
| 2882 | + |
| 2883 | + $this->assertSame($sapi, $ret); |
| 2884 | + } |
| 2885 | + |
| 2886 | + public function testGetSapiReturnsReactiveHandlerInstanceFromPsrContainer(): void |
| 2887 | + { |
| 2888 | + $sapi = new ReactiveHandler(new LogStreamHandler('php://output'), null); |
| 2889 | + |
| 2890 | + $psr = $this->createMock(ContainerInterface::class); |
| 2891 | + $psr->expects($this->once())->method('has')->with(ReactiveHandler::class)->willReturn(true); |
| 2892 | + $psr->expects($this->once())->method('get')->with(ReactiveHandler::class)->willReturn($sapi); |
| 2893 | + |
| 2894 | + assert($psr instanceof ContainerInterface); |
| 2895 | + $container = new Container($psr); |
| 2896 | + |
| 2897 | + $ret = $container->getSapi(); |
| 2898 | + |
| 2899 | + $this->assertSame($sapi, $ret); |
| 2900 | + } |
| 2901 | + |
| 2902 | + public function testGetSapiReturnsDefaultReactiveHandlerInstanceWithDefaultListenAddressIfPsrContainerHasNoEntry(): void |
| 2903 | + { |
| 2904 | + $psr = $this->createMock(ContainerInterface::class); |
| 2905 | + $psr->expects($this->exactly(2))->method('has')->willReturnMap([ |
| 2906 | + [ReactiveHandler::class, false], |
| 2907 | + ['X_LISTEN', false], |
| 2908 | + ]); |
| 2909 | + $psr->expects($this->never())->method('get'); |
| 2910 | + |
| 2911 | + assert($psr instanceof ContainerInterface); |
| 2912 | + $container = new Container($psr); |
| 2913 | + |
| 2914 | + $sapi = $container->getSapi(); |
| 2915 | + |
| 2916 | + $this->assertInstanceOf(ReactiveHandler::class, $sapi); |
| 2917 | + |
| 2918 | + $ref = new \ReflectionProperty($sapi, 'listenAddress'); |
| 2919 | + if (PHP_VERSION_ID < 80100) { |
| 2920 | + $ref->setAccessible(true); |
| 2921 | + } |
| 2922 | + $listenAddress = $ref->getValue($sapi); |
| 2923 | + |
| 2924 | + $this->assertEquals('127.0.0.1:8080', $listenAddress); |
| 2925 | + } |
| 2926 | + |
| 2927 | + public function testGetSapiReturnsDefaultReactiveHandlerInstanceWithCustomListenAddressIfPsrContainerHasNoEntryButCustomListenAddress(): void |
| 2928 | + { |
| 2929 | + $psr = $this->createMock(ContainerInterface::class); |
| 2930 | + $psr->expects($this->exactly(2))->method('has')->willReturnMap([ |
| 2931 | + [ReactiveHandler::class, false], |
| 2932 | + ['X_LISTEN', true], |
| 2933 | + ]); |
| 2934 | + $psr->expects($this->once())->method('get')->with('X_LISTEN')->willReturn('127.0.0.1:8081'); |
| 2935 | + |
| 2936 | + assert($psr instanceof ContainerInterface); |
| 2937 | + $container = new Container($psr); |
| 2938 | + |
| 2939 | + $sapi = $container->getSapi(); |
| 2940 | + |
| 2941 | + $this->assertInstanceOf(ReactiveHandler::class, $sapi); |
| 2942 | + |
| 2943 | + $ref = new \ReflectionProperty($sapi, 'listenAddress'); |
| 2944 | + if (PHP_VERSION_ID < 80100) { |
| 2945 | + $ref->setAccessible(true); |
| 2946 | + } |
| 2947 | + $listenAddress = $ref->getValue($sapi); |
| 2948 | + |
| 2949 | + $this->assertEquals('127.0.0.1:8081', $listenAddress); |
| 2950 | + } |
| 2951 | + |
2826 | 2952 | public function testInvokeContainerAsMiddlewareReturnsFromNextRequestHandler(): void |
2827 | 2953 | { |
2828 | 2954 | $request = new ServerRequest('GET', 'http://example.com/'); |
|
0 commit comments