Chris@0: Chris@0: * Chris@0: * For the full copyright and license information, please view the LICENSE Chris@0: * file that was distributed with this source code. Chris@0: */ Chris@0: Chris@0: namespace Symfony\Bridge\PhpUnit\Tests; Chris@0: Chris@0: use PHPUnit\Framework\TestCase; Chris@0: use Symfony\Bridge\PhpUnit\DnsMock; Chris@0: Chris@0: class DnsMockTest extends TestCase Chris@0: { Chris@0: protected function tearDown() Chris@0: { Chris@0: DnsMock::withMockedHosts(array()); Chris@0: } Chris@0: Chris@0: public function testCheckdnsrr() Chris@0: { Chris@0: DnsMock::withMockedHosts(array('example.com' => array(array('type' => 'MX')))); Chris@0: $this->assertTrue(DnsMock::checkdnsrr('example.com')); Chris@0: Chris@0: DnsMock::withMockedHosts(array('example.com' => array(array('type' => 'A')))); Chris@0: $this->assertFalse(DnsMock::checkdnsrr('example.com')); Chris@0: $this->assertTrue(DnsMock::checkdnsrr('example.com', 'a')); Chris@0: $this->assertTrue(DnsMock::checkdnsrr('example.com', 'any')); Chris@0: $this->assertFalse(DnsMock::checkdnsrr('foobar.com', 'ANY')); Chris@0: } Chris@0: Chris@0: public function testGetmxrr() Chris@0: { Chris@0: DnsMock::withMockedHosts(array( Chris@0: 'example.com' => array(array( Chris@0: 'type' => 'MX', Chris@0: 'host' => 'mx.example.com', Chris@0: 'pri' => 10, Chris@0: )), Chris@0: )); Chris@0: Chris@0: $this->assertFalse(DnsMock::getmxrr('foobar.com', $mxhosts, $weight)); Chris@0: $this->assertTrue(DnsMock::getmxrr('example.com', $mxhosts, $weight)); Chris@0: $this->assertSame(array('mx.example.com'), $mxhosts); Chris@0: $this->assertSame(array(10), $weight); Chris@0: } Chris@0: Chris@0: public function testGethostbyaddr() Chris@0: { Chris@0: DnsMock::withMockedHosts(array( Chris@0: 'example.com' => array( Chris@0: array( Chris@0: 'type' => 'A', Chris@0: 'ip' => '1.2.3.4', Chris@0: ), Chris@0: array( Chris@0: 'type' => 'AAAA', Chris@0: 'ipv6' => '::12', Chris@0: ), Chris@0: ), Chris@0: )); Chris@0: Chris@0: $this->assertSame('::21', DnsMock::gethostbyaddr('::21')); Chris@0: $this->assertSame('example.com', DnsMock::gethostbyaddr('::12')); Chris@0: $this->assertSame('example.com', DnsMock::gethostbyaddr('1.2.3.4')); Chris@0: } Chris@0: Chris@0: public function testGethostbyname() Chris@0: { Chris@0: DnsMock::withMockedHosts(array( Chris@0: 'example.com' => array( Chris@0: array( Chris@0: 'type' => 'AAAA', Chris@0: 'ipv6' => '::12', Chris@0: ), Chris@0: array( Chris@0: 'type' => 'A', Chris@0: 'ip' => '1.2.3.4', Chris@0: ), Chris@0: ), Chris@0: )); Chris@0: Chris@0: $this->assertSame('foobar.com', DnsMock::gethostbyname('foobar.com')); Chris@0: $this->assertSame('1.2.3.4', DnsMock::gethostbyname('example.com')); Chris@0: } Chris@0: Chris@0: public function testGethostbynamel() Chris@0: { Chris@0: DnsMock::withMockedHosts(array( Chris@0: 'example.com' => array( Chris@0: array( Chris@0: 'type' => 'A', Chris@0: 'ip' => '1.2.3.4', Chris@0: ), Chris@0: array( Chris@0: 'type' => 'A', Chris@0: 'ip' => '2.3.4.5', Chris@0: ), Chris@0: ), Chris@0: )); Chris@0: Chris@0: $this->assertFalse(DnsMock::gethostbynamel('foobar.com')); Chris@0: $this->assertSame(array('1.2.3.4', '2.3.4.5'), DnsMock::gethostbynamel('example.com')); Chris@0: } Chris@0: Chris@0: public function testDnsGetRecord() Chris@0: { Chris@0: DnsMock::withMockedHosts(array( Chris@0: 'example.com' => array( Chris@0: array( Chris@0: 'type' => 'A', Chris@0: 'ip' => '1.2.3.4', Chris@0: ), Chris@0: array( Chris@0: 'type' => 'PTR', Chris@0: 'ip' => '2.3.4.5', Chris@0: ), Chris@0: ), Chris@0: )); Chris@0: Chris@0: $records = array( Chris@0: array( Chris@0: 'host' => 'example.com', Chris@0: 'class' => 'IN', Chris@0: 'ttl' => 1, Chris@0: 'type' => 'A', Chris@0: 'ip' => '1.2.3.4', Chris@0: ), Chris@0: $ptr = array( Chris@0: 'host' => 'example.com', Chris@0: 'class' => 'IN', Chris@0: 'ttl' => 1, Chris@0: 'type' => 'PTR', Chris@0: 'ip' => '2.3.4.5', Chris@0: ), Chris@0: ); Chris@0: Chris@0: $this->assertFalse(DnsMock::dns_get_record('foobar.com')); Chris@0: $this->assertSame($records, DnsMock::dns_get_record('example.com')); Chris@0: $this->assertSame($records, DnsMock::dns_get_record('example.com', DNS_ALL)); Chris@0: $this->assertSame($records, DnsMock::dns_get_record('example.com', DNS_A | DNS_PTR)); Chris@0: $this->assertSame(array($ptr), DnsMock::dns_get_record('example.com', DNS_PTR)); Chris@0: } Chris@0: }