}); 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']); expect($req->getUri())->toBeA('array'); }); it('returns scheme from HTTPS server variable', function () { $req = new ServerRequest(['REQUEST_URI' => '//user:pass@example.com/path?queryString', 'HTTPS' => 'on']);