}); }); describe("->getUri()", function () { it("returns the request URI", function () { $request = Request::parseUrl('https://*****:*****@www.domain.com:8000/foo?bar=baz#quz'); $uri = $request->getUri(); expect($uri)->toBeAnInstanceOf('Psr\\Http\\Message\\UriInterface'); expect((string) $uri)->toBe('https://*****:*****@www.domain.com:8000/foo?bar=baz#quz'); }); }); describe("->withUri()", function () { it("creates a new request with the provided URI", function () { $request = new Request(); $new = $request->withUri(new Uri('https://*****:*****@www.domain.com:8000/foo?bar=baz#quz')); expect($new)->not->toBe($request); $uri = $new->getUri(); expect($uri)->toBeAnInstanceOf('Psr\\Http\\Message\\UriInterface'); expect((string) $uri)->toBe('https://*****:*****@www.domain.com:8000/foo?bar=baz#quz'); expect($new->getHeaderLine('Host'))->toBe('www.domain.com:8000'); }); it("creates a new request with the provided URI and preserve the Host header", function () { $request = new Request(); $new = $request->withUri(new Uri('https://*****:*****@www.domain.com:8000/foo?bar=baz#quz'), true); expect($new)->not->toBe($request); $uri = $new->getUri(); expect($uri)->toBeAnInstanceOf('Psr\\Http\\Message\\UriInterface'); expect((string) $uri)->toBe('https://*****:*****@www.domain.com:8000/foo?bar=baz#quz'); expect($new->getHeaderLine('Host'))->toBe('localhost'); }); }); });