public function testCloneIsDeep() { $r = new Request('GET', '/test', ['foo' => 'baz'], Stream::factory('foo')); $r2 = clone $r; $this->assertNotSame($r->getEmitter(), $r2->getEmitter()); $this->assertEquals('foo', $r2->getBody()); $r->getConfig()->set('test', 123); $this->assertFalse($r2->getConfig()->hasKey('test')); $r->setPath('/abc'); $this->assertEquals('/test', $r2->getPath()); }
public function testCreatesRingRequests() { $stream = Stream::factory('test'); $request = new Request('GET', 'http://httpbin.org/get?a=b', ['test' => 'hello'], $stream); $request->getConfig()->set('foo', 'bar'); $trans = new Transaction(new Client(), $request); $factory = new MessageFactory(); $fsm = new RequestFsm(function () { }, new MessageFactory()); $r = RingBridge::prepareRingRequest($trans, $factory, $fsm); $this->assertEquals('http', $r['scheme']); $this->assertEquals('1.1', $r['version']); $this->assertEquals('GET', $r['http_method']); $this->assertEquals('http://httpbin.org/get?a=b', $r['url']); $this->assertEquals('/get', $r['uri']); $this->assertEquals('a=b', $r['query_string']); $this->assertEquals(['Host' => ['httpbin.org'], 'test' => ['hello']], $r['headers']); $this->assertSame($stream, $r['body']); $this->assertEquals(['foo' => 'bar'], $r['client']); $this->assertFalse($r['future']); }