You are here

class SocketPostTest in reCAPTCHA 7.2

Same name and namespace in other branches
  1. 6.2 recaptcha-php/tests/ReCaptcha/RequestMethod/SocketPostTest.php \ReCaptcha\RequestMethod\SocketPostTest

Hierarchy

  • class \ReCaptcha\RequestMethod\SocketPostTest extends \PHPUnit\Framework\TestCase

Expanded class hierarchy of SocketPostTest

File

recaptcha-php/tests/ReCaptcha/RequestMethod/SocketPostTest.php, line 33

Namespace

ReCaptcha\RequestMethod
View source
class SocketPostTest extends TestCase {
  public function testSubmitSuccess() {
    $socket = $this
      ->getMockBuilder(\ReCaptcha\RequestMethod\Socket::class)
      ->disableOriginalConstructor()
      ->setMethods(array(
      'fsockopen',
      'fwrite',
      'fgets',
      'feof',
      'fclose',
    ))
      ->getMock();
    $socket
      ->expects($this
      ->once())
      ->method('fsockopen')
      ->willReturn(true);
    $socket
      ->expects($this
      ->once())
      ->method('fwrite');
    $socket
      ->expects($this
      ->once())
      ->method('fgets')
      ->willReturn("HTTP/1.1 200 OK\n\nRESPONSEBODY");
    $socket
      ->expects($this
      ->exactly(2))
      ->method('feof')
      ->will($this
      ->onConsecutiveCalls(false, true));
    $socket
      ->expects($this
      ->once())
      ->method('fclose')
      ->willReturn(true);
    $ps = new SocketPost($socket);
    $response = $ps
      ->submit(new RequestParameters("secret", "response", "remoteip", "version"));
    $this
      ->assertEquals('RESPONSEBODY', $response);
  }
  public function testOverrideSiteVerifyUrl() {
    $socket = $this
      ->getMockBuilder(\ReCaptcha\RequestMethod\Socket::class)
      ->disableOriginalConstructor()
      ->setMethods(array(
      'fsockopen',
      'fwrite',
      'fgets',
      'feof',
      'fclose',
    ))
      ->getMock();
    $socket
      ->expects($this
      ->once())
      ->method('fsockopen')
      ->with('ssl://over.ride', 443, 0, '', 30)
      ->willReturn(true);
    $socket
      ->expects($this
      ->once())
      ->method('fwrite')
      ->with($this
      ->matchesRegularExpression('/^POST \\/some\\/path.*Host: over\\.ride/s'));
    $socket
      ->expects($this
      ->once())
      ->method('fgets')
      ->willReturn("HTTP/1.1 200 OK\n\nRESPONSEBODY");
    $socket
      ->expects($this
      ->exactly(2))
      ->method('feof')
      ->will($this
      ->onConsecutiveCalls(false, true));
    $socket
      ->expects($this
      ->once())
      ->method('fclose')
      ->willReturn(true);
    $ps = new SocketPost($socket, 'https://over.ride/some/path');
    $response = $ps
      ->submit(new RequestParameters("secret", "response", "remoteip", "version"));
    $this
      ->assertEquals('RESPONSEBODY', $response);
  }
  public function testSubmitBadResponse() {
    $socket = $this
      ->getMockBuilder(\ReCaptcha\RequestMethod\Socket::class)
      ->disableOriginalConstructor()
      ->setMethods(array(
      'fsockopen',
      'fwrite',
      'fgets',
      'feof',
      'fclose',
    ))
      ->getMock();
    $socket
      ->expects($this
      ->once())
      ->method('fsockopen')
      ->willReturn(true);
    $socket
      ->expects($this
      ->once())
      ->method('fwrite');
    $socket
      ->expects($this
      ->once())
      ->method('fgets')
      ->willReturn("HTTP/1.1 500 NOPEn\\nBOBBINS");
    $socket
      ->expects($this
      ->exactly(2))
      ->method('feof')
      ->will($this
      ->onConsecutiveCalls(false, true));
    $socket
      ->expects($this
      ->once())
      ->method('fclose')
      ->willReturn(true);
    $ps = new SocketPost($socket);
    $response = $ps
      ->submit(new RequestParameters("secret", "response", "remoteip", "version"));
    $this
      ->assertEquals('{"success": false, "error-codes": ["' . ReCaptcha::E_BAD_RESPONSE . '"]}', $response);
  }
  public function testConnectionFailureReturnsError() {
    $socket = $this
      ->getMockBuilder(\ReCaptcha\RequestMethod\Socket::class)
      ->disableOriginalConstructor()
      ->setMethods(array(
      'fsockopen',
    ))
      ->getMock();
    $socket
      ->expects($this
      ->once())
      ->method('fsockopen')
      ->willReturn(false);
    $ps = new SocketPost($socket);
    $response = $ps
      ->submit(new RequestParameters("secret", "response", "remoteip", "version"));
    $this
      ->assertEquals('{"success": false, "error-codes": ["' . ReCaptcha::E_CONNECTION_FAILED . '"]}', $response);
  }

}

Members