$req = new ServerRequest(NULL, NULL, NULL, ['avatars' => ['tmp_name' => [0 => '/tmp/phpLTufCb', 1 => '/tmp/phpW5Lk9D'], 'name' => [0 => 'avatar-0.png', 1 => 'avatar-1.png'], 'type' => [0 => 'image/png', 1 => 'image/png'], 'size' => [0 => 73097, 1 => 73098], 'error' => [0 => 0, 1 => 0]]]); expect($req->getFiles())->toBeA('array')->toContainKey('avatars'); expect($req->getFiles()['avatars'])->toBeA('array')->toContainKey(0); expect($req->getFiles()['avatars'][0])->toBeA('array')->toContainKey('tmp_name'); expect($req->getFiles()['avatars'][0]['tmp_name'])->toBe('/tmp/phpLTufCb'); }); it('assigns nested simple files', function () { $req = new ServerRequest(NULL, NULL, NULL, ['someform' => ['tmp_name' => ['avatar' => '/tmp/phpUxcOty'], 'name' => ['avatar' => 'avatar.png'], 'type' => ['avatar' => 'image/png'], 'size' => ['avatar' => 73096], 'error' => ['avatar' => 0]]]); expect($req->getFiles())->toBeA('array')->toContainKey('someform'); expect($req->getFiles()['someform'])->toBeA('array')->toContainKey('avatar'); expect($req->getFiles()['someform']['avatar'])->toBeA('array')->toContainKey('tmp_name'); expect($req->getFiles()['someform']['avatar']['tmp_name'])->toBe('/tmp/phpUxcOty'); }); it('assigns nested collection files', function () { $req = new ServerRequest(NULL, NULL, NULL, ['someform' => ['tmp_name' => ['avatars' => [0 => '/tmp/phpLTufCb', 1 => '/tmp/phpW5Lk9D']], 'name' => ['avatars' => [0 => 'avatar-0.png', 1 => 'avatar-1.png']], 'type' => ['avatars' => [0 => 'image/png', 1 => 'image/png']], 'size' => ['avatars' => [0 => 73097, 1 => 73098]], 'error' => ['avatars' => [0 => 0, 1 => 0]]]]); expect($req->getFiles())->toBeA('array')->toContainKey('someform'); expect($req->getFiles()['someform'])->toBeA('array')->toContainKey('avatars'); expect($req->getFiles()['someform']['avatars'])->toBeA('array')->toContainKey(0); expect($req->getFiles()['someform']['avatars'][0])->toBeA('array')->toContainKey('tmp_name'); expect($req->getFiles()['someform']['avatars'][0]['tmp_name'])->toBe('/tmp/phpLTufCb'); }); it('assigns the body as a resource if string given', function () { $req = new ServerRequest(NULL, NULL, NULL, NULL, 'Hello World'); expect($req->getBody())->toBeA('resource'); expect(stream_get_contents($req->getBody()))->toBe('Hello World'); }); it('assigns the body to be php://input when it has Content-Length', function () { Monkey::patch('fopen', function ($filename, $mode) { if ($filename === 'php://input') { $input = fopen('php://temp', 'r+'); fwrite($input, 'Hello World');