I am a hacker in the dark of a very cold night
path :/var/www/html/vorne.webheaydemo.com
upload file:
List of files:
| name file |
size |
edit |
permission |
action |
| .editorconfig | 276 KB | March 05 2024 07:12:34 | 0666 |
|
| .env | 1385 KB | May 24 2024 16:43:55 | 0666 |
|
| .env.example | 1088 KB | March 05 2024 07:12:34 | 0666 |
|
| .gitattributes | 190 KB | March 05 2024 07:12:34 | 0666 |
|
| .gitignore | 245 KB | March 05 2024 07:12:34 | 0666 |
|
| .htaccess | 947 KB | July 04 2023 21:25:08 | 0664 |
|
| .rnd | 1024 KB | March 13 2024 04:51:14 | 0666 |
|
| README.md | 472 KB | March 22 2024 10:35:00 | 0666 |
|
| app | - | March 05 2024 07:12:34 | 0777 |
|
| artisan | 1739 KB | March 05 2024 07:12:34 | 0666 |
|
| bootstrap | - | March 05 2024 07:12:34 | 0777 |
|
| composer.json | 2829 KB | May 13 2024 12:10:04 | 0666 |
|
| composer.lock | 417205 KB | March 19 2024 12:13:14 | 0666 |
|
| config | - | July 03 2025 02:53:36 | 0777 |
|
| database | - | March 05 2024 07:12:34 | 0777 |
|
| index.php | 1816 KB | May 13 2024 10:32:36 | 0666 |
|
| lang | - | May 13 2024 14:53:26 | 0777 |
|
| manifest.json | 913 KB | May 14 2024 03:57:26 | 0664 |
|
| package.json | 398 KB | March 05 2024 07:12:34 | 0666 |
|
| phpunit.xml | 1206 KB | March 05 2024 07:12:34 | 0666 |
|
| public | - | July 03 2025 02:37:20 | 0777 |
|
| resources | - | May 13 2024 12:09:36 | 0777 |
|
| routes | - | March 05 2024 07:12:34 | 0777 |
|
| service-worker.js | 924 KB | March 05 2024 07:12:34 | 0666 |
|
| storage | - | March 05 2024 10:03:52 | 0777 |
|
| symlink.php | 218 KB | March 05 2024 07:12:34 | 0666 |
|
| tests | - | March 05 2024 07:12:34 | 0777 |
|
| vendor | - | March 19 2024 12:13:14 | 0777 |
|
| vite.config.js | 326 KB | March 05 2024 07:12:34 | 0666 |
|
client = new PayPalClient($this->getApiCredentials());
parent::setUp();
}
/** @test */
public function it_returns_error_if_invalid_credentials_are_used_to_get_access_token()
{
$this->client = new PayPalClient($this->getMockCredentials());
$response = $this->client->getAccessToken();
$this->assertIsArray($response['error']);
$this->assertArrayHasKey('error', $response);
}
/** @test */
public function it_can_get_access_token()
{
$this->client->setClient(
$this->mock_http_client(
$this->mockAccessTokenResponse()
)
);
$response = $this->client->getAccessToken();
self::$access_token = $response['access_token'];
$this->assertArrayHasKey('access_token', $response);
$this->assertNotEmpty($response['access_token']);
}
/** @test */
public function it_can_create_a_billing_plan()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(
$this->mockCreatePlansResponse()
)
);
$expectedParams = $this->createPlanParams();
$response = $this->client->setRequestHeader('PayPal-Request-Id', 'some-request-id')->createPlan($expectedParams);
$this->assertNotEmpty($response);
$this->assertArrayHasKey('id', $response);
}
/** @test */
public function it_can_list_billing_plans()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(
$this->mockListPlansResponse()
)
);
$response = $this->client->listPlans();
$this->assertNotEmpty($response);
$this->assertArrayHasKey('plans', $response);
}
/** @test */
public function it_can_update_a_billing_plan()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(false)
);
$expectedParams = $this->updatePlanParams();
$response = $this->client->updatePlan('P-7GL4271244454362WXNWU5NQ', $expectedParams);
$this->assertEmpty($response);
}
/** @test */
public function it_can_show_details_for_a_billing_plan()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(
$this->mockGetPlansResponse()
)
);
$response = $this->client->showPlanDetails('P-5ML4271244454362WXNWU5NQ');
$this->assertNotEmpty($response);
$this->assertArrayHasKey('id', $response);
}
/** @test */
public function it_can_activate_a_billing_plan()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(false)
);
$response = $this->client->activatePlan('P-7GL4271244454362WXNWU5NQ');
$this->assertEmpty($response);
}
/** @test */
public function it_can_deactivate_a_billing_plan()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(false)
);
$response = $this->client->deactivatePlan('P-7GL4271244454362WXNWU5NQ');
$this->assertEmpty($response);
}
/** @test */
public function it_can_update_pricing_for_a_billing_plan()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(false)
);
$expectedParams = $this->updatePlanPricingParams();
$response = $this->client->updatePlanPricing('P-2UF78835G6983425GLSM44MA', $expectedParams);
$this->assertEmpty($response);
}
/** @test */
public function it_can_list_products()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(
$this->mockListCatalogProductsResponse()
)
);
$response = $this->client->listProducts();
$this->assertNotEmpty($response);
$this->assertArrayHasKey('products', $response);
}
/** @test */
public function it_can_create_a_product()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(
$this->mockCreateCatalogProductsResponse()
)
);
$expectedParams = $this->createProductParams();
$response = $this->client->setRequestHeader('PayPal-Request-Id', 'product-request-'.time())->createProduct($expectedParams);
self::$product_id = $response['id'];
$this->assertNotEmpty($response);
$this->assertArrayHasKey('id', $response);
}
/** @test */
public function it_can_update_a_product()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(false)
);
$expectedParams = $this->updateProductParams();
$response = $this->client->updateProduct(self::$product_id, $expectedParams);
$this->assertEmpty($response);
}
/** @test */
public function it_can_get_details_for_a_product()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(
$this->mockGetCatalogProductsResponse()
)
);
$response = $this->client->showProductDetails(self::$product_id);
$this->assertNotEmpty($response);
$this->assertArrayHasKey('id', $response);
}
/** @test */
public function it_can_acknowledge_item_is_returned_for_raised_dispute()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(
$this->mockAcceptDisputesClaimResponse()
)
);
$response = $this->client->acknowledgeItemReturned(
'PP-D-4012',
'I have received the item back.',
'ITEM_RECEIVED'
);
$this->assertNotEmpty($response);
$this->assertArrayHasKey('links', $response);
}
/** @test */
public function it_can_list_disputes()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(
$this->mockListDisputesResponse()
)
);
$response = $this->client->listDisputes();
$this->assertNotEmpty($response);
$this->assertArrayHasKey('items', $response);
}
/** @test */
public function it_can_partially_update_a_dispute()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(false)
);
$expectedParams = $this->updateDisputeParams();
$response = $this->client->updateDispute('PP-D-27803', $expectedParams);
$this->assertEmpty($response);
}
/** @test */
public function it_can_get_details_for_a_dispute()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(
$this->mockGetDisputesResponse()
)
);
$response = $this->client->showDisputeDetails('PP-D-4012');
$this->assertNotEmpty($response);
$this->assertArrayHasKey('dispute_id', $response);
}
/** @test */
public function it_can_provide_evidence_for_a_dispute_claim()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(
$this->mockAcceptDisputesClaimResponse()
)
);
$mockFiles = [
__DIR__.'/../Mocks/samples/sample.jpg',
__DIR__.'/../Mocks/samples/sample.png',
__DIR__.'/../Mocks/samples/sample.pdf',
];
$response = $this->client->provideDisputeEvidence(
'PP-D-27803',
$mockFiles
);
$this->assertNotEmpty($response);
$this->assertArrayHasKey('links', $response);
$this->markTestIncomplete('Skipping the test');
}
/** @test */
public function it_throws_exception_if_invalid_file_as_evidence_is_provided_for_a_dispute_claim()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(
$this->mockAcceptDisputesClaimResponse()
)
);
$mockFiles = [
__DIR__.'/../Mocks/samples/sample.txt',
__DIR__.'/../Mocks/samples/sample.pdf',
];
$this->expectException(\Exception::class);
$this->markTestIncomplete('Skipping the test');
$response = $this->client->provideDisputeEvidence(
'PP-D-27803',
$mockFiles
);
}
/** @test */
public function it_throws_exception_if_file_size_as_evidence_exceeds_per_file_limit_for_a_dispute_claim()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(
$this->mockAcceptDisputesClaimResponse()
)
);
$file = __DIR__.'/../Mocks/samples/sample2.pdf';
$mockFiles = [$file];
$this->expectException(\Exception::class);
$this->markTestIncomplete('Skipping the test');
$this->client->provideDisputeEvidence(
'PP-D-27803',
$mockFiles
);
}
/** @test */
public function it_throws_exception_if_file_size_as_evidence_exceeds_overall_limit_for_a_dispute_claim()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(
$this->mockAcceptDisputesClaimResponse()
)
);
$file = __DIR__.'/../Mocks/samples/sample2.pdf';
$mockFiles = [$file, $file, $file, $file, $file];
$this->expectException(\Exception::class);
$this->markTestIncomplete('Skipping the test');
$this->client->provideDisputeEvidence(
'PP-D-27803',
$mockFiles
);
}
/** @test */
public function it_can_offer_to_resolve_dispute_claim()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(
$this->mockAcceptDisputesClaimResponse()
)
);
$response = $this->client->makeOfferToResolveDispute(
'PP-D-27803',
'Offer refund with replacement item.',
5.99,
'REFUND_WITH_REPLACEMENT'
);
$this->assertNotEmpty($response);
$this->assertArrayHasKey('links', $response);
}
/** @test */
public function it_can_escalate_dispute_claim()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(
$this->mockAcceptDisputesClaimResponse()
)
);
$response = $this->client->escalateDisputeToClaim(
'PP-D-27803',
'Escalating to PayPal claim for resolution.'
);
$this->assertNotEmpty($response);
$this->assertArrayHasKey('links', $response);
}
/** @test */
public function it_can_accept_dispute_claim()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(
$this->mockAcceptDisputesClaimResponse()
)
);
$response = $this->client->acceptDisputeClaim(
'PP-D-27803',
'Full refund to the customer.'
);
$this->assertNotEmpty($response);
$this->assertArrayHasKey('links', $response);
}
/** @test */
public function it_can_accept_dispute_offer_resolution()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(
$this->mockAcceptDisputesClaimResponse()
)
);
$response = $this->client->acceptDisputeOfferResolution(
'PP-D-4012',
'I am ok with the refund offered.'
);
$this->assertNotEmpty($response);
$this->assertArrayHasKey('links', $response);
}
/** @test */
public function it_can_update_dispute_status()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(
$this->mockAcceptDisputesClaimResponse()
)
);
$response = $this->client->updateDisputeStatus(
'PP-D-4012',
true
);
$this->assertNotEmpty($response);
$this->assertArrayHasKey('links', $response);
}
/** @test */
public function it_can_settle_dispute()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(
$this->mockAcceptDisputesClaimResponse()
)
);
$response = $this->client->settleDispute(
'PP-D-4012',
true
);
$this->assertNotEmpty($response);
$this->assertArrayHasKey('links', $response);
}
/** @test */
public function it_can_decline_dispute_offer_resolution()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(
$this->mockAcceptDisputesClaimResponse()
)
);
$response = $this->client->declineDisputeOfferResolution(
'PP-D-4012',
'I am not ok with the refund offered.'
);
$this->assertNotEmpty($response);
$this->assertArrayHasKey('links', $response);
}
/** @test */
public function it_can_generate_unique_invoice_number()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(
$this->mockGenerateInvoiceNumberResponse()
)
);
$response = $this->client->generateInvoiceNumber();
$this->assertNotEmpty($response);
$this->assertArrayHasKey('invoice_number', $response);
}
/** @test */
public function it_can_create_a_draft_invoice()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(
$this->mockCreateInvoicesResponse()
)
);
$expectedParams = $this->createInvoiceParams();
$response = $this->client->createInvoice($expectedParams);
$this->assertNotEmpty($response);
$this->assertArrayHasKey('id', $response);
}
/** @test */
public function it_can_list_invoices()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(
$this->mockListInvoicesResponse()
)
);
$response = $this->client->listInvoices();
$this->assertArrayHasKey('total_pages', $response);
$this->assertArrayHasKey('total_items', $response);
}
/** @test */
public function it_can_delete_an_invoice()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(false)
);
$response = $this->client->deleteInvoice('INV2-Z56S-5LLA-Q52L-CPZ5');
$this->assertEmpty($response);
}
/** @test */
public function it_can_update_an_invoice()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(
$this->mockUpdateInvoicesResponse()
)
);
$expectedParams = $this->updateInvoiceParams();
$response = $this->client->updateInvoice('INV2-Z56S-5LLA-Q52L-CPZ5', $expectedParams);
$this->assertNotEmpty($response);
$this->assertArrayHasKey('id', $response);
}
/** @test */
public function it_can_show_details_for_an_invoice()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(
$this->mockGetInvoicesResponse()
)
);
$response = $this->client->showInvoiceDetails('INV2-Z56S-5LLA-Q52L-CPZ5');
$this->assertNotEmpty($response);
$this->assertArrayHasKey('id', $response);
}
/** @test */
public function it_can_cancel_an_invoice()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(false)
);
$expectedParams = $this->cancelInvoiceParams();
$response = $this->client->cancelInvoice(
'INV2-Z56S-5LLA-Q52L-CPZ5',
'Payment due for the invoice #ABC-123',
'Please pay before the due date to avoid incurring late payment charges which will be adjusted in the next bill generated.',
true,
true,
[
'customer-a@example.com',
'customer@example.com',
]
);
$this->assertEmpty($response);
}
/** @test */
public function it_can_generate_qr_code_for_invoice()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(
$this->mockGenerateInvoiceQRCodeResponse()
)
);
$response = $this->client->generateQRCodeInvoice('INV2-Z56S-5LLA-Q52L-CPZ5');
$this->assertNotEmpty($response);
}
/** @test */
public function it_can_register_payment_for_invoice()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(
$this->mockInvoiceRegisterPaymentResponse()
)
);
$response = $this->client->registerPaymentInvoice('INV2-Z56S-5LLA-Q52L-CPZ5', '2018-05-01', 'BANK_TRANSFER', 10.00);
$this->assertNotEmpty($response);
$this->assertArrayHasKey('payment_id', $response);
}
/** @test */
public function it_can_delete_payment_for_invoice()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(false)
);
$response = $this->client->deleteExternalPaymentInvoice('INV2-Z56S-5LLA-Q52L-CPZ5', 'EXTR-86F38350LX4353815');
$this->assertEmpty($response);
}
/** @test */
public function it_can_refund_payment_for_invoice()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(
$this->mockInvoiceRefundPaymentResponse()
)
);
$response = $this->client->refundInvoice('INV2-Z56S-5LLA-Q52L-CPZ5', '2018-05-01', 'BANK_TRANSFER', 5.00);
$this->assertNotEmpty($response);
$this->assertArrayHasKey('refund_id', $response);
}
/** @test */
public function it_can_delete_refund_for_invoice()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(false)
);
$response = $this->client->deleteRefundInvoice('INV2-Z56S-5LLA-Q52L-CPZ5', 'EXTR-2LG703375E477444T');
$this->assertEmpty($response);
}
/** @test */
public function it_can_send_an_invoice()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(false)
);
$response = $this->client->sendInvoice(
'INV2-Z56S-5LLA-Q52L-CPZ5',
'Payment due for the invoice #ABC-123',
'Please pay before the due date to avoid incurring late payment charges which will be adjusted in the next bill generated.',
true,
true,
[
'customer-a@example.com',
'customer@example.com',
]
);
$this->assertEmpty($response);
}
/** @test */
public function it_can_send_reminder_for_an_invoice()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(false)
);
$response = $this->client->sendInvoiceReminder(
'INV2-Z56S-5LLA-Q52L-CPZ5',
'Reminder: Payment due for the invoice #ABC-123',
'Please pay before the due date to avoid incurring late payment charges which will be adjusted in the next bill generated.',
true,
true,
[
'customer-a@example.com',
'customer@example.com',
]
);
$this->assertEmpty($response);
}
/** @test */
public function it_can_create_invoice_template()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(
$this->mockCreateInvoiceTemplateResponse()
)
);
$expectedParams = $this->mockCreateInvoiceTemplateParams();
$response = $this->client->createInvoiceTemplate($expectedParams);
$this->assertNotEmpty($response);
$this->assertArrayHasKey('id', $response);
}
/** @test */
public function it_can_list_invoice_templates()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(
$this->mockListInvoiceTemplateResponse()
)
);
$response = $this->client->listInvoiceTemplates();
$this->assertNotEmpty($response);
$this->assertArrayHasKey('templates', $response);
}
/** @test */
public function it_can_delete_an_invoice_template()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(false)
);
$response = $this->client->deleteInvoiceTemplate('TEMP-19V05281TU309413B');
$this->assertEmpty($response);
}
/** @test */
public function it_can_update_an_invoice_template()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(
$this->mockUpdateInvoiceTemplateResponse()
)
);
$expectedParams = $this->mockUpdateInvoiceTemplateParams();
$response = $this->client->updateInvoiceTemplate('TEMP-19V05281TU309413B', $expectedParams);
$this->assertNotEmpty($response);
$this->assertArrayHasKey('id', $response);
}
/** @test */
public function it_can_get_details_for_an_invoice_template()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(
$this->mockGetInvoiceTemplateResponse()
)
);
$response = $this->client->showInvoiceTemplateDetails('TEMP-19V05281TU309413B');
$this->assertNotEmpty($response);
$this->assertArrayHasKey('id', $response);
}
/** @test */
public function it_can_search_invoices()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(
$this->mockSearchInvoicesResponse()
)
);
$response = $this->client->searchInvoices();
$this->assertArrayHasKey('total_pages', $response);
$this->assertArrayHasKey('total_items', $response);
}
/** @test */
public function it_can_search_invoices_with_custom_filters()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(
$this->mockSearchInvoicesResponse()
)
);
$response = $this->client
->addInvoiceFilterByRecipientEmail('bill-me@example.com')
->addInvoiceFilterByRecipientFirstName('John')
->addInvoiceFilterByRecipientLastName('Doe')
->addInvoiceFilterByRecipientBusinessName('Acme Inc.')
->addInvoiceFilterByInvoiceNumber('#123')
->addInvoiceFilterByInvoiceStatus(['PAID', 'MARKED_AS_PAID'])
->addInvoiceFilterByReferenceorMemo('deal-ref')
->addInvoiceFilterByCurrencyCode('USD')
->addInvoiceFilterByAmountRange(30, 50)
->addInvoiceFilterByDateRange('2018-06-01', '2018-06-21', 'invoice_date')
->addInvoiceFilterByArchivedStatus(false)
->addInvoiceFilterByFields(['items', 'payments', 'refunds'])
->searchInvoices();
$this->assertArrayHasKey('total_pages', $response);
$this->assertArrayHasKey('total_items', $response);
$this->assertArrayHasKey('items', $response);
}
/** @test */
public function it_throws_exception_on_search_invoices_with_invalid_status()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(
$this->mockSearchInvoicesResponse()
)
);
$this->expectException(\Exception::class);
$response = $this->client
->addInvoiceFilterByInvoiceStatus(['DECLINED'])
->searchInvoices();
}
/** @test */
public function it_throws_exception_on_search_invoices_with_invalid_amount_ranges()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(
$this->mockSearchInvoicesResponse()
)
);
$filters = $this->invoiceSearchParams();
$this->expectException(\Exception::class);
$response = $this->client
->addInvoiceFilterByAmountRange(50, 30)
->searchInvoices();
}
/** @test */
public function it_throws_exception_on_search_invoices_with_invalid_date_ranges()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(
$this->mockSearchInvoicesResponse()
)
);
$filters = $this->invoiceSearchParams();
$this->expectException(\Exception::class);
$response = $this->client
->addInvoiceFilterByDateRange('2018-07-01', '2018-06-21', 'invoice_date')
->searchInvoices();
}
/** @test */
public function it_throws_exception_on_search_invoices_with_invalid_date_range_type()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(
$this->mockSearchInvoicesResponse()
)
);
$filters = $this->invoiceSearchParams();
$this->expectException(\Exception::class);
$response = $this->client
->addInvoiceFilterByDateRange('2018-06-01', '2018-06-21', 'declined_date')
->searchInvoices();
}
/** @test */
public function it_can_get_user_profile_details()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(
$this->mockShowProfileInfoResponse()
)
);
$response = $this->client->showProfileInfo();
$this->assertArrayHasKey('address', $response);
}
/** @test */
public function it_can_get_list_users()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(
$this->mocklistUsersResponse()
)
);
$response = $this->client->listUsers();
$this->assertArrayHasKey('Resources', $response);
}
/** @test */
public function it_can_get_user_details()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(
$this->mocklistUserResponse()
)
);
$user_id = '7XRNGHV24HQL4';
$response = $this->client->showUserDetails($user_id);
$this->assertArrayHasKey('userName', $response);
}
/** @test */
public function it_can_deleta_a_user()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(false)
);
$user_id = '7XRNGHV24HQL4';
$response = $this->client->deleteUser($user_id);
$this->assertEmpty($response);
}
/** @test */
public function it_can_create_merchant_applications()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(
$this->mockCreateMerchantApplicationResponse()
)
);
$response = $this->client->createMerchantApplication(
'AGGREGATOR',
[
'https://example.com/callback',
'https://example.com/callback2',
],
[
'facilitator@example.com',
'merchant@example.com',
],
'WDJJHEBZ4X2LY',
'some-open-id'
);
$this->assertArrayHasKey('client_name', $response);
$this->assertArrayHasKey('contacts', $response);
$this->assertArrayHasKey('redirect_uris', $response);
}
/** @test */
public function it_can_set_account_properties()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client('')
);
$response = $this->client->setAccountProperties($this->mockSetAccountPropertiesParams());
$this->assertEmpty($response);
}
/** @test */
public function it_can_disable_account_properties()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(
$this->mockUpdateOrdersResponse()
)
);
$response = $this->client->disableAccountProperties();
$this->assertEmpty($response);
}
/** @test */
public function it_can_get_client_token()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(
$this->mockGetClientTokenResponse()
)
);
$response = $this->client->getClientToken();
$this->assertArrayHasKey('client_token', $response);
}
/** @test */
public function it_can_create_orders()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(
$this->mockCreateOrdersResponse()
)
);
$filters = $this->createOrderParams();
$response = $this->client->createOrder($filters);
$this->assertArrayHasKey('status', $response);
$this->assertArrayHasKey('id', $response);
$this->assertArrayHasKey('links', $response);
}
/** @test */
public function it_can_update_orders()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(
$this->mockUpdateOrdersResponse()
)
);
$order_id = '5O190127TN364715T';
$filters = $this->updateOrderParams();
$response = $this->client->updateOrder($order_id, $filters);
$this->assertNotEmpty($response);
}
/** @test */
public function it_can_get_order_details()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(
$this->mockOrderDetailsResponse()
)
);
$order_id = '5O190127TN364715T';
$response = $this->client->showOrderDetails($order_id);
$this->assertArrayHasKey('status', $response);
$this->assertArrayHasKey('id', $response);
$this->assertArrayHasKey('intent', $response);
$this->assertArrayHasKey('payment_source', $response);
$this->assertArrayHasKey('purchase_units', $response);
$this->assertArrayHasKey('create_time', $response);
$this->assertArrayHasKey('links', $response);
}
/** @test */
public function it_can_authorize_payment_for_an_order()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(
$this->mockOrderPaymentAuthorizedResponse()
)
);
$order_id = '5O190127TN364715T';
$response = $this->client->authorizePaymentOrder($order_id);
$this->assertArrayHasKey('status', $response);
$this->assertArrayHasKey('id', $response);
$this->assertArrayHasKey('payer', $response);
$this->assertArrayHasKey('purchase_units', $response);
$this->assertArrayHasKey('links', $response);
}
/** @test */
public function it_can_create_partner_referral()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(
$this->mockCreatePartnerReferralsResponse()
)
);
$expectedParams = $this->mockCreatePartnerReferralParams();
$response = $this->client->createPartnerReferral($expectedParams);
$this->assertArrayHasKey('links', $response);
}
/** @test */
public function it_can_get_referral_details()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(
$this->mockShowReferralDataResponse()
)
);
$partner_referral_id = 'ZjcyODU4ZWYtYTA1OC00ODIwLTk2M2EtOTZkZWQ4NmQwYzI3RU12cE5xa0xMRmk1NWxFSVJIT1JlTFdSbElCbFU1Q3lhdGhESzVQcU9iRT0=';
$response = $this->client->showReferralData($partner_referral_id);
$this->assertArrayHasKey('partner_referral_id', $response);
$this->assertArrayHasKey('referral_data', $response);
}
/** @test */
public function it_can_list_seller_tracking_information()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(
$this->mockListSellerTrackingInformationResponse()
)
);
$partner_id = 'U6E69K99P3G88';
$tracking_id = 'merchantref1';
$response = $this->client->listSellerTrackingInformation($partner_id, $tracking_id);
$this->assertArrayHasKey('merchant_id', $response);
$this->assertArrayHasKey('tracking_id', $response);
}
/** @test */
public function it_can_show_seller_status()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(
$this->mockShowSellerStatusResponse()
)
);
$partner_id = 'U6E69K99P3G88';
$merchant_id = '8LQLM2ML4ZTYU';
$response = $this->client->showSellerStatus($partner_id, $merchant_id);
$this->assertArrayHasKey('merchant_id', $response);
}
/** @test */
public function it_can_list_merchant_credentials()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(
$this->mockListMerchantCredentialsResponse()
)
);
$partner_id = 'U6E69K99P3G88';
$response = $this->client->listMerchantCredentials($partner_id);
$this->assertArrayHasKey('client_id', $response);
$this->assertArrayHasKey('payer_id', $response);
}
/** @test */
public function it_can_list_web_experience_profiles()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(
$this->mockListWebProfilesResponse()
)
);
$response = $this->client->listWebExperienceProfiles();
$this->assertNotEmpty($response);
$this->assertArrayHasKey('id', collect($response)->first());
}
/** @test */
public function it_can_create_web_experience_profile()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(
$this->mockWebProfileResponse()
)
);
$expectedParams = $this->mockCreateWebProfileParams();
$response = $this->client->setRequestHeader('PayPal-Request-Id', 'some-request-id')->createWebExperienceProfile($expectedParams);
$this->assertNotEmpty($response);
$this->assertArrayHasKey('name', $response);
}
/** @test */
public function it_can_delete_web_experience_profile()
{
$expectedResponse = '';
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client($expectedResponse)
);
$expectedParams = 'XP-A88A-LYLW-8Y3X-E5ER';
$response = $this->client->deleteWebExperienceProfile($expectedParams);
$this->assertEmpty($response);
}
/** @test */
public function it_can_partially_update_web_experience_profile()
{
$expectedResponse = '';
$expectedParams = $this->partiallyUpdateWebProfileParams();
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client($expectedResponse)
);
$response = $this->client->patchWebExperienceProfile('XP-A88A-LYLW-8Y3X-E5ER', $expectedParams);
$this->assertEmpty($response);
}
/** @test */
public function it_can_fully_update_web_experience_profile()
{
$expectedResponse = '';
$expectedParams = $this->updateWebProfileParams();
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client($expectedResponse)
);
$response = $this->client->updateWebExperienceProfile('XP-A88A-LYLW-8Y3X-E5ER', $expectedParams);
$this->assertEmpty($response);
}
/** @test */
public function it_can_get_web_experience_profile_details()
{
$expectedResponse = $this->mockWebProfileResponse();
$expectedParams = 'XP-A88A-LYLW-8Y3X-E5ER';
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client($expectedResponse)
);
$response = $this->client->showWebExperienceProfileDetails($expectedParams);
$this->assertNotEmpty($response);
$this->assertArrayHasKey('name', $response);
}
/** @test */
public function it_can_capture_payment_for_an_order()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(
$this->mockOrderPaymentCapturedResponse()
)
);
$order_id = '5O190127TN364715T';
$response = $this->client->capturePaymentOrder($order_id);
$this->assertArrayHasKey('status', $response);
$this->assertArrayHasKey('id', $response);
$this->assertArrayHasKey('payer', $response);
$this->assertArrayHasKey('purchase_units', $response);
$this->assertArrayHasKey('links', $response);
}
/** @test */
public function it_can_show_details_for_an_authorized_payment()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(
$this->mockGetAuthorizedPaymentDetailsResponse()
)
);
$response = $this->client->showAuthorizedPaymentDetails('0VF52814937998046');
$this->assertNotEmpty($response);
$this->assertArrayHasKey('id', $response);
}
/** @test */
public function it_can_capture_an_authorized_payment()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(
$this->mockCaptureAuthorizedPaymentResponse()
)
);
$response = $this->client->captureAuthorizedPayment(
'0VF52814937998046',
'INVOICE-123',
10.99,
'Payment is due'
);
$this->assertNotEmpty($response);
$this->assertArrayHasKey('id', $response);
}
/** @test */
public function it_can_reauthorize_an_authorized_payment()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(
$this->mockReAuthorizeAuthorizedPaymentResponse()
)
);
$response = $this->client->reAuthorizeAuthorizedPayment('0VF52814937998046', 10.99);
$this->assertNotEmpty($response);
$this->assertArrayHasKey('id', $response);
}
/** @test */
public function it_can_void_an_authorized_payment()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(false)
);
$response = $this->client->voidAuthorizedPayment('0VF52814937998046');
$this->assertEmpty($response);
}
/** @test */
public function it_can_show_details_for_a_captured_payment()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(
$this->mockGetCapturedPaymentDetailsResponse()
)
);
$response = $this->client->showCapturedPaymentDetails('2GG279541U471931P');
$this->assertNotEmpty($response);
$this->assertArrayHasKey('id', $response);
}
/** @test */
public function it_can_refund_a_captured_payment()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(
$this->mockRefundCapturedPaymentResponse()
)
);
$response = $this->client->refundCapturedPayment(
'2GG279541U471931P',
'INVOICE-123',
10.99,
'Defective product'
);
$this->assertNotEmpty($response);
$this->assertArrayHasKey('id', $response);
}
/** @test */
public function it_can_show_details_for_a_refund()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(
$this->mockGetRefundDetailsResponse()
)
);
$response = $this->client->showRefundDetails('1JU08902781691411');
$this->assertNotEmpty($response);
$this->assertArrayHasKey('id', $response);
}
/** @test */
public function it_can_create_batch_payout()
{
$expectedResponse = $this->mockCreateBatchPayoutResponse();
$expectedParams = $this->mockCreateBatchPayoutParams();
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client($expectedResponse)
);
$response = $this->client->createBatchPayout($expectedParams);
$this->assertNotEmpty($response);
$this->assertArrayHasKey('batch_header', $response);
}
/** @test */
public function it_can_show_batch_payout_details()
{
$expectedResponse = $this->showBatchPayoutResponse();
$expectedParams = 'FYXMPQTX4JC9N';
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client($expectedResponse)
);
$response = $this->client->showBatchPayoutDetails($expectedParams);
$this->assertNotEmpty($response);
$this->assertArrayHasKey('batch_header', $response);
$this->assertArrayHasKey('items', $response);
}
/** @test */
public function it_can_show_batch_payout_item_details()
{
$expectedResponse = $this->showBatchPayoutItemResponse();
$expectedParams = '8AELMXH8UB2P8';
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client($expectedResponse)
);
$response = $this->client->showPayoutItemDetails($expectedParams);
$this->assertNotEmpty($response);
$this->assertArrayHasKey('payout_item_id', $response);
$this->assertArrayHasKey('payout_batch_id', $response);
$this->assertArrayHasKey('payout_item', $response);
}
/** @test */
public function it_can_cancel_unclaimed_batch_payout_item()
{
$expectedResponse = $this->mockCancelUnclaimedBatchItemResponse();
$expectedParams = '8AELMXH8UB2P8';
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client($expectedResponse)
);
$response = $this->client->cancelUnclaimedPayoutItem($expectedParams);
$this->assertNotEmpty($response);
$this->assertArrayHasKey('payout_item_id', $response);
$this->assertArrayHasKey('payout_batch_id', $response);
$this->assertArrayHasKey('payout_item', $response);
}
/** @test */
public function it_can_create_referenced_batch_payout()
{
$expectedResponse = $this->mockCreateReferencedBatchPayoutResponse();
$expectedParams = $this->mockCreateReferencedBatchPayoutParams();
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client($expectedResponse)
);
$response = $this->client->setRequestHeaders([
'PayPal-Request-Id' => 'some-request-id',
'PayPal-Partner-Attribution-Id' => 'some-attribution-id',
])->createReferencedBatchPayout($expectedParams);
$this->assertNotEmpty($response);
$this->assertArrayHasKey('links', $response);
}
/** @test */
public function it_can_list_items_referenced_in_batch_payout()
{
$expectedResponse = $this->mockShowReferencedBatchPayoutResponse();
$expectedParams = 'KHbwO28lWlXwi2IlToJ2IYNG4juFv6kpbFx4J9oQ5Hb24RSp96Dk5FudVHd6v4E=';
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client($expectedResponse)
);
$response = $this->client->listItemsReferencedInBatchPayout($expectedParams);
$this->assertNotEmpty($response);
$this->assertArrayHasKey('links', $response);
}
/** @test */
public function it_can_create_referenced_batch_payout_item()
{
$expectedResponse = $this->mockCreateReferencedBatchPayoutItemResponse();
$expectedParams = $this->mockCreateReferencedBatchPayoutItemParams();
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client($expectedResponse)
);
$response = $this->client->setRequestHeaders([
'PayPal-Request-Id' => 'some-request-id',
'PayPal-Partner-Attribution-Id' => 'some-attribution-id',
])->createReferencedBatchPayoutItem($expectedParams);
$this->assertNotEmpty($response);
$this->assertArrayHasKey('links', $response);
}
/** @test */
public function it_can_show_referenced_payout_item_details()
{
$expectedResponse = $this->mockShowReferencedBatchPayoutItemResponse();
$expectedParams = 'CDZEC5MJ8R5HY';
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client($expectedResponse)
);
$response = $this->client->setRequestHeader('PayPal-Partner-Attribution-Id', 'some-attribution-id')
->showReferencedPayoutItemDetails($expectedParams);
$this->assertNotEmpty($response);
$this->assertArrayHasKey('item_id', $response);
$this->assertArrayHasKey('reference_id', $response);
}
/** @test */
public function it_can_list_transactions()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(
$this->mockListTransactionsResponse()
)
);
$filters = [
'start_date' => Carbon::now()->toIso8601String(),
'end_date' => Carbon::now()->subDays(30)->toIso8601String(),
];
$response = $this->client->listTransactions($filters);
$this->assertArrayHasKey('transaction_details', $response);
$this->assertGreaterThan(0, sizeof($response['transaction_details']));
}
/** @test */
public function it_can_list_account_balances()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(
$this->mockListBalancesResponse()
)
);
$date = Carbon::now()->subDays(30)->toIso8601String();
$response = $this->client->listBalances($date);
$this->assertNotEmpty($response);
}
/** @test */
public function it_can_list_account_balances_for_a_different_currency()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(
$this->mockListBalancesResponse()
)
);
$date = Carbon::now()->subDays(30)->toIso8601String();
$response = $this->client->listBalances($date, 'EUR');
$this->assertNotEmpty($response);
}
/** @test */
public function it_can_create_a_subscription()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(
$this->mockCreateSubscriptionResponse()
)
);
$expectedParams = $this->mockCreateSubscriptionParams();
$response = $this->client->createSubscription($expectedParams);
$this->assertNotEmpty($response);
$this->assertArrayHasKey('id', $response);
}
/** @test */
public function it_can_update_a_subscription()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(false)
);
$expectedParams = $this->mockUpdateSubscriptionParams();
$response = $this->client->updateSubscription('I-BW452GLLEP1G', $expectedParams);
$this->assertEmpty($response);
}
/** @test */
public function it_can_show_details_for_a_subscription()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(
$this->mockGetSubscriptionDetailsResponse()
)
);
$response = $this->client->showSubscriptionDetails('I-BW452GLLEP1G');
$this->assertNotEmpty($response);
$this->assertArrayHasKey('id', $response);
}
/** @test */
public function it_can_activate_a_subscription()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(false)
);
$response = $this->client->activateSubscription('I-BW452GLLEP1G', 'Reactivating the subscription');
$this->assertEmpty($response);
}
/** @test */
public function it_can_cancel_a_subscription()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(false)
);
$response = $this->client->cancelSubscription('I-BW452GLLEP1G', 'Not satisfied with the service');
$this->assertEmpty($response);
}
/** @test */
public function it_can_suspend_a_subscription()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(false)
);
$response = $this->client->suspendSubscription('I-BW452GLLEP1G', 'Item out of stock');
$this->assertEmpty($response);
}
/** @test */
public function it_can_capture_payment_for_a_subscription()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(false)
);
$response = $this->client->captureSubscriptionPayment('I-BW452GLLEP1G', 'Charging as the balance reached the limit', 100);
$this->assertEmpty($response);
}
/** @test */
public function it_can_update_quantity_or_product_for_a_subscription()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(
$this->mockUpdateSubscriptionItemsResponse()
)
);
$expectedParams = $this->mockUpdateSubscriptionItemsParams();
$response = $this->client->reviseSubscription('I-BW452GLLEP1G', $expectedParams);
$this->assertNotEmpty($response);
$this->assertArrayHasKey('plan_id', $response);
}
/** @test */
public function it_can_list_transactions_for_a_subscription()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(
$this->mockListSubscriptionTransactionsResponse()
)
);
$response = $this->client->listSubscriptionTransactions('I-BW452GLLEP1G', '2018-01-21T07:50:20.940Z', '2018-08-22T07:50:20.940Z');
$this->assertNotEmpty($response);
$this->assertEquals($response, $this->mockListSubscriptionTransactionsResponse());
}
/** @test */
public function it_can_list_tracking_details()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(
$this->mockGetTrackingDetailsResponse()
)
);
$response = $this->client->listTrackingDetails('8MC585209K746392H-443844607820');
$this->assertNotEmpty($response);
$this->assertEquals($response, $this->mockGetTrackingDetailsResponse());
$this->assertArrayHasKey('transaction_id', $response);
$this->assertArrayHasKey('tracking_number', $response);
}
/** @test */
public function it_can_get_tracking_details_for_tracking_id()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(
$this->mockGetTrackingDetailsResponse()
)
);
$response = $this->client->showTrackingDetails('8MC585209K746392H-443844607820');
$this->assertNotEmpty($response);
$this->assertEquals($response, $this->mockGetTrackingDetailsResponse());
$this->assertArrayHasKey('tracking_number', $response);
}
/** @test */
public function it_can_update_tracking_details_for_tracking_id()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(false)
);
$response = $this->client->updateTrackingDetails(
'8MC585209K746392H-443844607820',
$this->mockUpdateTrackingDetailsParams()
);
$this->assertEmpty($response);
}
/** @test */
public function it_can_create_tracking_in_batches()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(
$this->mockCreateTrackinginBatchesResponse()
)
);
$expectedParams = $this->mockCreateTrackinginBatchesParams();
$response = $this->client->addBatchTracking($expectedParams);
$this->assertNotEmpty($response);
$this->assertArrayHasKey('tracker_identifiers', $response);
}
/** @test */
public function it_can_create_single_tracking_for_single_transaction()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(
$this->mockCreateTrackinginBatchesResponse()
)
);
$expectedParams = $this->mockCreateTrackinginBatchesParams();
$response = $this->client->addTracking($expectedParams);
$this->assertNotEmpty($response);
$this->assertArrayHasKey('tracker_identifiers', $response);
}
/** @test */
public function it_can_list_web_hooks_event_types()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(
$this->mockListWebHookEventsTypesResponse()
)
);
$response = $this->client->listEventTypes();
$this->assertNotEmpty($response);
$this->assertArrayHasKey('event_types', $response);
}
/** @test */
public function it_can_list_web_hooks_events()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(
$this->mockWebHookEventsListResponse()
)
);
$response = $this->client->listEvents();
$this->assertNotEmpty($response);
$this->assertArrayHasKey('events', $response);
}
/** @test */
public function it_can_show_details_for_a_web_hooks_event()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(
$this->mockGetWebHookEventResponse()
)
);
$response = $this->client->showEventDetails('8PT597110X687430LKGECATA');
$this->assertNotEmpty($response);
$this->assertArrayHasKey('id', $response);
}
/** @test */
public function it_can_resend_notification_for_a_web_hooks_event()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(
$this->mockResendWebHookEventNotificationResponse()
)
);
$expectedParams = ['12334456'];
$response = $this->client->resendEventNotification('8PT597110X687430LKGECATA', $expectedParams);
$this->assertNotEmpty($response);
$this->assertArrayHasKey('id', $response);
}
/** @test */
public function it_can_create_a_web_hook()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(
$this->mockCreateWebHookResponse()
)
);
$response = $this->client->createWebHook(
'https://example.com/example_webhook',
['PAYMENT.AUTHORIZATION.CREATED', 'PAYMENT.AUTHORIZATION.VOIDED']
);
$this->assertNotEmpty($response);
$this->assertArrayHasKey('event_types', $response);
}
/** @test */
public function it_can_list_web_hooks()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(
$this->mockListWebHookResponse()
)
);
$response = $this->client->listWebHooks();
$this->assertNotEmpty($response);
$this->assertArrayHasKey('webhooks', $response);
}
/** @test */
public function it_can_delete_a_web_hook()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(false)
);
$response = $this->client->deleteWebHook('5GP028458E2496506');
$this->assertEmpty($response);
}
/** @test */
public function it_can_update_a_web_hook()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(
$this->mockUpdateWebHookResponse()
)
);
$expectedParams = $this->mockUpdateWebHookParams();
$response = $this->client->updateWebHook('0EH40505U7160970P', $expectedParams);
$this->assertNotEmpty($response);
$this->assertArrayHasKey('event_types', $response);
}
/** @test */
public function it_can_show_details_for_a_web_hook()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(
$this->mockGetWebHookResponse()
)
);
$response = $this->client->showWebHookDetails('0EH40505U7160970P');
$this->assertNotEmpty($response);
$this->assertArrayHasKey('event_types', $response);
}
/** @test */
public function it_can_list_events_for_web_hooks()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(
$this->mockListWebHookEventsResponse()
)
);
$response = $this->client->listWebHookEvents('0EH40505U7160970P');
$this->assertNotEmpty($response);
$this->assertArrayHasKey('event_types', $response);
}
/** @test */
public function it_can_verify_web_hook_signature()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(
$this->mockVerifyWebHookSignatureResponse()
)
);
$expectedParams = $this->mockVerifyWebHookSignatureParams();
$response = $this->client->verifyWebHook($expectedParams);
$this->assertNotEmpty($response);
$this->assertArrayHasKey('verification_status', $response);
}
/** @test */
public function it_can_list_payment_methods_source_tokens()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(
$this->mockListPaymentMethodsTokensResponse()
)
);
$response = $this->client->setCustomerSource('customer_4029352050')
->listPaymentSourceTokens();
$this->assertNotEmpty($response);
$this->assertArrayHasKey('payment_tokens', $response);
}
/** @test */
public function it_can_show_details_for_payment_method_source_token()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(
$this->mockCreatePaymentMethodsTokenResponse()
)
);
$response = $this->client->showPaymentSourceTokenDetails('8kk8451t');
$this->assertNotEmpty($response);
$this->assertArrayHasKey('id', $response);
$this->assertArrayHasKey('customer', $response);
$this->assertArrayHasKey('payment_source', $response);
}
/** @test */
public function it_can_delete_a_payment_method_source_token()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(false)
);
$response = $this->client->deletePaymentSourceToken('8kk8451t');
$this->assertEmpty($response);
}
/** @test */
public function it_can_show_details_for_payment_setup_token()
{
$this->client->setAccessToken([
'access_token' => self::$access_token,
'token_type' => 'Bearer',
]);
$this->client->setClient(
$this->mock_http_client(
$this->mockListPaymentSetupTokenResponse()
)
);
$response = $this->client->showPaymentSetupTokenDetails('5C991763VB2781612');
$this->assertNotEmpty($response);
$this->assertArrayHasKey('id', $response);
$this->assertArrayHasKey('customer', $response);
$this->assertArrayHasKey('payment_source', $response);
}
}