PageRenderTime 43ms CodeModel.GetById 16ms RepoModel.GetById 0ms app.codeStats 0ms

/tests/integration/TransparentRedirectTest.php

https://github.com/MomentumApp/braintree_php
PHP | 261 lines | 231 code | 30 blank | 0 comment | 1 complexity | eb4bdcbca62b303dd43346b2b6d891c1 MD5 | raw file
  1. <?php
  2. require_once realpath(dirname(__FILE__)) . '/../TestHelper.php';
  3. class Braintree_TransparentRedirectTest extends PHPUnit_Framework_TestCase
  4. {
  5. function testRedirectUrl()
  6. {
  7. Braintree_TestHelper::suppressDeprecationWarnings();
  8. $trData = Braintree_TransparentRedirect::createCustomerData(
  9. array("redirectUrl" => "http://www.example.com?foo=bar")
  10. );
  11. $queryString = Braintree_TestHelper::submitTrRequest(
  12. Braintree_Configuration::merchantUrl() . '/test/maintenance',
  13. array(),
  14. $trData
  15. );
  16. $this->setExpectedException('Braintree_Exception_DownForMaintenance');
  17. Braintree_Customer::createFromTransparentRedirect($queryString);
  18. }
  19. function testParseAndValidateQueryString_throwsDownForMaintenanceErrorIfDownForMaintenance()
  20. {
  21. Braintree_TestHelper::suppressDeprecationWarnings();
  22. $trData = Braintree_TransparentRedirect::createCustomerData(
  23. array("redirectUrl" => "http://www.example.com")
  24. );
  25. $queryString = Braintree_TestHelper::submitTrRequest(
  26. Braintree_Configuration::merchantUrl() . '/test/maintenance',
  27. array(),
  28. $trData
  29. );
  30. $this->setExpectedException('Braintree_Exception_DownForMaintenance');
  31. Braintree_Customer::createFromTransparentRedirect($queryString);
  32. }
  33. function testParseAndValidateQueryString_throwsAuthenticationErrorIfBadCredentials()
  34. {
  35. Braintree_TestHelper::suppressDeprecationWarnings();
  36. $privateKey = Braintree_Configuration::privateKey();
  37. Braintree_Configuration::privateKey('incorrect');
  38. try {
  39. $trData = Braintree_TransparentRedirect::createCustomerData(
  40. array("redirectUrl" => "http://www.example.com")
  41. );
  42. $queryString = Braintree_TestHelper::submitTrRequest(
  43. Braintree_Customer::createCustomerUrl(),
  44. array(),
  45. $trData
  46. );
  47. $this->setExpectedException('Braintree_Exception_Authentication');
  48. Braintree_Customer::createFromTransparentRedirect($queryString);
  49. } catch(Exception $e) {
  50. }
  51. $privateKey = Braintree_Configuration::privateKey($privateKey);
  52. if (isset($e)) throw $e;
  53. }
  54. function testCreateTransactionFromTransparentRedirect()
  55. {
  56. $params = array(
  57. 'transaction' => array(
  58. 'customer' => array(
  59. 'first_name' => 'First'
  60. ),
  61. 'credit_card' => array(
  62. 'number' => '5105105105105100',
  63. 'expiration_date' => '05/12'
  64. )
  65. )
  66. );
  67. $trParams = array(
  68. 'transaction' => array(
  69. 'type' => Braintree_Transaction::SALE,
  70. 'amount' => '100.00'
  71. )
  72. );
  73. $trData = Braintree_TransparentRedirect::transactionData(
  74. array_merge($trParams, array("redirectUrl" => "http://www.example.com"))
  75. );
  76. $queryString = Braintree_TestHelper::submitTrRequest(
  77. Braintree_TransparentRedirect::url(),
  78. $params,
  79. $trData
  80. );
  81. $result = Braintree_TransparentRedirect::confirm($queryString);
  82. $this->assertTrue($result->success);
  83. $this->assertEquals('100.00', $result->transaction->amount);
  84. $this->assertEquals(Braintree_Transaction::SALE, $result->transaction->type);
  85. $this->assertEquals(Braintree_Transaction::AUTHORIZED, $result->transaction->status);
  86. $creditCard = $result->transaction->creditCardDetails;
  87. $this->assertEquals('510510', $creditCard->bin);
  88. $this->assertEquals('5100', $creditCard->last4);
  89. $this->assertEquals('US', $creditCard->customerLocation);
  90. $this->assertEquals('MasterCard', $creditCard->cardType);
  91. $this->assertEquals('05/2012', $creditCard->expirationDate);
  92. $this->assertEquals('510510******5100', $creditCard->maskedNumber);
  93. $customer = $result->transaction->customerDetails;
  94. $this->assertequals('First', $customer->firstName);
  95. }
  96. function testCreateCustomerFromTransparentRedirect()
  97. {
  98. $params = array(
  99. 'customer' => array(
  100. 'first_name' => 'Second'
  101. )
  102. );
  103. $trParams = array(
  104. 'customer' => array(
  105. 'lastName' => 'Penultimate'
  106. )
  107. );
  108. $trData = Braintree_TransparentRedirect::createCustomerData(
  109. array_merge($trParams, array("redirectUrl" => "http://www.example.com"))
  110. );
  111. $queryString = Braintree_TestHelper::submitTrRequest(
  112. Braintree_TransparentRedirect::url(),
  113. $params,
  114. $trData
  115. );
  116. $result = Braintree_TransparentRedirect::confirm($queryString);
  117. $this->assertTrue($result->success);
  118. $customer = $result->customer;
  119. $this->assertequals('Second', $customer->firstName);
  120. $this->assertequals('Penultimate', $customer->lastName);
  121. }
  122. function testUpdateCustomerFromTransparentRedirect()
  123. {
  124. $customer = Braintree_Customer::create(array(
  125. 'firstName' => 'Mike',
  126. 'lastName' => 'Jonez'
  127. ))->customer;
  128. $params = array(
  129. 'customer' => array(
  130. 'first_name' => 'Second'
  131. )
  132. );
  133. $trParams = array(
  134. 'customerId' => $customer->id,
  135. 'customer' => array(
  136. 'lastName' => 'Penultimate'
  137. )
  138. );
  139. $trData = Braintree_TransparentRedirect::updateCustomerData(
  140. array_merge($trParams, array("redirectUrl" => "http://www.example.com"))
  141. );
  142. $queryString = Braintree_TestHelper::submitTrRequest(
  143. Braintree_TransparentRedirect::url(),
  144. $params,
  145. $trData
  146. );
  147. $result = Braintree_TransparentRedirect::confirm($queryString);
  148. $this->assertTrue($result->success);
  149. $customer = $result->customer;
  150. $this->assertequals('Second', $customer->firstName);
  151. $this->assertequals('Penultimate', $customer->lastName);
  152. }
  153. function testCreateCreditCardFromTransparentRedirect()
  154. {
  155. $customer = Braintree_Customer::create(array(
  156. 'firstName' => 'Mike',
  157. 'lastName' => 'Jonez'
  158. ))->customer;
  159. $params = array(
  160. 'credit_card' => array(
  161. 'number' => Braintree_Test_CreditCardNumbers::$visa
  162. )
  163. );
  164. $trParams = array(
  165. 'creditCard' => array(
  166. 'customerId' => $customer->id,
  167. 'expirationMonth' => '01',
  168. 'expirationYear' => '10'
  169. )
  170. );
  171. $trData = Braintree_TransparentRedirect::createCreditCardData(
  172. array_merge($trParams, array("redirectUrl" => "http://www.example.com"))
  173. );
  174. $queryString = Braintree_TestHelper::submitTrRequest(
  175. Braintree_TransparentRedirect::url(),
  176. $params,
  177. $trData
  178. );
  179. $result = Braintree_TransparentRedirect::confirm($queryString);
  180. $this->assertTrue($result->success);
  181. $creditCard = $result->creditCard;
  182. $this->assertequals('401288', $creditCard->bin);
  183. $this->assertequals('1881', $creditCard->last4);
  184. $this->assertequals('01/2010', $creditCard->expirationDate);
  185. }
  186. function testUpdateCreditCardFromTransparentRedirect()
  187. {
  188. $customer = Braintree_Customer::create(array(
  189. 'firstName' => 'Mike',
  190. 'lastName' => 'Jonez'
  191. ))->customer;
  192. $creditCard = Braintree_CreditCard::create(array(
  193. 'customerId' => $customer->id,
  194. 'number' => Braintree_Test_CreditCardNumbers::$masterCard,
  195. 'expirationMonth' => '10',
  196. 'expirationYear' => '10'
  197. ))->creditCard;
  198. $params = array(
  199. 'credit_card' => array(
  200. 'number' => Braintree_Test_CreditCardNumbers::$visa
  201. )
  202. );
  203. $trParams = array(
  204. 'paymentMethodToken' => $creditCard->token,
  205. 'creditCard' => array(
  206. 'expirationMonth' => '11',
  207. 'expirationYear' => '11'
  208. )
  209. );
  210. $trData = Braintree_TransparentRedirect::updateCreditCardData(
  211. array_merge($trParams, array("redirectUrl" => "http://www.example.com"))
  212. );
  213. $queryString = Braintree_TestHelper::submitTrRequest(
  214. Braintree_TransparentRedirect::url(),
  215. $params,
  216. $trData
  217. );
  218. Braintree_TransparentRedirect::confirm($queryString);
  219. $creditCard = Braintree_CreditCard::find($creditCard->token);
  220. $this->assertequals('401288', $creditCard->bin);
  221. $this->assertequals('1881', $creditCard->last4);
  222. $this->assertequals('11/2011', $creditCard->expirationDate);
  223. }
  224. function testUrl()
  225. {
  226. $url = Braintree_TransparentRedirect::url();
  227. $developmentPort = getenv("GATEWAY_PORT") ? getenv("GATEWAY_PORT") : 3000;
  228. $this->assertEquals("http://localhost:" . $developmentPort . "/merchants/integration_merchant_id/transparent_redirect_requests", $url);
  229. }
  230. }
  231. ?>