$request = Request::parseUrl('https://*****:*****@www.domain.com:8000/foo?bar=baz#quz'); expect($request->export())->toEqual(['method' => 'GET', 'scheme' => 'https', 'version' => '1.1', 'host' => 'www.domain.com:8000', 'port' => 8000, 'path' => '/foo', 'query' => '?bar=baz', 'fragment' => 'quz', 'username' => 'username', 'password' => 'password', 'url' => 'https://www.domain.com:8000/foo?bar=baz#quz', 'stream' => $request->stream()]); }); it("throw an exception when the passed url is invalid", function () { $closure = function () { Request::parseUrl('/relative/url'); }; expect($closure)->toThrow(new NetException("Invalid url: `'/relative/url'`.")); }); }); describe("->host()", function () { it("sets the host", function () { $request = new Request(); $request->host('www.example.com:8000'); expect($request->host())->toBe('www.example.com:8000'); expect($request->hostname())->toBe('www.example.com'); expect($request->port())->toBe('8000'); expect((string) $request->headers['Host'])->toBe('Host: www.example.com:8000'); }); }); describe("->scheme()", function () { it("gets the scheme", function () { $request = new Request(['scheme' => 'https']); expect($request->scheme())->toBe('https'); }); it("sets the scheme", function () { $request = new Request(); $request->scheme('https'); expect($request->scheme())->toBe('https'); }); });