it('returns HTTPS when SCRIPT_URI starts with https://', function () { $req = new ServerRequest(['HTTPS' => 'off', 'SCRIPT_URI' => 'https://ochenta/']); expect($req->getUri())->toContainKey('scheme'); expect($req->getUri()['scheme'])->toBe('https'); }); it('returns HTTPS in lowercase, defaults to off', function () { expect((new ServerRequest([]))->getUri()['scheme'])->toBe('http'); expect((new ServerRequest(['HTTPS' => 'ON']))->getUri()['scheme'])->toBe('https'); }); it('returns HTTPS on if is 1', function () { expect((new ServerRequest(['HTTPS' => 0]))->getUri()['scheme'])->toBe('http'); expect((new ServerRequest(['HTTPS' => 1]))->getUri()['scheme'])->toBe('https'); }); it('returns REQUEST_METHOD overriden by HTTP_X_HTTP_METHOD_OVERRIDE if present', function () { $req = new ServerRequest(['REQUEST_METHOD' => 'POST', 'HTTP_X_HTTP_METHOD_OVERRIDE' => 'PUT']); expect($req->getMethod())->toBe('PUT'); }); it('returns HTTP_AUTHORIZATION if REDIRECT_HTTP_AUTHORIZATION is present', function () { $req = new ServerRequest(['REDIRECT_HTTP_AUTHORIZATION' => 'Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==']); expect($req->getHeaders())->toContainKey('AUTHORIZATION'); expect($req->getHeaders()['AUTHORIZATION'])->toBe(['Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==']); }); }); describe('->normalizeUrl', function () { it('throws UnexpectedValueException on invalid REQUEST_URI', function () { expect(function () { new ServerRequest(['REQUEST_URI' => 'http://@/']); })->toThrow(new UnexpectedValueException()); }); it('returns parse_url parts from REQUEST_URI', function () { $req = new ServerRequest(['REQUEST_URI' => 'http://*****:*****@example.com/path?queryString']);