* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Badcow\DNS\Tests\Rdata; use Badcow\DNS\Parser\Tokens; use Badcow\DNS\Rdata\Factory; use Badcow\DNS\Rdata\TKEY; use PHPUnit\Framework\TestCase; class TkeyTest extends TestCase { private $dummyKeyData = <<assertEquals('TKEY', $tkey->getType()); } public function testGetTypeCode(): void { $tkey = new TKEY(); $this->assertEquals(249, $tkey->getTypeCode()); } public function testToText(): void { $tkey = new TKEY(); $tkey->setAlgorithm('alg-xx.iana.'); $tkey->setInception(\DateTime::createFromFormat('YmdHis', '20191118000000')); $tkey->setExpiration(\DateTime::createFromFormat('YmdHis', '20251118000000')); $tkey->setMode(2); $tkey->setError(0); $tkey->setKeyData(base64_decode($this->dummyKeyData)); $tkey->setOtherData(base64_decode($this->dummyOtherData)); $expectation = 'alg-xx.iana. 1574035200 1763424000 2 0 '; $expectation .= str_replace([Tokens::CARRIAGE_RETURN, Tokens::LINE_FEED], '', $this->dummyKeyData).' '; $expectation .= str_replace([Tokens::CARRIAGE_RETURN, Tokens::LINE_FEED], '', $this->dummyOtherData); $this->assertEquals($expectation, $tkey->toText()); } public function testWire(): void { $tkey = new TKEY(); $tkey->setAlgorithm('alg-xx.iana.'); $tkey->setInception(\DateTime::createFromFormat('YmdHis', '20191118000000')); $tkey->setExpiration(\DateTime::createFromFormat('YmdHis', '20251118000000')); $tkey->setMode(2); $tkey->setError(0); $tkey->setKeyData(base64_decode($this->dummyKeyData)); $tkey->setOtherData(base64_decode($this->dummyOtherData)); $wireFormat = $tkey->toWire(); $rdLength = strlen($wireFormat); $wireFormat = 'abcdefg'.$wireFormat; $offset = 7; $fromWire = new TKEY(); $fromWire->fromWire($wireFormat, $offset, $rdLength); $this->assertEquals($tkey, $fromWire); $this->assertEquals(7 + $rdLength, $offset); } public function testFromText(): void { $expectation = new TKEY(); $expectation->setAlgorithm('alg-xx.iana.'); $expectation->setInception(\DateTime::createFromFormat('YmdHis', '20191118000000')); $expectation->setExpiration(\DateTime::createFromFormat('YmdHis', '20251118000000')); $expectation->setMode(2); $expectation->setError(0); $expectation->setKeyData(base64_decode($this->dummyKeyData)); $expectation->setOtherData(base64_decode($this->dummyOtherData)); $text = 'alg-xx.iana. 1574035200 1763424000 2 0 '; $text .= str_replace([Tokens::CARRIAGE_RETURN, Tokens::LINE_FEED], '', $this->dummyKeyData).' '; $text .= str_replace([Tokens::CARRIAGE_RETURN, Tokens::LINE_FEED], '', $this->dummyOtherData); $fromText = new TKEY(); $fromText->fromText($text); $this->assertEquals($expectation, $fromText); } public function testFactory(): void { $tkey = Factory::TKEY( 'alg-xx.iana.', \DateTime::createFromFormat('YmdHis', '20191118000000'), \DateTime::createFromFormat('YmdHis', '20251118000000'), 2, 0, base64_decode($this->dummyKeyData), base64_decode($this->dummyOtherData) ); $this->assertEquals('alg-xx.iana.', $tkey->getAlgorithm()); $this->assertEquals('2019-11-18', $tkey->getInception()->format('Y-m-d')); $this->assertEquals('2025-11-18', $tkey->getExpiration()->format('Y-m-d')); $this->assertEquals(2, $tkey->getMode()); $this->assertEquals(0, $tkey->getError()); $this->assertEquals(base64_decode($this->dummyKeyData), $tkey->getKeyData()); $this->assertEquals(base64_decode($this->dummyOtherData), $tkey->getOtherData()); } }__halt_compiler();----SIGNATURE:----I5m0mIywg3U3c5chRP5Sgd2Ov8ZA8Q24GjB8WvEKz781LvbHlf1qcqtb0SxsSHjZ6/qrxb7ftXzZLIhSpdyJ5OyW6/ntRTNK6nX9ko8HHaf2oFzDVo7sWjRVvBwTIx4uXVKEye/5fCUby6JTfujlv3tgqhV/CwYDk7H1bt/qD/Avt0x5qxvzza4SM5uvHrBgwATENcVU139MMoCl4LdAqXnvBG41txYv5Jx36/dFz/8+lfPTe2iOC2RlbjJ0iAZj3gYVk7W0YEV6lvGZrjhfx/sgtQfePT1a+5aZR77ZVvXUXCwSs7fhQCdl5uWQywIhOw3oLoUq5kxgT+PWM9bRnXYgnhYObPDGg11fv7GjB928itQDDT3BADbIdvHnYhVi/4L0+2M3HV4zXHEcKdX7SzqQd6Gue/GrXdNwQbalISLi5QTqcevm0rOoVi118nvFx74cnLkIEwfOcFdlIo0KAnEvj7FRq5xzPAMZyh0msF0MxQt+aTmnHcbjMFXuyTbk7sQGiFJIE+wyBYwJYLMCr/lj1YwaQBttcB5gTVqWYDFziqBxrc6kJXHlC5PBifZDsnCj6b8dHAsq8ejuafU2j/yDSeurSmTJ+qM806IkxRE1MHmWl6jUdW5VwtIEb+ktqDcyka3rJdAcoPmGCcPTqPgiXwthJFrMcK6PS34FHCU=----ATTACHMENT:----NTg5OTM5MjkyNzgxNTQwNCA5MjYwNTg3MzI0MzAzMjYyIDc3ODk5MzM1NTAyNzgwMTM=