/**
* @dataProvider insertObjectProvider
*/
public function testInsertObject(array $options, $expectedUploaderType, $expectedContentType, array $expectedMetadata)
{
$actualRequest = null;
$response = new Response(200, ['Location' => 'http://www.mordor.com'], $this->successBody);
$this->requestWrapper->send(Argument::type('Psr\\Http\\Message\\RequestInterface'), Argument::type('array'))->will(function ($args) use(&$actualRequest, $response) {
$request = $args[0];
if ($request->getMethod() === 'POST') {
$actualRequest = $request;
}
return $response;
});
$rest = new Rest();
$rest->setRequestWrapper($this->requestWrapper->reveal());
$uploader = $rest->insertObject($options);
$uploader->upload();
list($contentType, $metadata) = $this->getContentTypeAndMetadata($actualRequest);
$this->assertInstanceOf($expectedUploaderType, $uploader);
$this->assertEquals($expectedContentType, $contentType);
foreach ($expectedMetadata as $key => $value) {
$this->assertEquals($value, $metadata[$key]);
}
}