You are here

public function SocketPostTest::testOverrideSiteVerifyUrl in reCAPTCHA 7.2

File

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

Class

SocketPostTest

Namespace

ReCaptcha\RequestMethod

Code

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);
}