ThrottleLoginsTest.php 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. <?php
  2. namespace Laravel\Ui\Tests\AuthBackend;
  3. use Illuminate\Foundation\Auth\ThrottlesLogins;
  4. use Orchestra\Testbench\TestCase;
  5. use Illuminate\Http\Request;
  6. use PHPUnit\Framework\MockObject\MockObject;
  7. class ThrottleLoginsTest extends TestCase
  8. {
  9. /**
  10. * @test
  11. * @dataProvider emailProvider
  12. */
  13. public function it_can_generate_throttle_key(string $email, string $expectedEmail): void
  14. {
  15. $throttle = $this->getMockForTrait(ThrottlesLogins::class, [], '', true, true, true, ['username']);
  16. $throttle->method('username')->willReturn('email');
  17. $reflection = new \ReflectionClass($throttle);
  18. $method = $reflection->getMethod('throttleKey');
  19. $method->setAccessible(true);
  20. $request = $this->mock(Request::class);
  21. $request->expects('input')->with('email')->andReturn($email);
  22. $request->expects('ip')->andReturn('192.168.0.1');
  23. $this->assertSame($expectedEmail . '|192.168.0.1', $method->invoke($throttle, $request));
  24. }
  25. public function emailProvider(): array
  26. {
  27. return [
  28. 'lowercase special characters' => ['ⓣⓔⓢⓣ@ⓛⓐⓡⓐⓥⓔⓛ.ⓒⓞⓜ', 'test@laravel.com'],
  29. 'uppercase special characters' => ['ⓉⒺⓈⓉ@ⓁⒶⓇⒶⓋⒺⓁ.ⒸⓄⓂ', 'test@laravel.com'],
  30. 'special character numbers' =>['test⑩⓸③@laravel.com', 'test1043@laravel.com'],
  31. 'default email' => ['test@laravel.com', 'test@laravel.com'],
  32. ];
  33. }
  34. }