File "ExceptionsTest.php"
Full Path: /home/cananyalcin/public_html/core/lib/coinbase/coinbase-commerce/tests/ExceptionsTest.php
File size: 5.82 KB
MIME-type: text/x-php
Charset: utf-8
<?php
namespace CoinbaseCommerce\Tests;
use CoinbaseCommerce\Exceptions\ApiException;
use CoinbaseCommerce\Exceptions\InvalidRequestException;
use CoinbaseCommerce\Exceptions\AuthenticationException;
use CoinbaseCommerce\Exceptions\ParamRequiredException;
use CoinbaseCommerce\Exceptions\ResourceNotFoundException;
use CoinbaseCommerce\Exceptions\RateLimitExceededException;
use CoinbaseCommerce\Exceptions\InternalServerException;
use CoinbaseCommerce\Exceptions\ServiceUnavailableException;
use CoinbaseCommerce\Exceptions\ValidationException;
use CoinbaseCommerce\Resources\Charge;
class ExceptionsTest extends BaseTest
{
protected $fixtures = [];
public function getFixtures()
{
if (empty($this->fixtures)) {
$this->fixtures = [
[
'response' => [
'statusCode' => 400,
'body' => [
'error' => [
'type' => 'invalid_request',
'message' => 'Pricing type is not included in the list'
]
]
],
'exceptionClass' => InvalidRequestException::getClassName()
],
[
'response' => [
'statusCode' => 401,
'body' => [
'error' => [
'type' => 'authorization_error',
'message' => 'You are not authorized to do that.'
]
]
],
'exceptionClass' => AuthenticationException::getClassName()
],
[
'response' => [
'statusCode' => 404,
'body' => [
'error' => [
'type' => 'not_found',
'message' => 'Not foun'
]
]
],
'exceptionClass' => ResourceNotFoundException::getClassName()
],
[
'response' => [
'statusCode' => 429,
'body' => [
'error' => [
'type' => 'rate_limit_exceeded',
'message' => 'Rate limit exceeded'
]
]
],
'exceptionClass' => RateLimitExceededException::getClassName()
],
[
'response' => [
'statusCode' => 500,
'body' => [
'error' => [
'type' => 'internal_server_error',
'message' => 'Internal server error'
]
]
],
'exceptionClass' => InternalServerException::getClassName()
],
[
'response' => [
'statusCode' => 503,
'body' => ''
],
'exceptionClass' => ServiceUnavailableException::getClassName()
],
[
'response' => [
'statusCode' => 500,
'body' => [
'error' => [
'type' => 'internal_server_error',
'message' => 'Internal server error'
]
]
],
'exceptionClass' => InternalServerException::getClassName()
],
[
'response' => [
'statusCode' => 400,
'body' => [
'error' => [
'type' => 'validation_error',
'message' => 'Validation error'
]
]
],
'exceptionClass' => ValidationException::getClassName()
],
[
'response' => [
'statusCode' => 400,
'body' => [
'error' => [
'type' => 'param_required',
'message' => 'Validation error'
]
]
],
'exceptionClass' => ParamRequiredException::getClassName()
],
[
'response' => [
'statusCode' => 502,
'body' => ''
],
'exceptionClass' => ApiException::getClassName()
]
];
}
return $this->fixtures;
}
public function testApiExceptions()
{
Charge::setClient($this->apiClient);
foreach ($this->getFixtures() as $fixture) {
try {
$this->appendRequest($fixture['response']['statusCode'], $fixture['response']['body']);
Charge::create(
[
'name' => 'Test Name',
'description' => 'Test Description'
]
);
} catch (\Exception $exception) {
$this->assertInstanceOf($fixture['exceptionClass'], $exception);
$this->assertEquals($fixture['response']['statusCode'], $exception->getCode());
}
}
}
}