mirror of
https://github.com/aljazceru/btcpayserver.git
synced 2025-12-19 06:54:19 +01:00
Payment Request: Fix invoice creation
Fix and test for a regression introduced with #4243: As the `PayPaymentRequest` action allows anonymous access, the `CookieAuthorizationHandler` isn;t run and hence the `GetCurrentStore` returns `null`.
This leads to an exception when creating the invoice. Store needs to be fetched seperately - like [before](4bbc7d9662 (diff-bdc264670a171e862d09fdf1a1c9f3ca14b41982a3c4c8e66d4f780cdde9f21dL241)).
This commit is contained in:
committed by
Andrew Camilleri
parent
a374e351e2
commit
b7af234427
@@ -871,8 +871,7 @@ namespace BTCPayServer.Tests
|
|||||||
var viewUrl = s.Driver.Url;
|
var viewUrl = s.Driver.Url;
|
||||||
|
|
||||||
Assert.Equal("Amount due", s.Driver.FindElement(By.CssSelector("[data-test='amount-due-title']")).Text);
|
Assert.Equal("Amount due", s.Driver.FindElement(By.CssSelector("[data-test='amount-due-title']")).Text);
|
||||||
Assert.Equal("Pay Invoice",
|
Assert.Equal("Pay Invoice", s.Driver.FindElement(By.CssSelector("[data-test='pay-button']")).Text.Trim());
|
||||||
s.Driver.FindElement(By.CssSelector("[data-test='pay-button']")).Text.Trim());
|
|
||||||
|
|
||||||
// expire
|
// expire
|
||||||
s.GoToUrl(editUrl);
|
s.GoToUrl(editUrl);
|
||||||
@@ -891,8 +890,13 @@ namespace BTCPayServer.Tests
|
|||||||
|
|
||||||
s.GoToUrl(viewUrl);
|
s.GoToUrl(viewUrl);
|
||||||
s.Driver.AssertElementNotFound(By.CssSelector("[data-test='status']"));
|
s.Driver.AssertElementNotFound(By.CssSelector("[data-test='status']"));
|
||||||
Assert.Equal("Pay Invoice",
|
Assert.Equal("Pay Invoice", s.Driver.FindElement(By.CssSelector("[data-test='pay-button']")).Text.Trim());
|
||||||
s.Driver.FindElement(By.CssSelector("[data-test='pay-button']")).Text.Trim());
|
|
||||||
|
// test invoice creation, click with JS, because the button is inside a sticky header
|
||||||
|
s.Driver.ExecuteJavaScript("document.querySelector('[data-test=\"pay-button\"]').click()");
|
||||||
|
// checkout v1
|
||||||
|
s.Driver.WaitForElement(By.CssSelector("invoice"));
|
||||||
|
Assert.Contains("Awaiting Payment", s.Driver.PageSource);
|
||||||
|
|
||||||
// archive (from details page)
|
// archive (from details page)
|
||||||
s.GoToUrl(editUrl);
|
s.GoToUrl(editUrl);
|
||||||
|
|||||||
@@ -35,6 +35,7 @@ namespace BTCPayServer.Controllers
|
|||||||
private readonly EventAggregator _EventAggregator;
|
private readonly EventAggregator _EventAggregator;
|
||||||
private readonly CurrencyNameTable _Currencies;
|
private readonly CurrencyNameTable _Currencies;
|
||||||
private readonly InvoiceRepository _InvoiceRepository;
|
private readonly InvoiceRepository _InvoiceRepository;
|
||||||
|
private readonly StoreRepository _storeRepository;
|
||||||
|
|
||||||
public UIPaymentRequestController(
|
public UIPaymentRequestController(
|
||||||
UIInvoiceController invoiceController,
|
UIInvoiceController invoiceController,
|
||||||
@@ -43,6 +44,7 @@ namespace BTCPayServer.Controllers
|
|||||||
PaymentRequestService paymentRequestService,
|
PaymentRequestService paymentRequestService,
|
||||||
EventAggregator eventAggregator,
|
EventAggregator eventAggregator,
|
||||||
CurrencyNameTable currencies,
|
CurrencyNameTable currencies,
|
||||||
|
StoreRepository storeRepository,
|
||||||
InvoiceRepository invoiceRepository)
|
InvoiceRepository invoiceRepository)
|
||||||
{
|
{
|
||||||
_InvoiceController = invoiceController;
|
_InvoiceController = invoiceController;
|
||||||
@@ -51,6 +53,7 @@ namespace BTCPayServer.Controllers
|
|||||||
_PaymentRequestService = paymentRequestService;
|
_PaymentRequestService = paymentRequestService;
|
||||||
_EventAggregator = eventAggregator;
|
_EventAggregator = eventAggregator;
|
||||||
_Currencies = currencies;
|
_Currencies = currencies;
|
||||||
|
_storeRepository = storeRepository;
|
||||||
_InvoiceRepository = invoiceRepository;
|
_InvoiceRepository = invoiceRepository;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -223,7 +226,8 @@ namespace BTCPayServer.Controllers
|
|||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var newInvoice = await _InvoiceController.CreatePaymentRequestInvoice(result, amount, this.GetCurrentStore(), Request, cancellationToken);
|
var store = await _storeRepository.FindStore(result.StoreId);
|
||||||
|
var newInvoice = await _InvoiceController.CreatePaymentRequestInvoice(result, amount, store, Request, cancellationToken);
|
||||||
if (redirectToInvoice)
|
if (redirectToInvoice)
|
||||||
{
|
{
|
||||||
return RedirectToAction("Checkout", "UIInvoice", new { invoiceId = newInvoice.Id });
|
return RedirectToAction("Checkout", "UIInvoice", new { invoiceId = newInvoice.Id });
|
||||||
|
|||||||
Reference in New Issue
Block a user