Commit 1ea289e2 authored by MBoretto's avatar MBoretto

Binded behaivor of ServerResponse.php

parent 3be45232
......@@ -26,18 +26,24 @@ class ServerResponse extends Entity
{
if (isset($data['ok']) & isset($data['result'])) {
if ($data['ok'] & $data['result'] != 1) {
if ($data['ok'] & is_array($data['result'])) {
//Response from sendMessage set
$this->ok = $data['ok'];
$this->result = new Message($data['result'], $bot_name);
$this->error_code = null;
$this->description = null;
} elseif ($data['ok'] & $data['result'] == 1) {
} elseif ($data['ok'] & $data['result'] == true) {
//Response from setWebhook set
$this->ok = $data['ok'];
$this->result = $data['result'];
$this->result = true;
$this->error_code = null;
$this->description = $data['description'];
if (isset($data['description'])) {
$this->description = $data['description'];
} else {
$this->description = '';
}
} else {
$this->ok = false;
......@@ -67,7 +73,7 @@ class ServerResponse extends Entity
$this->description = null;
}
//throw new TelegramException('ok(variable) is not set!');
//throw new TelegramException('ok(variable) is not set!');
}
}
......@@ -87,45 +93,4 @@ class ServerResponse extends Entity
{
return $this->description;
}
//Succes request
//Array
//(
// [ok] => 1
// [result] => Array
// (
// [message_id] => 3582
// [from] => Array
// (
// [id] => 12345678
// [first_name] => name
// [username] => botname
// )
//
// [chat] => Array
// (
// [id] => 123456789
// [first_name] => name
// [username] => Surname
// )
//
// [date] => 1441194780
// [text] => hello
// )
//
//)
// Error Request
//
//Array
//(
// [ok] =>
// [error_code] => 401
// [description] => Error: Unauthorized
//)
//Array
//(
// [chat_id] => 110751663
// [text] => ciao
//)
}
......@@ -65,6 +65,34 @@ class Request
return $status;
}
public static function generateGeneralFakeServerSesponse($data = null)
{
//PARAM BINDED IN PHPUNIT TEST FOR TestServerResponse.php
//Maybe this in not the best possible implementation
//No value set in $data ie testing setWekhook
//Provided $data['chat_id'] testing sendMessage
$fake_response['ok'] = true; // :)
if (!isset($data)) {
$fake_response['result'] = true;
}
//some data to let iniatilize the class method SendMessage
if (isset($data['chat_id'])) {
$data['message_id'] = '1234';
$data['date'] = '1441378360';
$data['text'] = 'hello';
$data['from'] = array( 'id' => 123456789 ,'first_name' => 'botname', 'username'=> 'namebot');
$data['chat'] = array('id'=> $data['chat_id'] );
$fake_response['result'] = $data;
}
return $fake_response;
}
public static function send($action, array $data = null)
{
......@@ -73,17 +101,7 @@ class Request
}
if (defined('PHPUNIT_TESTSUITE')) {
$fake_response['ok'] = 1; // :)
//some fake data just to let iniatilize the class method SendMessage
if (isset($data['chat_id'])) {
$data['message_id'] = '123';
$data['date'] = '123';
$data['chat'] = array('id'=> $data['chat_id'] );
$data['from'] = array( 'id' => 123,'first_name' => 'botname', 'username'=> 'namebot');
$fake_response['result'] = $data;
}
$fake_response = self::generateGeneralFakeServerSesponse($data);
return new ServerResponse($fake_response, self::$telegram->getBotName());
}
......@@ -111,8 +129,10 @@ class Request
$response['description'] = 'Empty server response';
}
//return json_decode($result, true);
return new ServerResponse(json_decode($result, true), self::$telegram->getBotName());
// return json_decode($result, true);
return $result;
//return new ServerResponse(json_decode($result, true), self::$telegram->getBotName());
}
public static function sendMessage(array $data)
......
<?php
/*
* This file is part of the TelegramBot package.
*
* (c) Avtandil Kikabidze aka LONGMAN <akalongman@gmail.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
* Written by Marco Boretto
*/
namespace Tests\Unit;
use \Longman\TelegramBot\Entities\ServerResponse;
use \Longman\TelegramBot\Entities\Message;
use \Longman\TelegramBot\Request;
/**
* @package TelegramTest
* @author Avtandil Kikabidze <akalongman@gmail.com>
* @copyright Avtandil Kikabidze <akalongman@gmail.com>
* @license http://opensource.org/licenses/mit-license.php The MIT License (MIT)
* @link http://www.github.com/akalongman/php-telegram-bot
*/
class ServerResponseTest extends TestCase
{
/**
* @var \Longman\TelegramBot\Telegram
*/
private $server;
/**
* setUp
*/
protected function setUp()
{
}
/**
* @test
*/
public function sendMessageOk()
{
return '{
"ok":true,
"result":{
"message_id":1234,
"from":{"id":123456789,"first_name":"botname","username":"namebot"},
"chat":{"id":123456789,"first_name":"john","username":"Mjohn"},
"date":1441378360,
"text":"hello"
}
}';
}
public function testSendMessageOk() {
$result = $this->sendMessageOk();
$this->server = new ServerResponse(json_decode($result, true), 'testbot');
$this->assertTrue($this->server->isOk());
$this->assertInstanceOf('\Longman\TelegramBot\Entities\Message', $this->server->getResult());
$this->assertNull($this->server->getErrorCode());
$this->assertNull($this->server->getDescription());
//Message
$this->assertEquals('1234', $this->server->getResult()->getMessageId());
$this->assertEquals('123456789', $this->server->getResult()->getFrom()->getId());
$this->assertEquals('botname', $this->server->getResult()->getFrom()->getFirstName());
$this->assertEquals('namebot', $this->server->getResult()->getFrom()->getUserName());
$this->assertEquals('123456789', $this->server->getResult()->getChat()->getId());
$this->assertEquals('john', $this->server->getResult()->getChat()->getFirstName());
$this->assertEquals('Mjohn', $this->server->getResult()->getChat()->getUserName());
$this->assertEquals('1441378360', $this->server->getResult()->getDate());
$this->assertEquals('hello', $this->server->getResult()->getText());
//... they are not finished...
}
/**
* @test
*/
public function sendMessageFail()
{
return '{
"ok":false,
"error_code":400,
"description":"Error: Bad Request: wrong chat id"
}';
}
public function testSendMessageFail() {
$result = $this->sendMessageFail();
$this->server = new ServerResponse(json_decode($result, true), 'testbot');
$this->assertFalse($this->server->isOk());
$this->assertNull($this->server->getResult());
$this->assertEquals('400', $this->server->getErrorCode());
$this->assertEquals('Error: Bad Request: wrong chat id', $this->server->getDescription());
}
/**
* @test
*/
public function setWebHookOk()
{
return '{"ok":true,"result":true,"description":"Webhook was set"}';
}
public function testSetWebhookOk() {
$result = $this->setWebhookOk();
$this->server = new ServerResponse(json_decode($result, true), 'testbot');
$this->assertTrue($this->server->isOk());
$this->assertTrue($this->server->getResult());
$this->assertNull($this->server->getErrorCode());
$this->assertEquals('Webhook was set', $this->server->getDescription());
}
/**
* @test
*/
public function setWebHookFail()
{
return '{
"ok":false,
"error_code":400,
"description":"Error: Bad request: htttps:\/\/domain.host.org\/dir\/hook.php"
}';
}
public function testSetWebhookFail() {
$result = $this->setWebHookFail();
$this->server = new ServerResponse(json_decode($result, true), 'testbot');
$this->assertFalse($this->server->isOk());
$this->assertNull($this->server->getResult());
$this->assertEquals(400, $this->server->getErrorCode());
$this->assertEquals("Error: Bad request: htttps://domain.host.org/dir/hook.php", $this->server->getDescription());
}
public function testSetGeneralTestFakeResponse() {
//setWebhook ok
$fake_response = Request::generateGeneralFakeServerSesponse();
$this->server = new ServerResponse($fake_response, 'testbot');
$this->assertTrue($this->server->isOk());
$this->assertTrue($this->server->getResult());
$this->assertNull($this->server->getErrorCode());
$this->assertEquals('', $this->server->getDescription());
//sendMessage ok
$fake_response = Request::generateGeneralFakeServerSesponse(['chat_id' => 123456789]);
$this->server = new ServerResponse($fake_response, 'testbot');
$this->assertTrue($this->server->isOk());
$this->assertInstanceOf('\Longman\TelegramBot\Entities\Message', $this->server->getResult());
$this->assertNull($this->server->getErrorCode());
$this->assertNull($this->server->getDescription());
//Message
$this->assertEquals('1234', $this->server->getResult()->getMessageId());
$this->assertEquals('1441378360', $this->server->getResult()->getDate());
$this->assertEquals('hello', $this->server->getResult()->getText());
//Message //User
$this->assertEquals('123456789', $this->server->getResult()->getFrom()->getId());
$this->assertEquals('botname', $this->server->getResult()->getFrom()->getFirstName());
$this->assertEquals('namebot', $this->server->getResult()->getFrom()->getUserName());
//Message //Chat
$this->assertEquals('123456789', $this->server->getResult()->getChat()->getId());
$this->assertEquals('', $this->server->getResult()->getChat()->getFirstName());
$this->assertEquals('', $this->server->getResult()->getChat()->getUserName());
//... they are not finished...
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment