/** * Tests getting and setting the headers on a response * @return void */ public function testHeaders() { $response = new \Nimbles\Http\Response(); $this->assertInstanceOf('Nimbles\\Http\\Header\\Collection', $response->getHeader()); $response->setHeader('Content-Type', 'text/plain'); $this->assertTrue($response->getHeader()->offsetExists('Content-Type')); $this->assertInstanceOf('\\Nimbles\\Http\\Header', $response->getHeader('Content-Type')); $this->assertEquals('Content-Type: text/plain', (string) $response->getHeader('Content-Type')); $this->assertInstanceOf('\\Nimbles\\Http\\Header', $response->header->getHeader('Content-Type')); $this->assertEquals('Content-Type: text/plain', (string) $response->header->getHeader('Content-Type')); $this->assertInstanceOf('\\Nimbles\\Http\\Header', $response->header->{'Content-Type'}); $this->assertEquals('Content-Type: text/plain', (string) $response->header->{'Content-Type'}); $this->assertNull($response->getHeader('Content-Length')); $response->setHeaders(array(\Nimbles\Http\Header::factory('Allow', array('GET', 'HEAD')), 'Content-Length: 348', 'Content-Location' => '/123', 'Pragma' => \Nimbles\Http\Header::factory('Pragma', 'no-cache'), 'Foo' => \Nimbles\Http\Header::factory('WWW-Authenticate: Basic'))); $this->assertTrue($response->getHeader()->offsetExists('Allow')); $this->assertTrue($response->getHeader()->offsetExists('Content-Length')); $this->assertTrue($response->getHeader()->offsetExists('Content-Location')); $this->assertTrue($response->getHeader()->offsetExists('Pragma')); $this->assertTrue($response->getHeader()->offsetExists('WWW-Authenticate')); $this->assertInstanceOf('\\Nimbles\\Http\\Header', $response->getHeader('Allow')); $this->assertInstanceOf('\\Nimbles\\Http\\Header', $response->getHeader('Content-Length')); $this->assertInstanceOf('\\Nimbles\\Http\\Header', $response->getHeader('Content-Location')); $this->assertInstanceOf('\\Nimbles\\Http\\Header', $response->getHeader('Pragma')); $this->assertInstanceOf('\\Nimbles\\Http\\Header', $response->getHeader('WWW-Authenticate')); }
/** * Tests the factory of headers * @dataProvider factoryProvider * @param string $name * @param string $string * @param string $expectedName * @param string $expectedValue * @param string $expectedValue * @return void */ public function testFactory($name, $string, $expectedName, $expectedValue, $expectedToString) { $header = \Nimbles\Http\Header::factory($name, $string); $this->assertEquals($expectedName, $header->getName()); $this->assertEquals($expectedValue, $header->getValue()); $this->assertEquals($expectedToString, (string) $header); }
/** * Sets a header * * @param string|\Nimbles\Http\Header $name * @param string|\Nimbles\Http\Header|array|null $value * @param bool $append * @return \Nimbles\Http\Header\Collection */ public function setHeader($name, $value = null, $append = false) { $append = (bool) $append; if (is_array($name) || $name instanceof \ArrayObject) { foreach ($name as $index => $header) { if (is_string($index)) { $this->setHeader($index, $header); } else { $this->setHeader($header); } } } else { if ($name instanceof Header) { $header = $name; $name = $header->getName(); if ($append && $this->offsetExists($name)) { $this[$name]->merge($header); } else { $this[$name] = $header; } } else { if (is_string($name)) { if ($value instanceof Header) { $name = $value->getName(); // sync to the headers name $value = $value->getValue(); // converts to null, string or array } if (is_string($value) || null === $value) { $value = array($value); } foreach ($value as $string) { $header = Header::factory($name, $string); $name = $header->getName(); if ($append && array_key_exists($name, $this)) { $this[$name]->merge($header); } else { $this[$name] = $header; } } } } } return $this; }