}); it("exports a request", function () { $request = new Request(['scheme' => 'http', 'host' => 'www.domain.com', 'port' => 80, 'username' => 'username', 'password' => 'password', 'path' => 'index.php']); expect($request->export())->toEqual(['method' => 'GET', 'scheme' => 'http', 'version' => '1.1', 'host' => 'www.domain.com', 'port' => 80, 'path' => '/index.php', 'query' => '', 'fragment' => '', 'username' => 'username', 'password' => 'password', 'url' => 'http://www.domain.com/index.php', 'stream' => $request->stream()]); }); }); describe("->toString()", function () { it("casts to a string", function () { $headers = ['Date: Thu, 25 Dec 2014 00:00:00 GMT', 'Content-Type: text/html; charset=UTF-8', 'Vary: Accept-Encoding, Cookie, User-Agent']; $request = new Request(['headers' => $headers, 'data' => 'Body Message']); expect($request->toString())->toBe('Body Message'); }); }); describe("->__clone", function () { it("clones the headers but not the stream ressource", function () { $request = new Request(['data' => 'Body Message']); $new = clone $request; expect($request->headers)->not->toBe($new->headers); expect($request->stream())->toBe($new->stream()); }); it("clones cookies", function () { $request = new Request(['data' => 'Body Message']); $cookies = $request->headers->cookies; $cookies['foo'] = 'bar'; $newRequest = clone $request; $new = $newRequest->headers->cookies; expect($cookies['foo'])->not->toBe($new['foo']); expect($cookies['foo']->value())->toBe($new['foo']->value()); }); }); });