1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-11-26 16:52:41 +01:00

Allow PhortuneTestProvider to add payment methods

Summary: Provide a bare implementation so that you can add PhortuneTestProvider as a payment method. Ref 2787.

Test Plan: Added "cards" through the test provider.

Reviewers: btrahan, chad

Reviewed By: btrahan

CC: aran

Maniphest Tasks: T2787

Differential Revision: https://secure.phabricator.com/D5772
This commit is contained in:
epriestley 2013-04-25 09:50:08 -07:00
parent 7a5f622820
commit f30f0b30f8
5 changed files with 109 additions and 1 deletions

View file

@ -2280,6 +2280,18 @@ celerity_register_resource_map(array(
),
'disk' => '/rsrc/js/application/phortune/behavior-stripe-payment-form.js',
),
'javelin-behavior-test-payment-form' =>
array(
'uri' => '/res/a8fe8616/rsrc/js/application/phortune/behavior-test-payment-form.js',
'type' => 'js',
'requires' =>
array(
0 => 'javelin-behavior',
1 => 'javelin-dom',
2 => 'phortune-credit-card-form',
),
'disk' => '/rsrc/js/application/phortune/behavior-test-payment-form.js',
),
'javelin-behavior-toggle-class' =>
array(
'uri' => '/res/79921b7f/rsrc/js/core/behavior-toggle-class.js',

View file

@ -25,6 +25,21 @@ final class PhabricatorPhortuneConfigOptions
$this->newOption('phortune.balanced.secret-key', 'string', null)
->setHidden(true)
->setDescription(pht('Balanced secret key.')),
$this->newOption('phortune.test.enabled', 'bool', false)
->setBoolOptions(
array(
pht('Enable Test Provider'),
pht('Disable Test Provider'),
))
->setSummary(pht('Enable test payment provider.'))
->setDescription(
pht(
"Enable the test payment provider.\n\n".
"NOTE: Enabling this provider gives all users infinite free ".
"money! You should enable it **ONLY** for testing and ".
"development."))
->setLocked(true)
);
}

View file

@ -3,7 +3,7 @@
final class PhortuneTestPaymentProvider extends PhortunePaymentProvider {
public function isEnabled() {
return true;
return PhabricatorEnv::getEnvConfig('phortune.test.enabled');
}
public function getProviderType() {
@ -37,4 +37,60 @@ final class PhortuneTestPaymentProvider extends PhortunePaymentProvider {
return;
}
/* -( Adding Payment Methods )--------------------------------------------- */
public function canCreatePaymentMethods() {
return true;
}
public function translateCreatePaymentMethodErrorCode($error_code) {
return $error_code;
}
public function getCreatePaymentMethodErrorMessage($error_code) {
return null;
}
public function validateCreatePaymentMethodToken(array $token) {
return true;
}
public function createPaymentMethodFromRequest(
AphrontRequest $request,
PhortunePaymentMethod $method,
array $token) {
$method
->setExpires('2050', '01')
->setBrand('FreeMoney')
->setLastFourDigits('9999');
}
/**
* @task addmethod
*/
public function renderCreatePaymentMethodForm(
AphrontRequest $request,
array $errors) {
$ccform = id(new PhortuneCreditCardForm())
->setUser($request->getUser())
->setErrors($errors);
Javelin::initBehavior(
'test-payment-form',
array(
'formID' => $ccform->getFormID(),
));
return $ccform->buildForm();
}
}

View file

@ -9,6 +9,9 @@ final class PhortunePaymentProviderTestCase extends PhabricatorTestCase {
}
public function testNoPaymentProvider() {
$env = PhabricatorEnv::beginScopedEnv();
$env->overrideEnvConfig('phortune.test.enabled', true);
$method = id(new PhortunePaymentMethod())
->setMetadataValue('type', 'hugs');
@ -26,6 +29,9 @@ final class PhortunePaymentProviderTestCase extends PhabricatorTestCase {
}
public function testMultiplePaymentProviders() {
$env = PhabricatorEnv::beginScopedEnv();
$env->overrideEnvConfig('phortune.test.enabled', true);
$method = id(new PhortunePaymentMethod())
->setMetadataValue('type', 'test.multiple');

View file

@ -0,0 +1,19 @@
/**
* @provides javelin-behavior-test-payment-form
* @requires javelin-behavior
* javelin-dom
* phortune-credit-card-form
*/
JX.behavior('test-payment-form', function(config) {
var ccform = new JX.PhortuneCreditCardForm(JX.$(config.formID), onsubmit);
function onsubmit(card_data) {
onresponse();
}
function onresponse() {
ccform.submitForm([], {test: true});
}
});