/**
* Tests setting of public/private Cache-Control directives
*
* @return void
*/
public function testSharable()
{
$response = $this->getMock('Cake\\Network\\Response', array('_sendHeader', '_sendContent'));
$this->assertNull($response->sharable());
$response->sharable(true);
$headers = $response->header();
$this->assertEquals('public', $headers['Cache-Control']);
$response->expects($this->at(1))->method('_sendHeader')->with('Cache-Control', 'public');
$response->send();
$response = $this->getMock('Cake\\Network\\Response', array('_sendHeader', '_sendContent'));
$response->sharable(false);
$headers = $response->header();
$this->assertEquals('private', $headers['Cache-Control']);
$response->expects($this->at(1))->method('_sendHeader')->with('Cache-Control', 'private');
$response->send();
$response = $this->getMock('Cake\\Network\\Response', array('_sendHeader', '_sendContent'));
$response->sharable(true);
$headers = $response->header();
$this->assertEquals('public', $headers['Cache-Control']);
$response->sharable(false);
$headers = $response->header();
$this->assertEquals('private', $headers['Cache-Control']);
$response->expects($this->at(1))->method('_sendHeader')->with('Cache-Control', 'private');
$response->send();
$this->assertFalse($response->sharable());
$response->sharable(true);
$this->assertTrue($response->sharable());
$response = new Response();
$response->sharable(true, 3600);
$headers = $response->header();
$this->assertEquals('public, s-maxage=3600', $headers['Cache-Control']);
$response = new Response();
$response->sharable(false, 3600);
$headers = $response->header();
$this->assertEquals('private, max-age=3600', $headers['Cache-Control']);
$response->send();
}