mirror of
https://gitlab.com/openlp/website.git
synced 2024-12-22 21:12:50 +00:00
332 lines
11 KiB
PHP
332 lines
11 KiB
PHP
|
<?php
|
||
|
|
||
|
namespace Stripe;
|
||
|
|
||
|
class AccountTest extends TestCase
|
||
|
{
|
||
|
private function managedAccountResponse($id)
|
||
|
{
|
||
|
return array(
|
||
|
'id' => $id,
|
||
|
'currencies_supported' => array('usd', 'aed', 'afn', '...'),
|
||
|
'object' => 'account',
|
||
|
'business_name' => 'Stripe.com',
|
||
|
'bank_accounts' => array(
|
||
|
'object' => 'list',
|
||
|
'total_count' => 0,
|
||
|
'has_more' => false,
|
||
|
'url' => '/v1/accounts/' . $id . '/bank_accounts',
|
||
|
'data' => array()
|
||
|
),
|
||
|
'verification' => array(
|
||
|
'fields_needed' => array(
|
||
|
'product_description',
|
||
|
'business_url',
|
||
|
'support_phone',
|
||
|
'bank_account',
|
||
|
'tos_acceptance.ip',
|
||
|
'tos_acceptance.date'
|
||
|
),
|
||
|
'due_by' => null,
|
||
|
'contacted' => false
|
||
|
),
|
||
|
'tos_acceptance' => array(
|
||
|
'ip' => null,
|
||
|
'date' => null,
|
||
|
'user_agent' => null
|
||
|
),
|
||
|
'legal_entity' => array(
|
||
|
'type' => null,
|
||
|
'business_name' => null,
|
||
|
'address' => array(
|
||
|
'line1' => null,
|
||
|
'line2' => null,
|
||
|
'city' => null,
|
||
|
'state' => null,
|
||
|
'postal_code' => null,
|
||
|
'country' => 'US'
|
||
|
),
|
||
|
'first_name' => null,
|
||
|
'last_name' => null,
|
||
|
'additional_owners' => null,
|
||
|
'verification' => array(
|
||
|
'status' => 'unverified',
|
||
|
'document' => null,
|
||
|
'details' => null
|
||
|
)
|
||
|
)
|
||
|
);
|
||
|
}
|
||
|
|
||
|
private function deletedAccountResponse($id)
|
||
|
{
|
||
|
return array(
|
||
|
'id' => $id,
|
||
|
'deleted' => true
|
||
|
);
|
||
|
}
|
||
|
|
||
|
public function testBasicRetrieve()
|
||
|
{
|
||
|
$this->mockRequest('GET', '/v1/account', array(), $this->managedAccountResponse('acct_ABC'));
|
||
|
$account = Account::retrieve();
|
||
|
$this->assertSame($account->id, 'acct_ABC');
|
||
|
}
|
||
|
|
||
|
public function testIDRetrieve()
|
||
|
{
|
||
|
$this->mockRequest('GET', '/v1/accounts/acct_DEF', array(), $this->managedAccountResponse('acct_DEF'));
|
||
|
$account = Account::retrieve('acct_DEF');
|
||
|
$this->assertSame($account->id, 'acct_DEF');
|
||
|
}
|
||
|
|
||
|
public function testCreate()
|
||
|
{
|
||
|
$this->mockRequest(
|
||
|
'POST',
|
||
|
'/v1/accounts',
|
||
|
array('managed' => 'true'),
|
||
|
$this->managedAccountResponse('acct_ABC')
|
||
|
);
|
||
|
$account = Account::create(array(
|
||
|
'managed' => true
|
||
|
));
|
||
|
$this->assertSame($account->id, 'acct_ABC');
|
||
|
}
|
||
|
|
||
|
public function testDelete()
|
||
|
{
|
||
|
$account = self::createTestAccount();
|
||
|
|
||
|
$this->mockRequest(
|
||
|
'DELETE',
|
||
|
'/v1/accounts/' . $account->id,
|
||
|
array(),
|
||
|
$this->deletedAccountResponse('acct_ABC')
|
||
|
);
|
||
|
$deleted = $account->delete();
|
||
|
$this->assertSame($deleted->id, $account->id);
|
||
|
$this->assertTrue($deleted->deleted);
|
||
|
}
|
||
|
|
||
|
public function testReject()
|
||
|
{
|
||
|
$account = self::createTestAccount();
|
||
|
|
||
|
$this->mockRequest(
|
||
|
'POST',
|
||
|
'/v1/accounts/' . $account->id . '/reject',
|
||
|
array('reason' => 'fraud'),
|
||
|
$this->deletedAccountResponse('acct_ABC')
|
||
|
);
|
||
|
$rejected = $account->reject(array('reason' => 'fraud'));
|
||
|
$this->assertSame($rejected->id, $account->id);
|
||
|
}
|
||
|
|
||
|
public function testSaveLegalEntity()
|
||
|
{
|
||
|
$response = $this->managedAccountResponse('acct_ABC');
|
||
|
$this->mockRequest('POST', '/v1/accounts', array('managed' => 'true'), $response);
|
||
|
|
||
|
$response['legal_entity']['first_name'] = 'Bob';
|
||
|
$this->mockRequest(
|
||
|
'POST',
|
||
|
'/v1/accounts/acct_ABC',
|
||
|
array('legal_entity' => array('first_name' => 'Bob')),
|
||
|
$response
|
||
|
);
|
||
|
|
||
|
$account = Account::create(array('managed' => true));
|
||
|
$account->legal_entity->first_name = 'Bob';
|
||
|
$account->save();
|
||
|
|
||
|
$this->assertSame('Bob', $account->legal_entity->first_name);
|
||
|
}
|
||
|
|
||
|
public function testUpdateLegalEntity()
|
||
|
{
|
||
|
$response = $this->managedAccountResponse('acct_ABC');
|
||
|
$this->mockRequest('POST', '/v1/accounts', array('managed' => 'true'), $response);
|
||
|
|
||
|
$response['legal_entity']['first_name'] = 'Bob';
|
||
|
$this->mockRequest(
|
||
|
'POST',
|
||
|
'/v1/accounts/acct_ABC',
|
||
|
array('legal_entity' => array('first_name' => 'Bob')),
|
||
|
$response
|
||
|
);
|
||
|
|
||
|
$account = Account::create(array('managed' => true));
|
||
|
$account = Account::update($account['id'], array(
|
||
|
'legal_entity' => array(
|
||
|
'first_name' => 'Bob'
|
||
|
)
|
||
|
));
|
||
|
|
||
|
$this->assertSame('Bob', $account->legal_entity->first_name);
|
||
|
}
|
||
|
|
||
|
public function testCreateAdditionalOwners()
|
||
|
{
|
||
|
$request = array(
|
||
|
'managed' => true,
|
||
|
'country' => 'GB',
|
||
|
'legal_entity' => array(
|
||
|
'additional_owners' => array(
|
||
|
0 => array(
|
||
|
'dob' => array(
|
||
|
'day' => 12,
|
||
|
'month' => 5,
|
||
|
'year' => 1970,
|
||
|
),
|
||
|
'first_name' => 'xgvukvfrde',
|
||
|
'last_name' => 'rtcyvubhy',
|
||
|
),
|
||
|
1 => array(
|
||
|
'dob' => array(
|
||
|
'day' => 8,
|
||
|
'month' => 4,
|
||
|
'year' => 1979,
|
||
|
),
|
||
|
'first_name' => 'yutreuk',
|
||
|
'last_name' => 'dfcgvhbjihmv',
|
||
|
),
|
||
|
),
|
||
|
),
|
||
|
);
|
||
|
|
||
|
$acct = Account::create($request);
|
||
|
$response = $acct->__toArray(true);
|
||
|
|
||
|
$req_ao = $request['legal_entity']['additional_owners'];
|
||
|
$resp_ao = $response['legal_entity']['additional_owners'];
|
||
|
|
||
|
$this->assertSame($req_ao[0]['dob'], $resp_ao[0]['dob']);
|
||
|
$this->assertSame($req_ao[1]['dob'], $resp_ao[1]['dob']);
|
||
|
|
||
|
$this->assertSame($req_ao[0]['first_name'], $resp_ao[0]['first_name']);
|
||
|
$this->assertSame($req_ao[1]['first_name'], $resp_ao[1]['first_name']);
|
||
|
}
|
||
|
|
||
|
public function testUpdateAdditionalOwners()
|
||
|
{
|
||
|
$response = $this->managedAccountResponse('acct_ABC');
|
||
|
$this->mockRequest('POST', '/v1/accounts', array('managed' => 'true'), $response);
|
||
|
|
||
|
$response['legal_entity']['additional_owners'] = array(array(
|
||
|
'first_name' => 'Bob',
|
||
|
'last_name' => null,
|
||
|
'address' => array(
|
||
|
'line1' => null,
|
||
|
'line2' => null,
|
||
|
'city' => null,
|
||
|
'state' => null,
|
||
|
'postal_code' => null,
|
||
|
'country' => null
|
||
|
),
|
||
|
'verification' => array(
|
||
|
'status' => 'unverified',
|
||
|
'document' => null,
|
||
|
'details' => null
|
||
|
)
|
||
|
));
|
||
|
|
||
|
$this->mockRequest(
|
||
|
'POST',
|
||
|
'/v1/accounts/acct_ABC',
|
||
|
array('legal_entity' => array('additional_owners' => array(array('first_name' => 'Bob')))),
|
||
|
$response
|
||
|
);
|
||
|
|
||
|
$response['legal_entity']['additional_owners'][0]['last_name'] = 'Smith';
|
||
|
$this->mockRequest(
|
||
|
'POST',
|
||
|
'/v1/accounts/acct_ABC',
|
||
|
array('legal_entity' => array('additional_owners' => array(array('last_name' => 'Smith')))),
|
||
|
$response
|
||
|
);
|
||
|
|
||
|
$response['legal_entity']['additional_owners'][0]['last_name'] = 'Johnson';
|
||
|
$this->mockRequest(
|
||
|
'POST',
|
||
|
'/v1/accounts/acct_ABC',
|
||
|
array('legal_entity' => array('additional_owners' => array(array('last_name' => 'Johnson')))),
|
||
|
$response
|
||
|
);
|
||
|
|
||
|
$response['legal_entity']['additional_owners'][0]['verification']['document'] = 'file_123';
|
||
|
$this->mockRequest(
|
||
|
'POST',
|
||
|
'/v1/accounts/acct_ABC',
|
||
|
array('legal_entity' => array('additional_owners' => array(array('verification' => array('document' => 'file_123'))))),
|
||
|
$response
|
||
|
);
|
||
|
|
||
|
$response['legal_entity']['additional_owners'][1] = array(
|
||
|
'first_name' => 'Jane',
|
||
|
'last_name' => 'Doe'
|
||
|
);
|
||
|
$this->mockRequest(
|
||
|
'POST',
|
||
|
'/v1/accounts/acct_ABC',
|
||
|
array('legal_entity' => array('additional_owners' => array(1 => array('first_name' => 'Jane')))),
|
||
|
$response
|
||
|
);
|
||
|
|
||
|
$account = Account::create(array('managed' => true));
|
||
|
$account->legal_entity->additional_owners = array(array('first_name' => 'Bob'));
|
||
|
$account->save();
|
||
|
$this->assertSame(1, count($account->legal_entity->additional_owners));
|
||
|
$this->assertSame('Bob', $account->legal_entity->additional_owners[0]->first_name);
|
||
|
|
||
|
$account->legal_entity->additional_owners[0]->last_name = 'Smith';
|
||
|
$account->save();
|
||
|
$this->assertSame(1, count($account->legal_entity->additional_owners));
|
||
|
$this->assertSame('Smith', $account->legal_entity->additional_owners[0]->last_name);
|
||
|
|
||
|
$account['legal_entity']['additional_owners'][0]['last_name'] = 'Johnson';
|
||
|
$account->save();
|
||
|
$this->assertSame(1, count($account->legal_entity->additional_owners));
|
||
|
$this->assertSame('Johnson', $account->legal_entity->additional_owners[0]->last_name);
|
||
|
|
||
|
$account->legal_entity->additional_owners[0]->verification->document = 'file_123';
|
||
|
$account->save();
|
||
|
$this->assertSame('file_123', $account->legal_entity->additional_owners[0]->verification->document);
|
||
|
|
||
|
$account->legal_entity->additional_owners[1] = array('first_name' => 'Jane');
|
||
|
$account->save();
|
||
|
$this->assertSame(2, count($account->legal_entity->additional_owners));
|
||
|
$this->assertSame('Jane', $account->legal_entity->additional_owners[1]->first_name);
|
||
|
}
|
||
|
|
||
|
public function testLoginLinkCreation()
|
||
|
{
|
||
|
$accountId = 'acct_EXPRESS';
|
||
|
$mockExpress = array(
|
||
|
'id' => $accountId,
|
||
|
'object' => 'account',
|
||
|
'login_links' => array(
|
||
|
'object' => 'list',
|
||
|
'data' => array(),
|
||
|
'has_more' => false,
|
||
|
'url' => "/v1/accounts/$accountId/login_links"
|
||
|
)
|
||
|
);
|
||
|
|
||
|
$this->mockRequest('GET', "/v1/accounts/$accountId", array(), $mockExpress);
|
||
|
|
||
|
$mockLoginLink = array(
|
||
|
'object' => 'login_link',
|
||
|
'created' => 1493820886,
|
||
|
'url' => "https://connect.stripe.com/$accountId/AAAAAAAA"
|
||
|
);
|
||
|
|
||
|
$this->mockRequest('POST', "/v1/accounts/$accountId/login_links", array(), $mockLoginLink);
|
||
|
|
||
|
$account = Account::retrieve($accountId);
|
||
|
$loginLink = $account->login_links->create();
|
||
|
$this->assertSame('login_link', $loginLink->object);
|
||
|
$this->assertSame('Stripe\LoginLink', get_class($loginLink));
|
||
|
}
|
||
|
}
|