The pattern can contain IPv4 and IPv6 addresses (including IPv6 wrapped IPv4 addresses).
/** * @dataProvider validAndInvalidIpPatterns * @test */ public function requestMatchingBasicallyWorks($pattern, $ip, $expected) { $requestMock = $this->getMockBuilder(Request::class)->disableOriginalConstructor()->setMethods(array('getClientIpAddress'))->getMock(); $requestMock->expects($this->once())->method('getClientIpAddress')->will($this->returnValue($ip)); $actionRequestMock = $this->getMockBuilder(ActionRequest::class)->disableOriginalConstructor()->getMock(); $actionRequestMock->expects($this->any())->method('getHttpRequest')->will($this->returnValue($requestMock)); $requestPattern = new Ip(['cidrPattern' => $pattern]); $this->assertEquals($expected, $requestPattern->matchRequest($actionRequestMock)); }