47 lines
1.7 KiB
PHP
47 lines
1.7 KiB
PHP
<?php
|
|
|
|
use App\Support\OperatingMode;
|
|
use App\Support\StripeWebhookSecret;
|
|
use Illuminate\Support\Facades\Schema;
|
|
|
|
/**
|
|
* Zwei Signaturschlüssel, weil Stripe je Modus einen eigenen vergibt.
|
|
*
|
|
* Der dritte Test ist der eigentliche Grund für diese Datei: die Auswahl liest
|
|
* den Modus aus der Datenbank — aus genau der Quelle, die für diesen Wert
|
|
* bewusst vermieden wurde. Fällt sie aus, muss die Auswahl auf LIVE fallen. Ein
|
|
* echtes Zahlungsereignis wird dann weiter korrekt geprüft; ein Testereignis
|
|
* scheitert laut. Die umgekehrte Vorgabe wäre die gefährliche.
|
|
*
|
|
* Ruft App\Support\StripeWebhookSecret::current() direkt auf statt über
|
|
* Reflection eine private Controller-Methode: die Auswahl sitzt in einer
|
|
* eigenen, öffentlich aufrufbaren Klasse (Begründung in deren Kopfkommentar),
|
|
* gerade damit dieser Test ohne ReflectionMethod auskommt.
|
|
*/
|
|
beforeEach(function () {
|
|
config()->set('services.stripe.webhook_secret', 'whsec_live');
|
|
config()->set('services.stripe.webhook_secret_test', 'whsec_test');
|
|
});
|
|
|
|
it('uses the live signing secret in live mode', function () {
|
|
OperatingMode::set(OperatingMode::Live);
|
|
|
|
expect(StripeWebhookSecret::current())->toBe('whsec_live');
|
|
});
|
|
|
|
it('uses the test signing secret in test mode', function () {
|
|
OperatingMode::set(OperatingMode::Test);
|
|
|
|
expect(StripeWebhookSecret::current())->toBe('whsec_test');
|
|
});
|
|
|
|
it('uses the live secret when the settings table cannot be read', function () {
|
|
OperatingMode::set(OperatingMode::Test);
|
|
|
|
// Der Ausfall, gegen den der Wert ursprünglich aus der Datenbank
|
|
// herausgehalten wurde.
|
|
Schema::drop('app_settings');
|
|
|
|
expect(StripeWebhookSecret::current())->toBe('whsec_live');
|
|
});
|