166 lines
3.8 KiB
PHP
166 lines
3.8 KiB
PHP
<?php
|
|
|
|
/**
|
|
* Base class for Stripe test cases, provides some utility methods for creating
|
|
* objects.
|
|
*/
|
|
abstract class StripeTestCase extends UnitTestCase
|
|
{
|
|
const API_KEY = "tGN0bIwXnHdwOa85VABjPdSn8nWY7G7I";
|
|
|
|
protected static function authorizeFromEnv()
|
|
{
|
|
$apiKey = getenv('STRIPE_API_KEY');
|
|
if (!$apiKey) {
|
|
$apiKey = self::API_KEY;
|
|
}
|
|
Stripe::setApiKey($apiKey);
|
|
}
|
|
|
|
/**
|
|
* Create a valid test charge.
|
|
*/
|
|
protected static function createTestCharge(array $attributes = array())
|
|
{
|
|
self::authorizeFromEnv();
|
|
|
|
return Stripe_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 customer.
|
|
*/
|
|
protected static function createTestCustomer(array $attributes = array())
|
|
{
|
|
self::authorizeFromEnv();
|
|
|
|
return Stripe_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 Stripe_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 = Stripe_Plan::retrieve($id);
|
|
} catch (Stripe_InvalidRequestError $exception) {
|
|
$plan = Stripe_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 = Stripe_Coupon::retrieve($id);
|
|
} catch (Stripe_InvalidRequestError $exception) {
|
|
$coupon = Stripe_Coupon::create(
|
|
array(
|
|
'id' => $id,
|
|
'duration' => 'forever',
|
|
'percent_off' => 25,
|
|
)
|
|
);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Genereate a semi-random string
|
|
*/
|
|
public 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 = Stripe_BitcoinReceiver::create(
|
|
array(
|
|
'amount' => 100,
|
|
'currency' => 'usd',
|
|
'description' => 'some details',
|
|
'email' => $email
|
|
)
|
|
);
|
|
return $receiver;
|
|
}
|
|
}
|