/**
  * @dataProvider provideCheckIpLimits
  */
 public function testCheckIpLimits($ip, $sessionData, $userData, $logLevel1, $logLevel2)
 {
     $this->setMwGlobals(array('wgSuspiciousIpPerSessionLimit' => 5, 'wgSuspiciousIpPerUserLimit' => 10, 'wgSuspiciousIpExpiry' => 600, 'wgSquidServers' => array('11.22.33.44')));
     $manager = new SessionManager();
     $logger = $this->getMock('\\Psr\\Log\\LoggerInterface');
     $this->setLogger('session-ip', $logger);
     $request = new \FauxRequest();
     $request->setIP($ip);
     $session = $manager->getSessionForRequest($request);
     /** @var SessionBackend $backend */
     $backend = \TestingAccessWrapper::newFromObject($session)->backend;
     $data =& $backend->getData();
     $data = array('SessionManager-ip' => $sessionData);
     $backend->setUser(User::newFromName('UTSysop'));
     $manager = \TestingAccessWrapper::newFromObject($manager);
     $manager->store->set('SessionManager-ip:' . md5('UTSysop'), $userData);
     $logger->expects($this->exactly(isset($logLevel1) + isset($logLevel2)))->method('log');
     if ($logLevel1) {
         $logger->expects($this->at(0))->method('log')->with($logLevel1, 'Same session used from {count} IPs', $this->isType('array'));
     }
     if ($logLevel2) {
         $logger->expects($this->at(isset($logLevel1)))->method('log')->with($logLevel2, 'Same user had sessions from {count} IPs', $this->isType('array'));
     }
     $manager->checkIpLimits($session);
 }