123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173 |
- <?php
- /**
- * This is a PHP library that handles calling reCAPTCHA.
- *
- * BSD 3-Clause License
- * @copyright (c) 2019, Google Inc.
- * @link https://www.google.com/recaptcha
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * 1. Redistributions of source code must retain the above copyright notice, this
- * list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * 3. Neither the name of the copyright holder nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
- namespace ReCaptcha;
- use PHPUnit\Framework\TestCase;
- class ResponseTest extends TestCase
- {
- /**
- * @dataProvider provideJson
- */
- public function testFromJson($json, $success, $errorCodes, $hostname, $challengeTs, $apkPackageName, $score, $action)
- {
- $response = Response::fromJson($json);
- $this->assertEquals($success, $response->isSuccess());
- $this->assertEquals($errorCodes, $response->getErrorCodes());
- $this->assertEquals($hostname, $response->getHostname());
- $this->assertEquals($challengeTs, $response->getChallengeTs());
- $this->assertEquals($apkPackageName, $response->getApkPackageName());
- $this->assertEquals($score, $response->getScore());
- $this->assertEquals($action, $response->getAction());
- }
- public function provideJson()
- {
- return array(
- array(
- '{"success": true}',
- true, array(), null, null, null, null, null,
- ),
- array(
- '{"success": true, "hostname": "google.com"}',
- true, array(), 'google.com', null, null, null, null,
- ),
- array(
- '{"success": false, "error-codes": ["test"]}',
- false, array('test'), null, null, null, null, null,
- ),
- array(
- '{"success": false, "error-codes": ["test"], "hostname": "google.com"}',
- false, array('test'), 'google.com', null, null, null, null,
- ),
- array(
- '{"success": false, "error-codes": ["test"], "hostname": "google.com", "challenge_ts": "timestamp", "apk_package_name": "apk", "score": "0.5", "action": "action"}',
- false, array('test'), 'google.com', 'timestamp', 'apk', 0.5, 'action',
- ),
- array(
- '{"success": true, "error-codes": ["test"]}',
- true, array(), null, null, null, null, null,
- ),
- array(
- '{"success": true, "error-codes": ["test"], "hostname": "google.com"}',
- true, array(), 'google.com', null, null, null, null,
- ),
- array(
- '{"success": false}',
- false, array(ReCaptcha::E_UNKNOWN_ERROR), null, null, null, null, null,
- ),
- array(
- '{"success": false, "hostname": "google.com"}',
- false, array(ReCaptcha::E_UNKNOWN_ERROR), 'google.com', null, null, null, null,
- ),
- array(
- 'BAD JSON',
- false, array(ReCaptcha::E_INVALID_JSON), null, null, null, null, null,
- ),
- );
- }
- public function testIsSuccess()
- {
- $response = new Response(true);
- $this->assertTrue($response->isSuccess());
- $response = new Response(false);
- $this->assertFalse($response->isSuccess());
- $response = new Response(true, array(), 'example.com');
- $this->assertEquals('example.com', $response->getHostName());
- }
- public function testGetErrorCodes()
- {
- $errorCodes = array('test');
- $response = new Response(true, $errorCodes);
- $this->assertEquals($errorCodes, $response->getErrorCodes());
- }
- public function testGetHostname()
- {
- $hostname = 'google.com';
- $errorCodes = array();
- $response = new Response(true, $errorCodes, $hostname);
- $this->assertEquals($hostname, $response->getHostname());
- }
- public function testGetChallengeTs()
- {
- $timestamp = 'timestamp';
- $errorCodes = array();
- $response = new Response(true, array(), 'hostname', $timestamp);
- $this->assertEquals($timestamp, $response->getChallengeTs());
- }
- public function TestGetApkPackageName()
- {
- $apk = 'apk';
- $response = new Response(true, array(), 'hostname', 'timestamp', 'apk');
- $this->assertEquals($apk, $response->getApkPackageName());
- }
- public function testGetScore()
- {
- $score = 0.5;
- $response = new Response(true, array(), 'hostname', 'timestamp', 'apk', $score);
- $this->assertEquals($score, $response->getScore());
- }
- public function testGetAction()
- {
- $action = 'homepage';
- $response = new Response(true, array(), 'hostname', 'timestamp', 'apk', '0.5', 'homepage');
- $this->assertEquals($action, $response->getAction());
- }
- public function testToArray()
- {
- $response = new Response(true, array(), 'hostname', 'timestamp', 'apk', '0.5', 'homepage');
- $expected = array(
- 'success' => true,
- 'error-codes' => array(),
- 'hostname' => 'hostname',
- 'challenge_ts' => 'timestamp',
- 'apk_package_name' => 'apk',
- 'score' => 0.5,
- 'action' => 'homepage',
- );
- $this->assertEquals($expected, $response->toArray());
- }
- }
|