+
+ /**
+ * @covers ContribsPager::isQueryableRange
+ * @dataProvider provideQueryableRanges
+ */
+ public function testQueryableRanges( $ipRange ) {
+ $this->setMwGlobals( [
+ 'wgRangeContributionsCIDRLimit' => [
+ 'IPv4' => 16,
+ 'IPv6' => 32,
+ ],
+ ] );
+
+ $this->assertTrue(
+ $this->pager->isQueryableRange( $ipRange ),
+ "$ipRange is a queryable IP range"
+ );
+ }
+
+ public function provideQueryableRanges() {
+ return [
+ [ '116.17.184.5/32' ],
+ [ '0.17.184.5/16' ],
+ [ '2000::/32' ],
+ [ '2001:db8::/128' ],
+ ];
+ }
+
+ /**
+ * @covers ContribsPager::isQueryableRange
+ * @dataProvider provideUnqueryableRanges
+ */
+ public function testUnqueryableRanges( $ipRange ) {
+ $this->setMwGlobals( [
+ 'wgRangeContributionsCIDRLimit' => [
+ 'IPv4' => 16,
+ 'IPv6' => 32,
+ ],
+ ] );
+
+ $this->assertFalse(
+ $this->pager->isQueryableRange( $ipRange ),
+ "$ipRange is not a queryable IP range"
+ );
+ }
+
+ public function provideUnqueryableRanges() {
+ return [
+ [ '116.17.184.5/33' ],
+ [ '0.17.184.5/15' ],
+ [ '2000::/31' ],
+ [ '2001:db8::/9999' ],
+ ];
+ }