Projet

Général

Profil

Paste
Télécharger (3,68 ko) Statistiques
| Branche: | Révision:

root / drupal7 / sites / all / modules / recaptcha / recaptcha-php / tests / ReCaptcha / RequestMethod / SocketPostTest.php @ be58a50c

1
<?php
2
/**
3
 * This is a PHP library that handles calling reCAPTCHA.
4
 *
5
 * @copyright Copyright (c) 2015, Google Inc.
6
 * @link      http://www.google.com/recaptcha
7
 *
8
 * Permission is hereby granted, free of charge, to any person obtaining a copy
9
 * of this software and associated documentation files (the "Software"), to deal
10
 * in the Software without restriction, including without limitation the rights
11
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
12
 * copies of the Software, and to permit persons to whom the Software is
13
 * furnished to do so, subject to the following conditions:
14
 *
15
 * The above copyright notice and this permission notice shall be included in
16
 * all copies or substantial portions of the Software.
17
 *
18
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
24
 * THE SOFTWARE.
25
 */
26

    
27
namespace ReCaptcha\RequestMethod;
28

    
29
use ReCaptcha\RequestParameters;
30

    
31
class SocketPostTest extends \PHPUnit_Framework_TestCase
32
{
33

    
34
    public function testSubmitSuccess()
35
    {
36
        $socket = $this->getMock('\\ReCaptcha\\RequestMethod\\Socket', array('fsockopen', 'fwrite', 'fgets', 'feof', 'fclose'));
37
        $socket->expects($this->once())
38
                ->method('fsockopen')
39
                ->willReturn(true);
40
        $socket->expects($this->once())
41
                ->method('fwrite');
42
        $socket->expects($this->once())
43
                ->method('fgets')
44
                ->willReturn("HTTP/1.1 200 OK\n\nRESPONSEBODY");
45
        $socket->expects($this->exactly(2))
46
                ->method('feof')
47
                ->will($this->onConsecutiveCalls(false, true));
48
        $socket->expects($this->once())
49
                ->method('fclose')
50
                ->willReturn(true);
51

    
52
        $ps = new SocketPost($socket);
53
        $response = $ps->submit(new RequestParameters("secret", "response", "remoteip", "version"));
54
        $this->assertEquals('RESPONSEBODY', $response);
55
    }
56

    
57
    public function testSubmitBadResponse()
58
    {
59
        $socket = $this->getMock('\\ReCaptcha\\RequestMethod\\Socket', array('fsockopen', 'fwrite', 'fgets', 'feof', 'fclose'));
60
        $socket->expects($this->once())
61
                ->method('fsockopen')
62
                ->willReturn(true);
63
        $socket->expects($this->once())
64
                ->method('fwrite');
65
        $socket->expects($this->once())
66
                ->method('fgets')
67
                ->willReturn("HTTP/1.1 500 NOPEn\\nBOBBINS");
68
        $socket->expects($this->exactly(2))
69
                ->method('feof')
70
                ->will($this->onConsecutiveCalls(false, true));
71
        $socket->expects($this->once())
72
                ->method('fclose')
73
                ->willReturn(true);
74

    
75
        $ps = new SocketPost($socket);
76
        $response = $ps->submit(new RequestParameters("secret", "response", "remoteip", "version"));
77
        $this->assertEquals(SocketPost::BAD_RESPONSE, $response);
78
    }
79

    
80
    public function testSubmitBadRequest()
81
    {
82
        $socket = $this->getMock('\\ReCaptcha\\RequestMethod\\Socket', array('fsockopen'));
83
        $socket->expects($this->once())
84
                ->method('fsockopen')
85
                ->willReturn(false);
86
        $ps = new SocketPost($socket);
87
        $response = $ps->submit(new RequestParameters("secret", "response", "remoteip", "version"));
88
        $this->assertEquals(SocketPost::BAD_REQUEST, $response);
89
    }
90
}