trafficlimiter.php 1.4 KB

123456789101112131415161718192021222324252627282930313233343536
  1. <?php
  2. class trafficlimiterTest extends PHPUnit_Framework_TestCase
  3. {
  4. private $_path;
  5. public function setUp()
  6. {
  7. /* Setup Routine */
  8. $this->_path = sys_get_temp_dir() . DIRECTORY_SEPARATOR . 'trafficlimit';
  9. trafficlimiter::setPath($this->_path);
  10. }
  11. public function tearDown()
  12. {
  13. /* Tear Down Routine */
  14. helper::rmdir($this->_path . DIRECTORY_SEPARATOR);
  15. }
  16. public function testTrafficGetsLimited()
  17. {
  18. $this->assertEquals($this->_path, trafficlimiter::getPath());
  19. $file = 'baz';
  20. $this->assertEquals($this->_path . DIRECTORY_SEPARATOR . $file, trafficlimiter::getPath($file));
  21. trafficlimiter::setLimit(4);
  22. $_SERVER['REMOTE_ADDR'] = '127.0.0.1';
  23. $this->assertTrue(trafficlimiter::canPass(), 'first request may pass');
  24. sleep(1);
  25. $this->assertFalse(trafficlimiter::canPass(), 'second request is to fast, may not pass');
  26. sleep(4);
  27. $this->assertTrue(trafficlimiter::canPass(), 'third request waited long enough and may pass');
  28. $_SERVER['REMOTE_ADDR'] = '2001:1620:2057:dead:beef::cafe:babe';
  29. $this->assertTrue(trafficlimiter::canPass(), 'fourth request has different ip and may pass');
  30. $_SERVER['REMOTE_ADDR'] = '127.0.0.1';
  31. $this->assertFalse(trafficlimiter::canPass(), 'fifth request is to fast, may not pass');
  32. }
  33. }