|
Server : Apache System : Linux server.mata-lashes.com 3.10.0-1160.90.1.el7.x86_64 #1 SMP Thu May 4 15:21:22 UTC 2023 x86_64 User : matalashes ( 1004) PHP Version : 8.1.29 Disable Function : NONE Directory : /home/matalashes/www/kite.mata-lashes.com/vendor/xendit/xendit-php/tests/Xendit/ |
Upload File : |
<?php
/**
* CustomersTest.php
* php version 7.4.3
*
* @category Test
* @package Xendit
* @author Glenda <glenda@xendit.co>
* @license https://opensource.org/licenses/MIT MIT License
* @link https://api.xendit.co
*/
namespace Xendit;
use Xendit\Customers;
use Xendit\TestCase;
/**
* Class CustomersTest
*
* @category Class
* @package Xendit
* @author Glenda <glenda@xendit.co>
* @license https://opensource.org/licenses/MIT MIT License
* @link https://api.xendit.co
*/
class CustomersTest extends TestCase
{
const CUSTOMER_PARAMS_20200519 = [
'reference_id' => 'test-ref-id',
'given_names' => 'customer 1',
'email' => 'customer@website.com',
'mobile_number' => '+6281212345678',
'description' => 'dummy customer',
'middle_name' => 'middle',
'surname' => 'surname',
'addresses' => [
[
'country' => 'ID',
'street_line1' => 'Jl. 123',
'street_line2' => 'Jl. 456',
'city' => 'Jakarta Selatan',
'province' => 'DKI Jakarta',
'state' => '-',
'postal_code' => '12345'
]
],
'metadata' => [
'meta' => 'data'
]
];
const CUSTOMER_RESPONSE_20200519 = [
'id' => '0f2de6f1-2023-403b-aaea-5f0a8a611f7d',
'reference_id' => 'test-ref-id',
'given_names' => 'customer 1',
'email' => 'customer@website.com',
'mobile_number' => '+6281212345678',
'description' => 'dummy customer',
'middle_name' => 'middle',
'surname' => 'surname',
'phone_number' => null,
'nationality' => null,
'date_of_birth' => null,
'metadata' => [
'meta' => 'data'
],
'employment' => null,
'addresses' => [
[
'category' => '',
'country' => 'ID',
'state' => '-',
'province' => 'DKI Jakarta',
'city' => 'Jakarta Selatan',
'postal_code' => '12345',
'street_line1' => 'Jl. 123',
'street_line2' => 'Jl. 456',
'is_preferred' => false
]
],
'source_of_wealth' => null
];
const CUSTOMER_PARAMS_20201031 = [
'reference_id' => 'test-ref-id',
'type' => 'INDIVIDUAL',
'email' => 'customer@website.com',
'mobile_number' => '+6281212345678',
'phone_number' => '+6289987654321',
'description' => 'test description',
'kyc_documents' => [
[
'country' => 'ID',
'type' => 'IDENTITY_CARD',
'sub_type' => 'NATIONAL_ID',
'document_name' => 'KTP',
'document_number' => '1234567890',
'expires_at' => '2025-06-02',
'holder_name' => 'Holder name',
'document_images' => [
'https://file1.jpg',
'https://file2.jpg'
]
]
],
'metadata' => [
'meta' => 'data'
],
'individual_detail' => [
'given_names' => 'John',
'surname' => 'Doe',
'nationality' => 'ID',
'date_of_birth' => '1993-12-26',
'place_of_birth' => 'Cirebon',
'gender' => 'MALE',
'employment' => [
'employer_name' => 'Employer name',
'nature_of_business' => 'Business',
'role_description' => 'Employer'
]
],
'business_detail' => [
'business_name' => 'Business name',
'business_type' => 'NON_PROFIT',
'nature_of_business' => 'Charity',
'business_domicile' => 'ID',
'date_of_registration' => '2005-06-21'
],
'addresses' => [
[
'country' => 'ID',
'street_line1' => 'street line 1',
'street_line2' => 'street line 2',
'city' => 'Cirebon',
'province_state' => 'Jawa Barat',
'postal_code' => '21345',
'category' => 'HOME',
'is_primary' => true
]
],
'identity_accounts' => [
[
'type' => 'EWALLET',
'company' => 'GOPAY',
'description' => 'gopay',
'country' => 'ID',
'properties' => [
'account_number' => '12345',
'account_holder_name' => 'John Doe',
'currency' => 'IDR'
]
]
]
];
const CUSTOMER_RESPONSE_20201031 = [
'type' => 'INDIVIDUAL',
'email' => 'customer@website.com',
'mobile_number' => '+6281212345678',
'phone_number' => '+6289987654321',
'created' => '2021-08-13T12:42:19.476Z',
'updated' => '2021-08-13T12:42:19.476Z',
'description' => 'test description',
'kyc_documents' => [
[
'country' => 'ID',
'type' => 'IDENTITY_CARD',
'sub_type' => 'NATIONAL_ID',
'document_name' => 'KTP',
'document_number' => '1234567890',
'expires_at' => '2025-06-02',
'holder_name' => 'Holder name',
'document_images' => [
'https://file1.jpg',
'https://file2.jpg'
]
]
],
'id' => 'cust-db2b4ac3-518b-41bd-873a-4a64f7e18610',
'reference_id' => 'test-ref-id',
'metadata' => [
'meta' => 'data'
],
'individual_detail' => [
'given_names' => 'John',
'surname' => 'Doe',
'nationality' => 'ID',
'date_of_birth' => '1993-12-26',
'place_of_birth' => 'Cirebon',
'gender' => 'MALE',
'employment' => [
'employer_name' => 'Employer name',
'role_description' => 'Employer',
'nature_of_business' => 'Business'
]
],
'business_detail' => null,
'addresses' => [
[
'country' => 'ID',
'street_line1' => 'street line 1',
'street_line2' => 'street line 2',
'city' => 'Cirebon',
'province_state' => 'Jawa Barat',
'postal_code' => '21345',
'category' => 'HOME',
'is_primary' => true
]
],
'identity_accounts' => [
[
'type' => 'EWALLET',
'company' => 'GOPAY',
'description' => 'gopay',
'country' => 'ID',
'properties' => [
'currency' => 'IDR',
'account_number' => '12345',
'account_holder_name' => 'John Doe'
]
]
]
];
const REFERENCE_ID = 'test-ref-id';
const NEW_API_VERSION = array('api-version' => '2020-10-31');
/**
* Create customer test 2020-05-19 version
* Should pass
*
* @return void
* @throws Exceptions\ApiException
*/
public function testIs20200519CustomerCreatable()
{
$params = self::CUSTOMER_PARAMS_20200519;
$response = self::CUSTOMER_RESPONSE_20200519;
$this->stubRequest(
'POST',
'/customers',
$params,
[],
$response
);
$result = Customers::createCustomer($params);
$this->assertEquals($response, $result);
}
/**
* Create customer test with mobile_number missing 2020-05-19 version
* Should pass
*
* @return void
* @throws Exceptions\ApiException
*/
public function testIs20200519CustomerCreatableWithMobileNumberMissing()
{
$params = self::CUSTOMER_PARAMS_20200519;
unset($params['mobile_number']);
$response = self::CUSTOMER_RESPONSE_20200519;
$response['mobile_number'] = null;
$this->stubRequest(
'POST',
'/customers',
$params,
[],
$response
);
$result = Customers::createCustomer($params);
$this->assertEquals($response, $result);
}
/**
* Create customer test with email missing 2020-05-19 version
* Should pass
*
* @return void
* @throws Exceptions\ApiException
*/
public function testIs20200519CustomerCreatableWithEmailMissing()
{
$params = self::CUSTOMER_PARAMS_20200519;
unset($params['email']);
$response = self::CUSTOMER_RESPONSE_20200519;
$response['email'] = null;
$this->stubRequest(
'POST',
'/customers',
$params,
[],
$response
);
$result = Customers::createCustomer($params);
$this->assertEquals($response, $result);
}
/**
* Create customer test with headers 2020-05-19 version
* Should pass
*
* @return void
* @throws Exceptions\ApiException
*/
public function testIs20200519CustomerCreatableWithHeaders()
{
$params = array_merge(
self::CUSTOMER_PARAMS_20200519,
array('for-user-id' => 'user-id')
);
$response = self::CUSTOMER_RESPONSE_20200519;
$this->stubRequest(
'POST',
'/customers',
$params,
[],
$response
);
$result = Customers::createCustomer($params);
$this->assertEquals($response, $result);
}
/**
* Create customer test 2020-05-19 version
* Should throw InvalidArgumentException
*
* @return void
* @throws Exceptions\ApiException
*/
public function testIs20200519CustomerCreatableThrowInvalidArgumentException()
{
$this->expectException(\Xendit\Exceptions\InvalidArgumentException::class);
$params = [
'reference_id' => self::REFERENCE_ID
];
Customers::createCustomer($params);
}
/**
* Get customer test 2020-05-19 version
* Should pass
*
* @return void
* @throws Exceptions\ApiException
*/
public function testIs20200519CustomerGettable()
{
$response = [self::CUSTOMER_RESPONSE_20200519];
$this->stubRequest(
'get',
'/customers?reference_id=' . self::REFERENCE_ID,
[],
[],
$response
);
$result = Customers::getCustomerByReferenceID(
self::REFERENCE_ID
);
$this->assertEquals($response, $result);
}
/**
* Get customer test 2020-05-19 version
* Should throw ApiException
*
* @return void
* @throws Exceptions\ApiException
*/
public function testIs20200519CustomerGettableThrowApiException()
{
$response = Customers::getCustomerByReferenceID(
self::REFERENCE_ID
);
$this->assertEquals($response, []);
}
/**
* Create customer test 2020-10-31 version
* Should pass
*
* @return void
* @throws Exceptions\ApiException
*/
public function testIs20201031CustomerCreatable()
{
$params = self::CUSTOMER_PARAMS_20201031;
$response = self::CUSTOMER_RESPONSE_20201031;
$this->stubRequest(
'POST',
'/customers',
$params,
self::NEW_API_VERSION,
$response
);
$params = array_merge(
$params,
self::NEW_API_VERSION
);
$result = Customers::createCustomer($params);
$this->assertEquals($response, $result);
}
/**
* Create customer test with headers 2020-10-31 version
* Should pass
*
* @return void
* @throws Exceptions\ApiException
*/
public function testIs20201031CustomerCreatableWithHeaders()
{
$params = array_merge(
self::CUSTOMER_PARAMS_20201031,
array('for-user-id' => 'user-id')
);
$response = self::CUSTOMER_RESPONSE_20201031;
$this->stubRequest(
'POST',
'/customers',
$params,
self::NEW_API_VERSION,
$response
);
$params = array_merge(
$params,
self::NEW_API_VERSION
);
$result = Customers::createCustomer($params);
$this->assertEquals($response, $result);
}
/**
* Create customer test 2020-10-31 version
* Should throw InvalidArgumentException
*
* @return void
* @throws Exceptions\ApiException
*/
public function testIs20201031CustomerCreatableThrowInvalidArgumentException()
{
$this->expectException(\Xendit\Exceptions\InvalidArgumentException::class);
$params = [
'reference_id' => self::REFERENCE_ID,
'api-version' => '2020-10-31'
];
Customers::createCustomer($params);
}
/**
* Get customer test 2020-10-31 version
* Should pass
*
* @return void
* @throws Exceptions\ApiException
*/
public function testIs20201031CustomerGettable()
{
$response = [self::CUSTOMER_RESPONSE_20201031];
$this->stubRequest(
'get',
'/customers?reference_id=' . self::REFERENCE_ID,
[],
self::NEW_API_VERSION,
$response
);
$result = Customers::getCustomerByReferenceID(
self::REFERENCE_ID,
self::NEW_API_VERSION
);
$this->assertEquals($response, $result);
}
/**
* Get customer test 2020-10-31 version
* Should throw ApiException
*
* @return void
* @throws Exceptions\ApiException
*/
public function testIs20201031CustomerGettableThrowApiException()
{
$response = [
'data' => [],
'has_more' => false
];
$result = Customers::getCustomerByReferenceID(
self::REFERENCE_ID,
self::NEW_API_VERSION
);
$this->assertEquals($response, $result);
}
}