summaryrefslogtreecommitdiff
path: root/net/pear-Net_IPv6/files/patch-tests_AllTests.php
diff options
context:
space:
mode:
authorReid Linnemann <rlinnemann@netgate.com>2022-08-12 08:19:58 -0300
committerRenato Botelho <garga@FreeBSD.org>2022-08-12 08:23:28 -0300
commit1e7a9cbf5afa5e830a90b4285b5da0202d55f404 (patch)
tree426923cc55db71f064d5999e9e7349d9723068a1 /net/pear-Net_IPv6/files/patch-tests_AllTests.php
parentdevel/boost-python-libs: limit python 3.8-3.10 as py-numpy used yet (diff)
net/pear-Net_IPv6: Add patches for handling zones
Summary: The upstream Net/IPv6 package from PEAR has significant bugs revolving around handling of string presentation v6 addresses which have RFC 4007 zones. Patches are added in this commit to address them plus a handful of other errors until an updated version of the package becomes available with these changes included. * Add getZone() and removeZone() class methods * Alter SplitV64() to remove any zone before attempting to split an address into v6 and v4 parts. The zone has no meaning in this context * Alter compress to remove and restore a zone prior to restoring a prefix * Alter compress() to rejoin a compressed v6 part with a v4 part with a colon if the v6 part does not already end with one * Fix undefined variable '$address' in isCompressible() * Ensure no zone is present at the end of an address in _ip2Bin(). The zone is not a part of the binary address * Change string/int arithmetic to int/int arithmetic in _ip2Bin by mapping exploded v4 address octets to integer values * Fix unit tests to work in modern versions of php and phpunit * Align test case class name with source file name * Use phpunit namespaces * Make return type of AllTests::setUp() the expected 'void' In addition, eight unit tests are added for basic verification of zone handling. Sponsored by: Rubicon Communications, LLC ("Netgate") Differential Revision: https://reviews.freebsd.org/D36151
Diffstat (limited to 'net/pear-Net_IPv6/files/patch-tests_AllTests.php')
-rw-r--r--net/pear-Net_IPv6/files/patch-tests_AllTests.php140
1 files changed, 140 insertions, 0 deletions
diff --git a/net/pear-Net_IPv6/files/patch-tests_AllTests.php b/net/pear-Net_IPv6/files/patch-tests_AllTests.php
new file mode 100644
index 000000000000..cfdf881b41b5
--- /dev/null
+++ b/net/pear-Net_IPv6/files/patch-tests_AllTests.php
@@ -0,0 +1,140 @@
+--- tests/AllTests.php.orig 2022-08-11 19:31:42 UTC
++++ tests/AllTests.php
+@@ -19,6 +19,7 @@ require_once "Net/IPv6.php";
+ // $Id: AllTests.php 340792 2016-10-29 14:56:52Z alexmerz $
+
+ require_once "Net/IPv6.php";
++use PHPUnit\Framework\TestCase;
+
+ /**
+ * This testcases tests for several bugs and general topics
+@@ -28,7 +29,7 @@ require_once "Net/IPv6.php";
+ * @version $Id: AllTests.php 340792 2016-10-29 14:56:52Z alexmerz $
+ * @access public
+ */
+-class NetIPv6Test extends PHPUnit_Framework_TestCase {
++class AllTests extends TestCase {
+
+ protected $ip;
+
+@@ -39,7 +40,7 @@ class NetIPv6Test extends PHPUnit_Framework_TestCase {
+ return $method;
+ }
+
+- public function setUp() {
++ public function setUp(): void {
+ $this->ip = new Net_IPv6();
+ }
+
+@@ -742,6 +743,109 @@ class NetIPv6Test extends PHPUnit_Framework_TestCase {
+ $netmask = '::ffff/96';
+ $testip = '0:0:0:0:0:ffff:c000:22f';
+ $this->assertTrue(Net_IPv6::isInNetmask($testip, $netmask));
++ }
++
++ /**
++ * tests if checkIPv6 can handle addresses with zone
++ * @author Reid Linnemann <rlinnemann@netgate.com>
++ */
++ public function testCheckIPv6WithZone() {
++ $testip = 'fe80::de:ad:be:ef%zone.name';
++ $is = $this->ip->checkIPv6($testip);
++
++ $this->assertTrue($is);
++ }
++
++ /**
++ * tests if splitV64 can handle addresses with zone
++ * @author Reid Linnemann <rlinnemann@netgate.com>
++ */
++ public function testSplitV64WithZone() {
++ $testip = 'fe80::de:ad:be:ef%zone.name';
++ $zonelessip = 'fe80::de:ad:be:ef';
++ $items = $this->ip->SplitV64($testip, false);
++
++ $this->assertEquals(2, count($items));
++ $this->assertEmpty($items[1]);
++ $this->assertEquals($zonelessip, $items[0]);
++ }
++
++ /**
++ * tests zoned address compression
++ * @author Reid Linnemann
++ */
++ public function testCompressWithZone() {
++ $uncompressedip = 'fe80:0:0:0:de:ad:be:ef%zone.name';
++ $compressedip = 'fe80::de:ad:be:ef%zone.name';
++
++ $testip = $this->ip->compress($uncompressedip, false);
++
++ $this->assertEquals($compressedip, $testip);
++ }
++
++ /**
++ * tests zoned address compression with IPv4 part
++ * @author Reid Linnemann
++ */
++ public function testCompressWithIPv4AndZone() {
++ $uncompressedip = 'fe80:0:0:0:dead:beef:172.10.1.1%zone.name';
++ $compressedip = 'fe80::dead:beef:172.10.1.1%zone.name';
++
++ $testip = $this->ip->compress($uncompressedip, false);
++
++ $this->assertEquals($compressedip, $testip);
++ }
++
++ /**
++ * tests zoned address with prefix compression with IPv4 part
++ * @author Reid Linnemann
++ */
++ public function testCompressWithIPv4AndZoneAndPrefix() {
++ $uncompressedip = 'fe80:0:0:0:dead:beef:172.10.1.1%zone.name/64';
++ $compressedip = 'fe80::dead:beef:172.10.1.1%zone.name/64';
++
++ $testip = $this->ip->compress($uncompressedip, false);
++
++ $this->assertEquals($compressedip, $testip);
++ }
++
++ /**
++ * tests zoned address uncompression
++ * @author Reid Linnemann
++ */
++ public function testUncompressWithZone() {
++ $uncompressedip = 'fe80:0:0:0:de:ad:be:ef%zone.name';
++ $compressedip = 'fe80::de:ad:be:ef%zone.name';
++
++ $testip = $this->ip->uncompress($compressedip, false);
++
++ $this->assertEquals($uncompressedip, $testip);
++ }
++
++ /**
++ * tests zoned address uncompression with IPv4 part
++ * @author Reid Linnemann
++ */
++ public function testUncompressWithIPv4AndZone() {
++ $uncompressedip = 'fe80:0:0:0:dead:beef:172.10.1.1%zone.name';
++ $compressedip = 'fe80::dead:beef:172.10.1.1%zone.name';
++
++ $testip = $this->ip->uncompress($compressedip, false);
++
++ $this->assertEquals($uncompressedip, $testip);
++ }
++
++ /**
++ * tests zoned address with prefix uncompression with IPv4 part
++ * @author Reid Linnemann
++ */
++ public function testUncompressWithIPv4AndZoneAndPrefix() {
++ $uncompressedip = 'fe80:0:0:0:dead:beef:172.10.1.1%zone.name/64';
++ $compressedip = 'fe80::dead:beef:172.10.1.1%zone.name/64';
++
++ $testip = $this->ip->uncompress($compressedip, false);
++
++ $this->assertEquals($uncompressedip, $testip);
+ }
+
+-}
+\ No newline at end of file
++}