]> BookStack Code Mirror - bookstack/blob - tests/Unit/IpFormatterTest.php
Merge pull request #5627 from BookStackApp/lexical_20250525
[bookstack] / tests / Unit / IpFormatterTest.php
1 <?php
2
3 namespace Tests\Unit;
4
5 use BookStack\Activity\Tools\IpFormatter;
6 use Tests\TestCase;
7
8 class IpFormatterTest extends TestCase
9 {
10     public function test_ips_formatted_as_expected()
11     {
12         $this->assertEquals('192.123.45.5', (new IpFormatter('192.123.45.5', 4))->format());
13         $this->assertEquals('192.123.45.x', (new IpFormatter('192.123.45.5', 3))->format());
14         $this->assertEquals('192.123.x.x', (new IpFormatter('192.123.45.5', 2))->format());
15         $this->assertEquals('192.x.x.x', (new IpFormatter('192.123.45.5', 1))->format());
16         $this->assertEquals('x.x.x.x', (new IpFormatter('192.123.45.5', 0))->format());
17
18         $ipv6 = '2001:db8:85a3:8d3:1319:8a2e:370:7348';
19         $this->assertEquals($ipv6, (new IpFormatter($ipv6, 4))->format());
20         $this->assertEquals('2001:db8:85a3:8d3:1319:8a2e:x:x', (new IpFormatter($ipv6, 3))->format());
21         $this->assertEquals('2001:db8:85a3:8d3:x:x:x:x', (new IpFormatter($ipv6, 2))->format());
22         $this->assertEquals('2001:db8:x:x:x:x:x:x', (new IpFormatter($ipv6, 1))->format());
23         $this->assertEquals('x:x:x:x:x:x:x:x', (new IpFormatter($ipv6, 0))->format());
24     }
25
26     public function test_shortened_ipv6_addresses_expands_as_expected()
27     {
28         $this->assertEquals('2001:0:0:0:0:0:x:x', (new IpFormatter('2001::370:7348', 3))->format());
29         $this->assertEquals('2001:0:0:0:0:85a3:x:x', (new IpFormatter('2001::85a3:370:7348', 3))->format());
30         $this->assertEquals('2001:0:x:x:x:x:x:x', (new IpFormatter('2001::', 1))->format());
31     }
32 }