Kraken\_Module\Network\Http\HttpServerTest::testHttpServer_HandlesIncomingHTTPMessages PHP Method

testHttpServer_HandlesIncomingHTTPMessages() public method

    public function testHttpServer_HandlesIncomingHTTPMessages()
    {
        $this->simulate(function (SimulationInterface $sim) {
            $component = $this->createComponent();
            $loop = $sim->getLoop();
            $http = $this->createServer($component, $loop);
            $server = $this->server;
            $client = $this->createClient($loop);
            $component->on('connect', function (NetworkConnectionInterface $conn) use($sim) {
                $sim->expect('connect');
            });
            $component->on('disconnect', function (NetworkConnectionInterface $conn) use($sim) {
                $sim->expect('disconnect');
            });
            $component->on('message', function (NetworkConnectionInterface $conn, HttpRequestInterface $message) use($sim) {
                $sim->assertSame('GET', $message->getMethod());
                $sim->assertSame('/', $message->getTarget());
                $sim->assertSame(['Host' => ['localhost:10080'], 'Connection' => ['keep-alive'], 'Accept-Encoding' => ['gzip, deflate'], 'Accept-Language' => ['en-US, en'], 'Accept' => ['text/html, application/xhtml+xml, application/xml']], $message->getHeaders());
                $sim->assertSame('Hello World', (string) $message->getBody());
                $sim->expect('message', [$message->read()]);
                $sim->done();
            });
            $sim->onStart(function () use($client) {
                $client->write($this->createHttpMessage('GET', '/', ['Host' => 'localhost:10080', 'Connection' => 'keep-alive', 'Accept-Encoding' => 'gzip, deflate', 'Accept-Language' => 'en-US, en', 'Accept' => 'text/html, application/xhtml+xml, application/xml'], 'Hello World'));
            });
            $sim->onStop(function () use($client, $server) {
                $client->stop();
                $server->stop();
            });
            unset($http);
            unset($server);
            unset($component);
            unset($loop);
        })->expect([['connect'], ['message', ['Hello World']], ['disconnect']]);
    }