From 6d0896084fe8bc66518d59f8c93b36dce46f10f8 Mon Sep 17 00:00:00 2001 From: Andrew Camilleri Date: Wed, 19 Feb 2020 09:39:14 +0100 Subject: [PATCH] Add JS Modal test (#1342) --- BTCPayServer.Tests/CheckoutUITests.cs | 40 +++++++++++++++++++ .../Views/Invoice/Checkout-Body.cshtml | 4 +- BTCPayServer/wwwroot/tests/index.html | 20 ++++++++++ 3 files changed, 62 insertions(+), 2 deletions(-) create mode 100644 BTCPayServer/wwwroot/tests/index.html diff --git a/BTCPayServer.Tests/CheckoutUITests.cs b/BTCPayServer.Tests/CheckoutUITests.cs index b6c115c93..fc7730e18 100644 --- a/BTCPayServer.Tests/CheckoutUITests.cs +++ b/BTCPayServer.Tests/CheckoutUITests.cs @@ -4,8 +4,10 @@ using System.Net.Http; using System.Threading; using System.Threading.Tasks; using BTCPayServer.Lightning; +using BTCPayServer.Payments; using BTCPayServer.Tests.Logging; using BTCPayServer.Views.Stores; +using NBitcoin; using NBitpayClient; using OpenQA.Selenium; using OpenQA.Selenium.Interactions; @@ -177,5 +179,43 @@ namespace BTCPayServer.Tests } } + + [Fact(Timeout = TestTimeout)] + public async Task CanUseJSModal() + { + using (var s = SeleniumTester.Create()) + { + await s.StartAsync(); + s.GoToRegister(); + s.RegisterNewUser(); + var store = s.CreateNewStore(); + s.GoToStore(store.storeId); + s.AddDerivationScheme(); + var invoiceId = s.CreateInvoice(store.storeId, 0.001m, "BTC", "a@x.com"); + var invoice = await s.Server.PayTester.InvoiceRepository.GetInvoice(invoiceId); + s.Driver.Navigate() + .GoToUrl(new Uri(s.Server.PayTester.ServerUri, $"tests/index.html?invoice={invoiceId}")); + TestUtils.Eventually(() => + { + Assert.True(s.Driver.FindElement(By.Name("btcpay")).Displayed); + }); + await s.Server.ExplorerNode.SendToAddressAsync(BitcoinAddress.Create(invoice + .GetPaymentMethod(new PaymentMethodId("BTC", PaymentTypes.BTCLike)) + .GetPaymentMethodDetails().GetPaymentDestination(), Network.RegTest), + new Money(0.001m, MoneyUnit.BTC)); + + IWebElement closebutton = null; + TestUtils.Eventually(() => + { + var iframe = s.Driver.SwitchTo().Frame("btcpay"); + closebutton = iframe.FindElement(By.ClassName("close-action")); + Assert.True(closebutton.Displayed); + }); + closebutton.Click(); + s.Driver.AssertElementNotFound(By.Name("btcpay")); + Assert.Equal(s.Driver.Url, + new Uri(s.Server.PayTester.ServerUri, $"tests/index.html?invoice={invoiceId}").ToString()); + } + } } } diff --git a/BTCPayServer/Views/Invoice/Checkout-Body.cshtml b/BTCPayServer/Views/Invoice/Checkout-Body.cshtml index c17c81f70..e872b32e3 100644 --- a/BTCPayServer/Views/Invoice/Checkout-Body.cshtml +++ b/BTCPayServer/Views/Invoice/Checkout-Body.cshtml @@ -208,7 +208,7 @@ @@ -241,7 +241,7 @@ {{$t("Return to StoreName", srvModel)}} diff --git a/BTCPayServer/wwwroot/tests/index.html b/BTCPayServer/wwwroot/tests/index.html new file mode 100644 index 000000000..064d66883 --- /dev/null +++ b/BTCPayServer/wwwroot/tests/index.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + +