Ejegg has uploaded a new change for review. (
https://gerrit.wikimedia.org/r/391983 )
Change subject: Update donation-interface for PayPal EC debugging
......................................................................
Update donation-interface for PayPal EC debugging
Change-Id: If5a30f0f841eb348bbe3acd37994973cf66c686c
---
M composer/installed.json
M wikimedia/donation-interface/DonationInterface.class.php
M wikimedia/donation-interface/README.txt
M wikimedia/donation-interface/amazon_gateway/amazon.adapter.php
A wikimedia/donation-interface/astropay_gateway/i18n/cs.json
M wikimedia/donation-interface/gateway_common/gateway.adapter.php
M wikimedia/donation-interface/gateway_common/i18n/interface/be-tarask.json
M wikimedia/donation-interface/gateway_common/i18n/interface/de.json
M wikimedia/donation-interface/gateway_common/i18n/interface/el.json
M wikimedia/donation-interface/gateway_common/i18n/interface/es.json
M wikimedia/donation-interface/gateway_common/i18n/interface/et.json
M wikimedia/donation-interface/gateway_common/i18n/interface/fr.json
M wikimedia/donation-interface/gateway_common/i18n/interface/it.json
M wikimedia/donation-interface/gateway_common/i18n/interface/jv.json
M wikimedia/donation-interface/gateway_common/i18n/interface/lb.json
M wikimedia/donation-interface/gateway_common/i18n/interface/sl.json
M wikimedia/donation-interface/gateway_common/i18n/interface/zh-hans.json
M wikimedia/donation-interface/tests/phpunit/Adapter/Amazon/AmazonApiTest.php
M wikimedia/donation-interface/tests/phpunit/Adapter/Amazon/AmazonTest.php
M wikimedia/donation-interface/tests/phpunit/DonationInterfaceApiTestCase.php
M wikimedia/donation-interface/tests/phpunit/DonationInterfaceTestCase.php
M wikimedia/donation-interface/tests/phpunit/TestConfiguration.php
D wikimedia/donation-interface/tests/phpunit/includes/MockAmazonClient.php
D wikimedia/donation-interface/tests/phpunit/includes/MockAmazonResponse.php
D
wikimedia/donation-interface/tests/phpunit/includes/test_gateway/TestingAmazonAdapter.php
25 files changed, 102 insertions(+), 294 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/wikimedia/fundraising/crm/vendor
refs/changes/83/391983/1
diff --git a/composer/installed.json b/composer/installed.json
index d94b8df..196e534 100644
--- a/composer/installed.json
+++ b/composer/installed.json
@@ -2274,7 +2274,7 @@
"source": {
"type": "git",
"url":
"https://gerrit.wikimedia.org/r/mediawiki/extensions/DonationInterface.git",
- "reference": "81b12c1166d91c689b4b7a9dad0f845f97ccecc1"
+ "reference": "0b70d246f754b456d6f04180f9bb02f528910f0d"
},
"require": {
"addshore/psr-6-mediawiki-bagostuff-adapter": "0.1",
@@ -2294,7 +2294,7 @@
"mediawiki/mediawiki-codesniffer": "0.11.0",
"wikimedia/testing-access-wrapper": "~1.0"
},
- "time": "2017-10-17T15:40:59+00:00",
+ "time": "2017-11-16T16:31:29+00:00",
"type": "library",
"installation-source": "source",
"autoload": {
diff --git a/wikimedia/donation-interface/DonationInterface.class.php
b/wikimedia/donation-interface/DonationInterface.class.php
index 84d72a3..44821e1 100644
--- a/wikimedia/donation-interface/DonationInterface.class.php
+++ b/wikimedia/donation-interface/DonationInterface.class.php
@@ -70,10 +70,7 @@
$wgAutoloadClasses['DonationInterfaceTestCase'] = $testDir .
'DonationInterfaceTestCase.php';
$wgAutoloadClasses['DonationInterfaceApiTestCase'] = $testDir .
'DonationInterfaceApiTestCase.php';
$wgAutoloadClasses['BaseIngenicoTestCase'] = $testDir .
'BaseIngenicoTestCase.php';
- $wgAutoloadClasses['MockAmazonClient'] = $testDir .
'includes/MockAmazonClient.php';
- $wgAutoloadClasses['MockAmazonResponse'] = $testDir .
'includes/MockAmazonResponse.php';
$wgAutoloadClasses['TestingAdyenAdapter'] = $testDir .
'includes/test_gateway/TestingAdyenAdapter.php';
- $wgAutoloadClasses['TestingAmazonAdapter'] = $testDir .
'includes/test_gateway/TestingAmazonAdapter.php';
$wgAutoloadClasses['TestingAstroPayAdapter'] = $testDir .
'includes/test_gateway/TestingAstroPayAdapter.php';
$wgAutoloadClasses['TestingDonationLogger'] = $testDir .
'includes/TestingDonationLogger.php';
$wgAutoloadClasses['TestingGatewayPage'] = $testDir .
'includes/TestingGatewayPage.php';
diff --git a/wikimedia/donation-interface/README.txt
b/wikimedia/donation-interface/README.txt
index c9f16e1..1781e10 100644
--- a/wikimedia/donation-interface/README.txt
+++ b/wikimedia/donation-interface/README.txt
@@ -223,22 +223,22 @@
'' => 100, //No code returned. All the points.
)
-# $wgAmazonGatewayAccountInfo['example'] = array(
-# 'SellerID' => '', // 13 or so uppercase letters
-# 'ClientID' => '', // app or site-specific, starts with
amznX.application
-# 'ClientSecret' => '', // 64 hex characters
-# 'MWSAccessKey' => '', // 20 alphanumeric characters
-# 'MWSSecretKey' => '', // 40 base-64 encoded chars
-# 'Region' => '', // 'de', 'jp', 'uk', or 'us'
-# 'WidgetScriptURL' =>
'https://static-na.payments-amazon.com/OffAmazonPayments/us/sandbox/js/Widgets.js',
-# // static-eu serves widgets for uk and de, but jp uses this
awful URL:
-# //
https://origin-na.ssl-images-amazon.com/images/G/09/EP/offAmazonPayments/sandbox/prod/lpa/js/Widgets.js
-# // remove 'sandbox/' from above URLs for production use
-# 'ReturnURL' => ''
-# // Sorry, devs, ReturnURL HAS to be https.
-# // Also, it has to be whitelisted for your application at
sellercentral.amazon.com
-# // e.g.
https://payments.wikimedia.org/index.php/Special:AmazonGateway
-# )
+Amazon account info is mostly read from SmashPig configuration
+FIXME: stop duplicating SellerID and ClientID
+FIXME: actually use 'Region'
+$wgAmazonGatewayAccountInfo['example'] = array(
+ 'SellerID' => '', // 13 or so uppercase letters
+ 'ClientID' => '', // app or site-specific, starts with amznX.application
+ 'Region' => '', // 'de', 'jp', 'uk', or 'us'
+ 'WidgetScriptURL' =>
'https://static-na.payments-amazon.com/OffAmazonPayments/us/sandbox/js/Widgets.js',
+ // static-eu serves widgets for uk and de, but jp uses this awful URL:
+ //
https://origin-na.ssl-images-amazon.com/images/G/09/EP/offAmazonPayments/sandbox/prod/lpa/js/Widgets.js
+ // remove 'sandbox/' from above URLs for production use
+ 'ReturnURL' => ''
+ // Sorry, devs, ReturnURL HAS to be https.
+ // Also, it has to be whitelisted for your application at
sellercentral.amazon.com
+ // e.g. https://payments.wikimedia.org/index.php/Special:AmazonGateway
+)
// This URL appears to be global and usable for both sandbox and non-sandbox
$wgAmazonGatewayLoginScript = 'https://api-cdn.amazon.com/sdk/login1.js'
diff --git a/wikimedia/donation-interface/amazon_gateway/amazon.adapter.php
b/wikimedia/donation-interface/amazon_gateway/amazon.adapter.php
index d4001e4..30914d5 100644
--- a/wikimedia/donation-interface/amazon_gateway/amazon.adapter.php
+++ b/wikimedia/donation-interface/amazon_gateway/amazon.adapter.php
@@ -3,6 +3,7 @@
use PayWithAmazon\PaymentsClient as PwaClient;
use PayWithAmazon\PaymentsClientInterface as PwaClientInterface;
use Psr\Log\LogLevel;
+use SmashPig\Core\Context;
/**
* Wikimedia Foundation
@@ -145,14 +146,7 @@
* @return PwaClientInterface
*/
protected function getPwaClient() {
- return new PwaClient( array(
- 'merchant_id' => $this->account_config['SellerID'],
- 'access_key' => $this->account_config['MWSAccessKey'],
- 'secret_key' => $this->account_config['MWSSecretKey'],
- 'client_id' => $this->account_config['ClientID'],
- 'region' => $this->account_config['Region'],
- 'sandbox' => $this->getGlobal( 'Test' ),
- ) );
+ return Context::get()->getProviderConfiguration()->object(
'payments-client' );
}
/**
diff --git a/wikimedia/donation-interface/astropay_gateway/i18n/cs.json
b/wikimedia/donation-interface/astropay_gateway/i18n/cs.json
new file mode 100644
index 0000000..46046c2
--- /dev/null
+++ b/wikimedia/donation-interface/astropay_gateway/i18n/cs.json
@@ -0,0 +1,8 @@
+{
+ "@metadata": {
+ "authors": [
+ "Mormegil"
+ ]
+ },
+ "astropay_gateway-desc": "Zpracování plateb přes AstroPay"
+}
diff --git a/wikimedia/donation-interface/gateway_common/gateway.adapter.php
b/wikimedia/donation-interface/gateway_common/gateway.adapter.php
index a4c82ef..7d11b22 100644
--- a/wikimedia/donation-interface/gateway_common/gateway.adapter.php
+++ b/wikimedia/donation-interface/gateway_common/gateway.adapter.php
@@ -1296,6 +1296,7 @@
$curl_opts = $this->getCurlBaseOpts();
$curl_opts[CURLOPT_HTTPHEADER] = $headers;
$curl_opts[CURLOPT_POSTFIELDS] = $data;
+ $this->logger->debug( "Curl call for
{$this->getCurrentTransaction()}: headers " . print_r( $headers, true ) . "
data " . print_r( $data, true ) );
// Always capture the cURL output
$curlDebugLog = fopen( 'php://temp', 'r+' );
@@ -3757,9 +3758,10 @@
}
$this->logger->info( "Rectifying orphan:
{$this->getData_Staged( 'order_id' )}" );
$civiId = $this->getData_Unstaged_Escaped( 'contribution_id' );
+ $ctId = $this->getData_Unstaged_Escaped(
'contribution_tracking_id' );
if ( $civiId ) {
$this->logger->error(
- $normalized['contribution_tracking_id'] .
+ $ctId .
": Contribution tracking already has
contribution_id $civiId. " .
'Stop confusing donors!'
);
@@ -3768,11 +3770,11 @@
$params = $this->createDonorReturnParams();
$paymentResult = $this->processDonorReturn( $params );
if ( !$paymentResult->isFailed() ) {
- $this->logger->info( $this->getData_Staged(
'contribution_tracking_id' ) . ': FINAL: Rectified' );
+ $this->logger->info( $ctId . ': FINAL:
Rectified' );
return $paymentResult;
} else {
$this->errorState->addErrors(
$paymentResult->getErrors() );
- $this->logger->error( $this->getData_Staged(
'contribution_tracking_id' ) . ': ERRORS ' . print_r( $this->errorState, true )
);
+ $this->logger->error( $ctId . ': ERRORS ' .
print_r( $this->errorState, true ) );
}
}
return $paymentResult;
diff --git
a/wikimedia/donation-interface/gateway_common/i18n/interface/be-tarask.json
b/wikimedia/donation-interface/gateway_common/i18n/interface/be-tarask.json
index 88de33e..c87ce7e 100644
--- a/wikimedia/donation-interface/gateway_common/i18n/interface/be-tarask.json
+++ b/wikimedia/donation-interface/gateway_common/i18n/interface/be-tarask.json
@@ -330,7 +330,7 @@
"donate_interface-translate-redlink1": "Дапамажыце перакласьці гэтую
старонку.",
"donate_interface-translate-redlink2": "Ці дашліце Ваш пераклад па
адрасе [email protected]",
"donate_interface-email-fallbackname": "прыяцель Фундацыі «Вікімэдыі»",
- "donate_interface-email-subject": "Прыміце ўдзячнасьць ад Фундацыі
«Вікімэдыя»",
+ "donate_interface-email-subject": "Мы тут дзеля вас. Дзякуем за тое,
што вы з намі",
"donate_interface-email-unsub-title": "Адмаўленьне ад падпіскі на
паведамленьні Фундацыі «Вікімэдыя»",
"donate_interface-email-unsub-button": "Адпісацца",
"donate_interface-email-unsub-success": "Вы былі пасьпяховы выключаныя
з нашага сьпісу распаўсюджаньня",
diff --git a/wikimedia/donation-interface/gateway_common/i18n/interface/de.json
b/wikimedia/donation-interface/gateway_common/i18n/interface/de.json
index 4ae4e24..04936f7 100644
--- a/wikimedia/donation-interface/gateway_common/i18n/interface/de.json
+++ b/wikimedia/donation-interface/gateway_common/i18n/interface/de.json
@@ -12,7 +12,8 @@
"Tbleher",
"Umherirrender",
"Jrobell",
- "Pcoombe"
+ "Pcoombe",
+ "Danielbeerbonn"
]
},
"donate_interface": "Unterstützen Sie Wikimedia",
@@ -371,7 +372,7 @@
"donate_interface-translate-redlink1": "Bei der Übersetzung dieser
Seite mithelfen.",
"donate_interface-translate-redlink2": "Oder senden Sie Ihre
Übersetzung per E-Mail an [email protected]",
"donate_interface-email-fallbackname": "Freund der Wikimedia
Foundation",
- "donate_interface-email-subject": "Die Wikimedia Foundation sagt Danke",
+ "donate_interface-email-subject": "Wir sind für Sie da. Vielen Dank,
dass Sie für uns da sind",
"donate_interface-email-unsub-title": "Wikimedia Foundation
Abbestellung",
"donate_interface-email-unsub-button": "Abbestellen",
"donate_interface-email-unsub-success": "Sie wurden erfolgreich aus
unserer Mailinglist entfernt",
diff --git a/wikimedia/donation-interface/gateway_common/i18n/interface/el.json
b/wikimedia/donation-interface/gateway_common/i18n/interface/el.json
index 996fc6c..0fc3421 100644
--- a/wikimedia/donation-interface/gateway_common/i18n/interface/el.json
+++ b/wikimedia/donation-interface/gateway_common/i18n/interface/el.json
@@ -11,7 +11,8 @@
"ZaDiak",
"Pcoombe",
"Protnet",
- "Geraki"
+ "Geraki",
+ "KATRINE1992"
]
},
"donate_interface": "Υποστηρίξτε το Wikimedia",
@@ -326,7 +327,7 @@
"donate_interface-translate-redlink1": "Βοηθείστε να μεταφράσουμε αυτή
τη σελίδα",
"donate_interface-translate-redlink2": "Ή στείλτε με email την
μετάφρασή σας στο [email protected]",
"donate_interface-email-fallbackname": "φίλος του Ιδρύματος Wikimedia",
- "donate_interface-email-subject": "Ευχαριστούμε από το Ίδρυμα
Wikimedia",
+ "donate_interface-email-subject": "Ευχαριστούμε από το Ίδρυμα
Wikimedia. Ευχαριστούμε που είστε εδώ για μας",
"donate_interface-email-unsub-title": "Κατάργηση εγγραφής στο Wikimedia
Foundation",
"donate_interface-email-unsub-button": "Κατάργηση εγγραφής",
"donate_interface-email-unsub-success": "Έχετε με επιτυχία διαγραφεί
από τη λίστα αλληλογραφίας μας",
diff --git a/wikimedia/donation-interface/gateway_common/i18n/interface/es.json
b/wikimedia/donation-interface/gateway_common/i18n/interface/es.json
index fa7b999..736aa1a 100644
--- a/wikimedia/donation-interface/gateway_common/i18n/interface/es.json
+++ b/wikimedia/donation-interface/gateway_common/i18n/interface/es.json
@@ -35,7 +35,8 @@
"Ryo567",
"Ncontinanza",
"Indiralena",
- "2axterix2"
+ "2axterix2",
+ "KATRINE1992"
]
},
"donate_interface": "Apoya a Wikimedia",
@@ -227,7 +228,7 @@
"donate_interface-error-msg-branch_code": "Código de sucursal",
"donate_interface-error-msg-captcha": "El valor del captcha introducido
es incorrecto. Por favor, inténtalo de nuevo.",
"donate_interface-error-msg-captcha-please": "Para la seguridad de tu
tarjeta de crédito, escribe los caracteres que ves arriba.",
- "donate_interface-error-msg-cookies": "Habilita las cookies en tu
navegador.",
+ "donate_interface-error-msg-cookies": "Activa las «cookies» en tu
navegador.",
"donate_interface-error-msg-country-calc": "Error. No es posible
aceptar tu donación en este momento.",
"donate_interface-error-msg-fiscal_number": "Escribe tu número fiscal",
"donate_interface-error-msg-fiscal_number-ar": "Escribe tu DNI",
@@ -400,7 +401,7 @@
"donate_interface-translate-redlink1": "Ayudar a traducir esta página.",
"donate_interface-translate-redlink2": "O envía tu traducción a
[email protected]",
"donate_interface-email-fallbackname": "amigo de la Fundación
Wikimedia",
- "donate_interface-email-subject": "Gracias desde la Fundación
Wikimedia",
+ "donate_interface-email-subject": "Estamos para servir. Gracias por
acompañarnos",
"donate_interface-email-unsub-title": "Cancelar la subscripción a la
Fundación Wikimedia",
"donate_interface-email-unsub-button": "Cancelar la suscripción",
"donate_interface-email-unsub-success": "Has sido eliminado
correctamente de nuestra lista de correo",
diff --git a/wikimedia/donation-interface/gateway_common/i18n/interface/et.json
b/wikimedia/donation-interface/gateway_common/i18n/interface/et.json
index aae1a1d..b76ee31 100644
--- a/wikimedia/donation-interface/gateway_common/i18n/interface/et.json
+++ b/wikimedia/donation-interface/gateway_common/i18n/interface/et.json
@@ -323,7 +323,7 @@
"donate_interface-translate-redlink1": "Aita seda lehekülge tõlkida.",
"donate_interface-translate-redlink2": "Või saada oma tõlge e-postiga
aadressil [email protected]",
"donate_interface-email-fallbackname": "Wikimedia Foundationi sõber",
- "donate_interface-email-subject": "Wikimedia Foundation tänab sind
südamest",
+ "donate_interface-email-subject": "Oleme sinu jaoks olemas. Aitäh, et
oled meie jaoks olemas.",
"donate_interface-email-unsub-title": "Loobu Wikimedia Foundationi
teadetest",
"donate_interface-email-unsub-button": "Lõpeta tellimus",
"donate_interface-email-unsub-success": "Su katse meie postiloendist
lahkuda läks igati korda",
diff --git a/wikimedia/donation-interface/gateway_common/i18n/interface/fr.json
b/wikimedia/donation-interface/gateway_common/i18n/interface/fr.json
index dd4152b..1e8cdfb 100644
--- a/wikimedia/donation-interface/gateway_common/i18n/interface/fr.json
+++ b/wikimedia/donation-interface/gateway_common/i18n/interface/fr.json
@@ -395,7 +395,7 @@
"donate_interface-translate-redlink1": "Aidez à traduire cette page.",
"donate_interface-translate-redlink2": "Ou envoyez votre traduction à
[email protected]",
"donate_interface-email-fallbackname": "ami de la Fondation Wikimédia",
- "donate_interface-email-subject": "Merci à vous de la part de la
Wikimedia Foundation",
+ "donate_interface-email-subject": "Nous sommes ici pour vous. Merci
d’être là pour nous",
"donate_interface-email-unsub-title": "Se désabonner de la Fondation
Wikimédia",
"donate_interface-email-unsub-button": "Se désabonner",
"donate_interface-email-unsub-success": "Votre nom a bien été retiré de
notre liste de diffusion",
diff --git a/wikimedia/donation-interface/gateway_common/i18n/interface/it.json
b/wikimedia/donation-interface/gateway_common/i18n/interface/it.json
index ddb07f9..f2f80dd 100644
--- a/wikimedia/donation-interface/gateway_common/i18n/interface/it.json
+++ b/wikimedia/donation-interface/gateway_common/i18n/interface/it.json
@@ -377,7 +377,7 @@
"donate_interface-translate-redlink1": "Aiutaci a tradurre questa
pagina.",
"donate_interface-translate-redlink2": "O mandare per e-mail la tua
traduzione a [email protected]",
"donate_interface-email-fallbackname": "amico della Wikimedia
Foundation",
- "donate_interface-email-subject": "Grazie dalla Wikimedia Foundation",
+ "donate_interface-email-subject": "Siamo qui per te. Grazie per essere
qui per noi",
"donate_interface-email-unsub-title": "Cancellazione dalla Wikimedia
Foundation",
"donate_interface-email-unsub-button": "Annulla l'iscrizione",
"donate_interface-email-unsub-success": "Sei stato rimosso con successo
dalla nostra mailing list",
diff --git a/wikimedia/donation-interface/gateway_common/i18n/interface/jv.json
b/wikimedia/donation-interface/gateway_common/i18n/interface/jv.json
index 2637ca4..4381ad4 100644
--- a/wikimedia/donation-interface/gateway_common/i18n/interface/jv.json
+++ b/wikimedia/donation-interface/gateway_common/i18n/interface/jv.json
@@ -159,7 +159,7 @@
"donate_interface-error-msg-amount": "Isènana kèhing pisumbangé
panjenengan",
"donate_interface-error-msg-email": "Lebokaké alamat layang èlèktronik
Sampéyan",
"donate_interface-error-msg-first_name": "Lebokaké jeneng ngarep
Sampéyan",
- "donate_interface-error-msg-last_name": "Mangga isinen jeneng buriné
panjenengan",
+ "donate_interface-error-msg-last_name": "Mangga isi jeneng-buri
panjenengan",
"donate_interface-error-msg-street_address": "Mangga isinen alamat
dalané panjenengan",
"donate_interface-error-msg-city": "Lebokaké kutha Sampéyan",
"donate_interface-error-msg-state_province": "Lebokaké nagara bagéyan
Sampéyan",
@@ -170,7 +170,7 @@
"donate_interface-error-msg-card_num": "nomer kertu krèdit",
"donate_interface-error-msg-expiration": "Isènana tanggal kadaluwarsa
kertuné",
"donate_interface-error-msg-cvv": "CVV nèng mburiné kertu Sampéyan",
- "donate_interface-error-msg-captcha": "Captcha sing Sampéyan lebokaké
salah. Mangga jajal manèh.",
+ "donate_interface-error-msg-captcha": "Captcha sing penjenengan isi
salah. Mangga jajal manèh.",
"donate_interface-error-msg-captcha-please": "Kanggo kamanan kertu
krèdit Sampéyan, mangga tulisaké karakter sing katon nèng ndhuwur.",
"donate_interface-error-msg-cookies": "Urubaké cookie nèng pramban
Sampéyan.",
"donate_interface-donate-error-try-a-different-card": "Mangga [$1 jajal
kertu liya] utawa sawijining [$2 carané awak dhéwé kanggo ngawèhi] utawa
ngubungi awak dhéwé nèng $3",
diff --git a/wikimedia/donation-interface/gateway_common/i18n/interface/lb.json
b/wikimedia/donation-interface/gateway_common/i18n/interface/lb.json
index c3d7b42..dbc9404 100644
--- a/wikimedia/donation-interface/gateway_common/i18n/interface/lb.json
+++ b/wikimedia/donation-interface/gateway_common/i18n/interface/lb.json
@@ -356,7 +356,7 @@
"donate_interface-translate-redlink1": "Hëlleft dës Säit
z'iwwersetzen.",
"donate_interface-translate-redlink2": "Oder schéckt Är Iwwersetzung un
[email protected]",
"donate_interface-email-fallbackname": "Frënd vun der Wikimedia
Fondatioun",
- "donate_interface-email-subject": "D'Wikimedia Foundation seet Iech
merci",
+ "donate_interface-email-subject": "Mir si fir Iech do. Merci datt Dir
fir eis do sidd",
"donate_interface-email-unsub-title": "Sech ofmelle bei der Wikimedia
Fondatioun",
"donate_interface-email-unsub-button": "Ofbestellen",
"donate_interface-email-unsub-success": "Dir gouft vun eiser
Mailinglëscht erofgeholl",
diff --git a/wikimedia/donation-interface/gateway_common/i18n/interface/sl.json
b/wikimedia/donation-interface/gateway_common/i18n/interface/sl.json
index 9294ebe..b2d7499 100644
--- a/wikimedia/donation-interface/gateway_common/i18n/interface/sl.json
+++ b/wikimedia/donation-interface/gateway_common/i18n/interface/sl.json
@@ -8,7 +8,8 @@
"Jsoby",
"MZaplotnik",
"Yerpo",
- "Pcoombe"
+ "Pcoombe",
+ "Pinky sl"
]
},
"donate_interface": "Podprite Wikimedijo",
@@ -343,7 +344,7 @@
"donate_interface-translate-redlink1": "Pomagajte prevesti to stran.",
"donate_interface-translate-redlink2": "Svoj prevod nam lahko pošljete
tudi prek e-pošte na [email protected]",
"donate_interface-email-fallbackname": "prijatelj fundacije Wikimedia",
- "donate_interface-email-subject": "Fundacija Wikimedia se vam
zahvaljuje",
+ "donate_interface-email-subject": "Tukaj smo zaradi vas. Hvala vam, ker
ste tukaj za nas",
"donate_interface-email-unsub-title": "Odjava s fundacije Wikimedia",
"donate_interface-email-unsub-button": "Odjava",
"donate_interface-email-unsub-success": "Uspešno ste bili odstranjeni z
našega seznama za e-poštno obveščanje",
diff --git
a/wikimedia/donation-interface/gateway_common/i18n/interface/zh-hans.json
b/wikimedia/donation-interface/gateway_common/i18n/interface/zh-hans.json
index 22daca5..381eb9d 100644
--- a/wikimedia/donation-interface/gateway_common/i18n/interface/zh-hans.json
+++ b/wikimedia/donation-interface/gateway_common/i18n/interface/zh-hans.json
@@ -392,7 +392,7 @@
"donate_interface-translate-redlink1": "协助翻译此页。",
"donate_interface-translate-redlink2": "或将您的翻译稿寄送至
[email protected]",
"donate_interface-email-fallbackname": "维基媒体基金会的朋友",
- "donate_interface-email-subject": "来自维基媒体基金会的感谢信",
+ "donate_interface-email-subject": "我们在这里等您。感谢您在此帮助我们",
"donate_interface-email-unsub-title": "维基媒体基金会退订",
"donate_interface-email-unsub-button": "取消订阅",
"donate_interface-email-unsub-success": "您已经成功从我们的邮件列表中移除",
diff --git
a/wikimedia/donation-interface/tests/phpunit/Adapter/Amazon/AmazonApiTest.php
b/wikimedia/donation-interface/tests/phpunit/Adapter/Amazon/AmazonApiTest.php
index fafc6db..acff8af 100644
---
a/wikimedia/donation-interface/tests/phpunit/Adapter/Amazon/AmazonApiTest.php
+++
b/wikimedia/donation-interface/tests/phpunit/Adapter/Amazon/AmazonApiTest.php
@@ -11,14 +11,14 @@
* @group medium
*/
class AmazonApiTest extends DonationInterfaceApiTestCase {
+ /**
+ * @var \SmashPig\PaymentProviders\Amazon\Tests\AmazonTestConfiguration
+ */
+ protected $providerConfig;
+
public function setUp() {
parent::setUp();
- TestingAmazonAdapter::$mockClient = new MockAmazonClient();
- }
-
- public function tearDown() {
- TestingAmazonAdapter::$mockClient = null;
- parent::tearDown();
+ $this->providerConfig =
DonationInterface_Adapter_Amazon_Test::setUpAmazonTestingContext( $this );
}
public function testDoPaymentSuccess() {
@@ -43,7 +43,7 @@
$apiResult = $this->doApiRequest( $params, $session );
$redirect = $apiResult[0]['redirect'];
$this->assertEquals(
'https://wikimediafoundation.org/wiki/Thank_You/en?country=US', $redirect );
- $mockClient = TestingAmazonAdapter::$mockClient;
+ $mockClient = $this->providerConfig->object( 'payments-client'
);
$setOrderReferenceDetailsArgs =
$mockClient->calls['setOrderReferenceDetails'][0];
$oid = $session['Donor']['contribution_tracking_id'] . '-1';
$this->assertEquals( $oid,
$setOrderReferenceDetailsArgs['seller_order_id'], 'Did not set order id on
order reference' );
diff --git
a/wikimedia/donation-interface/tests/phpunit/Adapter/Amazon/AmazonTest.php
b/wikimedia/donation-interface/tests/phpunit/Adapter/Amazon/AmazonTest.php
index b688acc..a949780 100644
--- a/wikimedia/donation-interface/tests/phpunit/Adapter/Amazon/AmazonTest.php
+++ b/wikimedia/donation-interface/tests/phpunit/Adapter/Amazon/AmazonTest.php
@@ -27,24 +27,33 @@
*/
class DonationInterface_Adapter_Amazon_Test extends DonationInterfaceTestCase {
+ protected $testAdapterClass = 'AmazonAdapter';
/**
- * @param $name string The name of the test case
- * @param $data array Any parameters read from a dataProvider
- * @param $dataName string|int The name or index of the data set
+ * @var \SmashPig\PaymentProviders\Amazon\Tests\AmazonTestConfiguration
*/
- public function __construct( $name = null, array $data = array(),
$dataName = '' ) {
- parent::__construct( $name, $data, $dataName );
- $this->testAdapterClass = 'TestingAmazonAdapter';
+ protected $providerConfig;
+
+ public static function setUpAmazonTestingContext( $testCase ) {
+ $config = AmazonTestConfiguration::instance(
+ $testCase->smashPigGlobalConfig
+ );
+ $config->override( [
+ 'payments-client' => [
+ 'constructor-parameters' => [
+ 0 => [
+ 'response-directory' =>
+ __DIR__ .
'/../../includes/Responses/amazon'
+ ]
+ ]
+ ]
+ ] );
+ TestingContext::get()->providerConfigurationOverride = $config;
+ return $config;
}
public function setUp() {
parent::setUp();
- TestingContext::get()->providerConfigurationOverride =
- AmazonTestConfiguration::instance(
- $this->smashPigGlobalConfig
- );
-
- TestingAmazonAdapter::$mockClient = new MockAmazonClient();
+ $this->providerConfig = self::setUpAmazonTestingContext( $this
);
$this->setMwGlobals( array(
'wgAmazonGatewayEnabled' => true,
@@ -64,11 +73,6 @@
) );
}
- public function tearDown() {
- TestingAmazonAdapter::$fakeGlobals = array();
- parent::tearDown();
- }
-
/**
* Integration test to verify that the Amazon gateway converts Canadian
* dollars before redirecting
@@ -76,6 +80,7 @@
* FIXME: Merge with currency fallback tests?
*
* @dataProvider canadaLanguageProvider
+ * @param string $language language code to test
*/
function testCanadianDollarConversion( $language ) {
$init = $this->getDonorTestData( 'CA' );
@@ -87,11 +92,10 @@
$cadRate = $rates['CAD'];
$expectedAmount = floor( $init['amount'] / $cadRate );
-
- TestingAmazonAdapter::$fakeGlobals = array(
- 'FallbackCurrency' => 'USD',
- 'NotifyOnConvert' => true,
- );
+ $this->setMwGlobals( array(
+ 'wgAmazonGatewayFallbackCurrency' => 'USD',
+ 'wgAmazonGatewayNotifyOnConvert' => true,
+ ) );
$expectedNotification = wfMessage(
'donate_interface-fallback-currency-notice',
@@ -151,7 +155,7 @@
$this->assertEquals( 'Testy',
$gateway->getData_Unstaged_Escaped( 'first_name' ), 'Did not populate first
name from Amazon data' );
$this->assertEquals( 'Test',
$gateway->getData_Unstaged_Escaped( 'last_name' ), 'Did not populate last name
from Amazon data' );
$this->assertEquals( '[email protected]',
$gateway->getData_Unstaged_Escaped( 'email' ), 'Did not populate email from
Amazon data' );
- $mockClient = TestingAmazonAdapter::$mockClient;
+ $mockClient = $this->providerConfig->object( 'payments-client'
);
$setOrderReferenceDetailsArgs =
$mockClient->calls['setOrderReferenceDetails'][0];
$oid = $gateway->getData_Unstaged_Escaped( 'order_id' );
$this->assertEquals( $oid,
$setOrderReferenceDetailsArgs['seller_order_id'], 'Did not set order id on
order reference' );
@@ -175,7 +179,7 @@
unset( $init['first_name'] );
unset( $init['last_name'] );
- $mockClient = TestingAmazonAdapter::$mockClient;
+ $mockClient = $this->providerConfig->object( 'payments-client'
);
$mockClient->returns['authorize'][] = 'InvalidPaymentMethod';
$gateway = $this->getFreshGatewayObject( $init );
@@ -202,7 +206,7 @@
unset( $init['first_name'] );
unset( $init['last_name'] );
- $mockClient = TestingAmazonAdapter::$mockClient;
+ $mockClient = $this->providerConfig->object( 'payments-client'
);
$mockClient->returns['authorize'][] = 'AmazonRejected';
$gateway = $this->getFreshGatewayObject( $init );
@@ -227,7 +231,7 @@
unset( $init['first_name'] );
unset( $init['last_name'] );
- $mockClient = TestingAmazonAdapter::$mockClient;
+ $mockClient = $this->providerConfig->object( 'payments-client'
);
$mockClient->returns['authorize'][] = 'TransactionTimedOut';
$gateway = $this->getFreshGatewayObject( $init );
@@ -248,7 +252,7 @@
unset( $init['first_name'] );
unset( $init['last_name'] );
- $mockClient = TestingAmazonAdapter::$mockClient;
+ $mockClient = $this->providerConfig->object( 'payments-client'
);
$mockClient->exceptions['authorize'][] = new Exception( 'Test'
);
$gateway = $this->getFreshGatewayObject( $init );
@@ -283,7 +287,7 @@
$this->assertEquals( 'Testy',
$gateway->getData_Unstaged_Escaped( 'first_name' ), 'Did not populate first
name from Amazon data' );
$this->assertEquals( 'Test',
$gateway->getData_Unstaged_Escaped( 'last_name' ), 'Did not populate last name
from Amazon data' );
$this->assertEquals( '[email protected]',
$gateway->getData_Unstaged_Escaped( 'email' ), 'Did not populate email from
Amazon data' );
- $mockClient = TestingAmazonAdapter::$mockClient;
+ $mockClient = $this->providerConfig->object( 'payments-client'
);
$setBillingAgreementDetailsArgs =
$mockClient->calls['setBillingAgreementDetails'][0];
$oid = $gateway->getData_Unstaged_Escaped( 'order_id' );
$this->assertEquals( $oid,
$setBillingAgreementDetailsArgs['seller_billing_agreement_id'], 'Did not set
order id on billing agreement' );
diff --git
a/wikimedia/donation-interface/tests/phpunit/DonationInterfaceApiTestCase.php
b/wikimedia/donation-interface/tests/phpunit/DonationInterfaceApiTestCase.php
index a5509bf..5f4d233 100644
---
a/wikimedia/donation-interface/tests/phpunit/DonationInterfaceApiTestCase.php
+++
b/wikimedia/donation-interface/tests/phpunit/DonationInterfaceApiTestCase.php
@@ -5,11 +5,12 @@
use SmashPig\Tests\TestingGlobalConfiguration;
class DonationInterfaceApiTestCase extends ApiTestCase {
+ public $smashPigGlobalConfig;
public function setUp() {
parent::setUp();
- $config = TestingGlobalConfiguration::create();
- TestingContext::init( $config );
+ $this->smashPigGlobalConfig =
TestingGlobalConfiguration::create();
+ TestingContext::init( $this->smashPigGlobalConfig );
$ctx = TestingContext::get();
$ctx->setSourceType( 'payments' );
$ctx->setSourceName( 'DonationInterface' );
diff --git
a/wikimedia/donation-interface/tests/phpunit/DonationInterfaceTestCase.php
b/wikimedia/donation-interface/tests/phpunit/DonationInterfaceTestCase.php
index 5ab3999..2ec16f8 100644
--- a/wikimedia/donation-interface/tests/phpunit/DonationInterfaceTestCase.php
+++ b/wikimedia/donation-interface/tests/phpunit/DonationInterfaceTestCase.php
@@ -51,7 +51,7 @@
protected $gatewayAdapter;
protected $testAdapterClass = TESTS_ADAPTER_DEFAULT;
- protected $smashPigGlobalConfig;
+ public $smashPigGlobalConfig;
/**
* @param $name string The name of the test case
@@ -69,7 +69,6 @@
public static function resetTestingAdapters() {
$testing_adapters = array(
'TestingAdyenAdapter',
- 'TestingAmazonAdapter',
'TestingAstroPayAdapter',
'TestingGenericAdapter',
'TestingGlobalCollectAdapter',
diff --git a/wikimedia/donation-interface/tests/phpunit/TestConfiguration.php
b/wikimedia/donation-interface/tests/phpunit/TestConfiguration.php
index 0323198..5ffb477 100644
--- a/wikimedia/donation-interface/tests/phpunit/TestConfiguration.php
+++ b/wikimedia/donation-interface/tests/phpunit/TestConfiguration.php
@@ -66,6 +66,8 @@
$wgPaypalExpressGatewayAccountInfo,
$wgAmazonGatewayReturnURL,
$wgAmazonGatewayAccountInfo,
+ $wgAmazonGatewayFallbackCurrency,
+ $wgAmazonGatewayNotifyOnConvert,
$wgAdyenGatewayURL,
$wgAdyenGatewayAccountInfo,
$wgAstroPayGatewayURL,
@@ -97,7 +99,7 @@
$wgDonationInterfaceGatewayAdapters = array(
'globalcollect' => 'TestingGlobalCollectAdapter',
'ingenico' => 'IngenicoAdapter',
- 'amazon' => 'TestingAmazonAdapter',
+ 'amazon' => 'AmazonAdapter',
'adyen' => 'TestingAdyenAdapter',
'astropay' => 'TestingAstroPayAdapter',
'paypal_ec' => 'TestingPaypalExpressAdapter',
@@ -142,14 +144,12 @@
$wgAmazonGatewayAccountInfo['test'] = array(
'SellerID' => 'ABCDEFGHIJKL',
'ClientID' => 'amzn1.application-oa2-client.1a2b3c4d5e',
- 'ClientSecret' => '12432g134e3421a41234b1341c324123d',
- 'MWSAccessKey' => 'N0NSENSEXYZ',
- 'MWSSecretKey' => 'iuasd/2jhaslk2j49lkaALksdJLsJLas+',
- 'Region' => 'us',
'WidgetScriptURL' =>
'https://static-na.payments-amazon.com/OffAmazonPayments/us/sandbox/js/Widgets.js',
'ReturnURL' =>
"https://example.org/index.php/Special:AmazonGateway?debug=true",
);
+$wgAmazonGatewayFallbackCurrency = false;
+$wgAmazonGatewayNotifyOnConvert = false;
/** Adyen **/
$wgAdyenGatewayURL = 'https://testorwhatever.adyen.com';
diff --git
a/wikimedia/donation-interface/tests/phpunit/includes/MockAmazonClient.php
b/wikimedia/donation-interface/tests/phpunit/includes/MockAmazonClient.php
deleted file mode 100644
index a6bc078..0000000
--- a/wikimedia/donation-interface/tests/phpunit/includes/MockAmazonClient.php
+++ /dev/null
@@ -1,145 +0,0 @@
-<?php
-
-/**
- * FIXME: Jenkins mwext-testextension-hhvm still not installing
DonationInterface composer deps
- * use PayWithAmazon\PaymentsClientInterface;
- */
-
-/**
- * Stubs out the functionality of the Client class from the Login and Pay with
- * Amazon SDK. TODO: replace with PHPUnit method return mocks when Jenkins
- * is running new enough PHPUnit. Only mocking the stuff we use.
- */
-class MockAmazonClient { // FIXME: implements PaymentsClientInterface {
-
- // Each key is a method name whose value is an array of times it's been
- // called, recording all argument values.
- public $calls = array();
-
- // Keys are method names, values are arrays of error codes such as
InvalidPaymentMethod
- // When a code is not found, the operation will return a successful
result
- public $returns = array();
-
- // Similar to $returns, but any entries here are thrown as exceptions
- public $exceptions = array();
-
- public function __construct( $config = null ) {
- }
-
- public function __get( $name ) {
- }
-
- protected function fakeCall( $functionName, $arguments ) {
- $this->calls[$functionName][] = $arguments;
- $status = null;
- $returnIndex = count( $this->calls[$functionName] ) - 1;
- if ( isset( $this->returns[$functionName] ) && isset(
$this->returns[$functionName][$returnIndex] ) ) {
- $status = $this->returns[$functionName][$returnIndex];
- }
- if ( isset( $this->exceptions[$functionName] ) && isset(
$this->exceptions[$functionName][$returnIndex] ) ) {
- throw $this->exceptions[$functionName][$returnIndex];
- }
- return new MockAmazonResponse( $functionName, $status );
- }
-
- public function authorize( $requestParameters = array() ) {
- return $this->fakeCall( 'authorize', $requestParameters );
- }
-
- public function authorizeOnBillingAgreement( $requestParameters =
array() ) {
- return $this->fakeCall( 'authorizeOnBillingAgreement',
$requestParameters );
- }
-
- public function cancelOrderReference( $requestParameters = array() ) {
- }
-
- public function capture( $requestParameters = array() ) {
- }
-
- public function charge( $requestParameters = array() ) {
- }
-
- public function closeAuthorization( $requestParameters = array() ) {
- }
-
- public function closeBillingAgreement( $requestParameters = array() ) {
- }
-
- public function closeOrderReference( $requestParameters = array() ) {
- return $this->fakeCall( 'closeOrderReference',
$requestParameters );
- }
-
- public function confirmBillingAgreement( $requestParameters = array() )
{
- return $this->fakeCall( 'confirmBillingAgreement',
$requestParameters );
- }
-
- public function confirmOrderReference( $requestParameters = array() ) {
- return $this->fakeCall( 'confirmOrderReference',
$requestParameters );
- }
-
- public function createOrderReferenceForId( $requestParameters = array()
) {
- }
-
- public function getAuthorizationDetails( $requestParameters = array() )
{
- }
-
- public function getBillingAgreementDetails( $requestParameters =
array() ) {
- return $this->fakeCall( 'getBillingAgreementDetails',
$requestParameters );
- }
-
- public function getCaptureDetails( $requestParameters = array() ) {
- return $this->fakeCall( 'getCaptureDetails', $requestParameters
);
- }
-
- public function getOrderReferenceDetails( $requestParameters = array()
) {
- return $this->fakeCall( 'getOrderReferenceDetails',
$requestParameters );
- }
-
- public function getParameters() {
- }
-
- public function getProviderCreditDetails( $requestParameters = array()
) {
- }
-
- public function getProviderCreditReversalDetails( $requestParameters =
array() ) {
- }
-
- public function getRefundDetails( $requestParameters = array() ) {
- }
-
- public function getServiceStatus( $requestParameters = array() ) {
- }
-
- public function getUserInfo( $access_token ) {
- }
-
- public function refund( $requestParameters = array() ) {
- }
-
- public function reverseProviderCredit( $requestParameters = array() ) {
- }
-
- public function setBillingAgreementDetails( $requestParameters =
array() ) {
- return $this->fakeCall( 'setBillingAgreementDetails',
$requestParameters );
- }
-
- public function setClientId( $value ) {
- }
-
- public function setMwsServiceUrl( $url ) {
- }
-
- public function setOrderReferenceDetails( $requestParameters = array()
) {
- return $this->fakeCall( 'setOrderReferenceDetails',
$requestParameters );
- }
-
- public function setProxy( $proxy ) {
- }
-
- public function setSandbox( $value ) {
- }
-
- public function validateBillingAgreement( $requestParameters = array()
) {
- }
-
-}
diff --git
a/wikimedia/donation-interface/tests/phpunit/includes/MockAmazonResponse.php
b/wikimedia/donation-interface/tests/phpunit/includes/MockAmazonResponse.php
deleted file mode 100644
index bce94d4..0000000
--- a/wikimedia/donation-interface/tests/phpunit/includes/MockAmazonResponse.php
+++ /dev/null
@@ -1,42 +0,0 @@
-<?php
-
-/**
- * FIXME: Jenkins still not installing DonationInterface composer deps
- * use PayWithAmazon\ResponseInterface as PwaResponseInterface;
- */
-
-/**
- * Stubs out the functionality of the ResponseParser from the Login and Pay
with
- * Amazon SDK. TODO: replace with PHPUnit method return mocks when Jenkins
- * is running new enough PHPUnit. We only use toArray.
- */
-class MockAmazonResponse { // FIXME: implements PwaResponseInterface {
-
- protected $response;
-
- /**
- * Creates the fake response from JSON in
tests/includes/Responses/amazon
- * @param string $operation The PwaClient function call we're faking
- * @param string $status Set to fake responses with an error status
- * Reads from $operation_$status.json
- */
- public function __construct( $operation, $status = null ) {
- $statusPart = $status ? '_' . $status : '';
- $filePath = __DIR__ .
"/Responses/amazon/{$operation}{$statusPart}.json";
- $json = file_get_contents( $filePath );
- $this->response = json_decode( $json, true );
- }
-
- public function getBillingAgreementDetailsStatus( $response ) {
- }
-
- public function toArray() {
- return $this->response;
- }
-
- public function toJson() {
- }
-
- public function toXml() {
- }
-}
diff --git
a/wikimedia/donation-interface/tests/phpunit/includes/test_gateway/TestingAmazonAdapter.php
b/wikimedia/donation-interface/tests/phpunit/includes/test_gateway/TestingAmazonAdapter.php
deleted file mode 100644
index 2671872..0000000
---
a/wikimedia/donation-interface/tests/phpunit/includes/test_gateway/TestingAmazonAdapter.php
+++ /dev/null
@@ -1,14 +0,0 @@
-<?php
-
-/**
- * TestingAmazonAdapter
- */
-class TestingAmazonAdapter extends AmazonAdapter {
- use TTestingAdapter;
-
- public static $mockClient;
-
- protected function getPwaClient() {
- return self::$mockClient;
- }
-}
--
To view, visit https://gerrit.wikimedia.org/r/391983
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: If5a30f0f841eb348bbe3acd37994973cf66c686c
Gerrit-PatchSet: 1
Gerrit-Project: wikimedia/fundraising/crm/vendor
Gerrit-Branch: master
Gerrit-Owner: Ejegg <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits