Файл: Main Website Files/assets/libraries/stripe-php-2.2.0/tests/TestCase.php
Строк: 167
<?php
namespace Stripe;
/**
* Base class for Stripe test cases, provides some utility methods for creating
* objects.
*/
class TestCase extends PHPUnit_Framework_TestCase
{
const API_KEY = 'tGN0bIwXnHdwOa85VABjPdSn8nWY7G7I';
private $mock;
protected static function authorizeFromEnv()
{
$apiKey = getenv('STRIPE_API_KEY');
if (!$apiKey) {
$apiKey = self::API_KEY;
}
Stripe::setApiKey($apiKey);
}
protected function setUp()
{
ApiRequestor::setHttpClient(HttpClientCurlClient::instance());
$this->mock = null;
$this->call = 0;
}
protected function mockRequest($method, $path, $params = array(), $return = array('id' => 'myId'))
{
$mock = $this->setUpMockRequest();
$mock->expects($this->at($this->call++))
->method('request')
->with(strtolower($method), 'https://api.stripe.com' . $path, $this->anything(), $params, false)
->willReturn(array(json_encode($return), 200));
}
private function setUpMockRequest()
{
if (!$this->mock) {
self::authorizeFromEnv();
$this->mock = $this->getMock('StripeHttpClientClientInterface');
ApiRequestor::setHttpClient($this->mock);
}
return $this->mock;
}
/**
* Create a valid test charge.
*/
protected static function createTestCharge(array $attributes = array())
{
self::authorizeFromEnv();
return Charge::create(
$attributes + array(
'amount' => 2000,
'currency' => 'usd',
'description' => 'Charge for test@example.com',
'card' => array(
'number' => '4242424242424242',
'exp_month' => 5,
'exp_year' => date('Y') + 3,
),
)
);
}
/**
* Create a valid test charge.
*/
protected static function createTestTransfer(array $attributes = array())
{
self::authorizeFromEnv();
$recipient = self::createTestRecipient();
return Transfer::create(
$attributes + array(
'amount' => 2000,
'currency' => 'usd',
'description' => 'Transfer to test@example.com',
'recipient' => $recipient->id
)
);
}
/**
* Create a valid test customer.
*/
protected static function createTestCustomer(array $attributes = array())
{
self::authorizeFromEnv();
return Customer::create(
$attributes + array(
'card' => array(
'number' => '4242424242424242',
'exp_month' => 5,
'exp_year' => date('Y') + 3,
),
)
);
}
/**
* Create a valid test recipient
*/
protected static function createTestRecipient(array $attributes = array())
{
self::authorizeFromEnv();
return Recipient::create(
$attributes + array(
'name' => 'PHP Test',
'type' => 'individual',
'tax_id' => '000000000',
'bank_account' => array(
'country' => 'US',
'routing_number' => '110000000',
'account_number' => '000123456789'
),
)
);
}
/**
* Generate a random 8-character string. Useful for ensuring
* multiple test suite runs don't conflict
*/
protected static function randomString()
{
$chars = 'abcdefghijklmnopqrstuvwxyz';
$str = '';
for ($i = 0; $i < 10; $i++) {
$str .= $chars[rand(0, strlen($chars)-1)];
}
return $str;
}
/**
* Verify that a plan with a given ID exists, or create a new one if it does
* not.
*/
protected static function retrieveOrCreatePlan($id)
{
self::authorizeFromEnv();
try {
$plan = Plan::retrieve($id);
} catch (ErrorInvalidRequest $exception) {
$plan = Plan::create(
array(
'id' => $id,
'amount' => 0,
'currency' => 'usd',
'interval' => 'month',
'name' => 'Gold Test Plan',
)
);
}
}
/**
* Verify that a coupon with a given ID exists, or create a new one if it
* does not.
*/
protected static function retrieveOrCreateCoupon($id)
{
self::authorizeFromEnv();
try {
$coupon = Coupon::retrieve($id);
} catch (ErrorInvalidRequest $exception) {
$coupon = Coupon::create(
array(
'id' => $id,
'duration' => 'forever',
'percent_off' => 25,
)
);
}
}
/**
* Genereate a semi-random string
*/
protected static function generateRandomString($length = 24)
{
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTU';
$charactersLength = strlen($characters);
$randomString = '';
for ($i = 0; $i < $length; $i++) {
$randomString .= $characters[rand(0, $charactersLength - 1)];
}
return $randomString;
}
protected static function createTestBitcoinReceiver($email)
{
$receiver = BitcoinReceiver::create(
array(
'amount' => 100,
'currency' => 'usd',
'description' => 'some details',
'email' => $email
)
);
return $receiver;
}
}