From f0f698f41118e552808ed75b2ed6d7a7af04ba8a Mon Sep 17 00:00:00 2001 From: "nicolas.dorier" Date: Wed, 13 Mar 2024 22:29:25 +0900 Subject: [PATCH] Fix tests (Fix #5831) --- .../AltcoinTests/AltcoinTests.cs | 37 +++++++++++-------- BTCPayServer.Tests/UnitTest1.cs | 8 ++-- 2 files changed, 26 insertions(+), 19 deletions(-) diff --git a/BTCPayServer.Tests/AltcoinTests/AltcoinTests.cs b/BTCPayServer.Tests/AltcoinTests/AltcoinTests.cs index 908214e06..869f7acdf 100644 --- a/BTCPayServer.Tests/AltcoinTests/AltcoinTests.cs +++ b/BTCPayServer.Tests/AltcoinTests/AltcoinTests.cs @@ -125,7 +125,7 @@ namespace BTCPayServer.Tests Assert.IsType(response); // Setting it again should show the confirmation page - response = await controller.UpdateWallet(new WalletSetupViewModel {StoreId = storeId, CryptoCode = cryptoCode, DerivationScheme = oldScheme }); + response = await controller.UpdateWallet(new WalletSetupViewModel { StoreId = storeId, CryptoCode = cryptoCode, DerivationScheme = oldScheme }); setupVm = (WalletSetupViewModel)Assert.IsType(response).Model; Assert.True(setupVm.Confirmation); @@ -133,7 +133,7 @@ namespace BTCPayServer.Tests // cobo vault file var content = "{\"ExtPubKey\":\"xpub6CEqRFZ7yZxCFXuEWZBAdnC8bdvu9SRHevaoU2SsW9ZmKhrCShmbpGZWwaR15hdLURf8hg47g4TpPGaqEU8hw5LEJCE35AUhne67XNyFGBk\",\"MasterFingerprint\":\"7a7563b5\",\"DerivationPath\":\"M\\/84'\\/0'\\/0'\",\"CoboVaultFirmwareVersion\":\"1.2.0(BTC-Only)\"}"; - response = await controller.UpdateWallet(new WalletSetupViewModel {StoreId = storeId, CryptoCode = cryptoCode, WalletFile = TestUtils.GetFormFile("cobovault.json", content)}); + response = await controller.UpdateWallet(new WalletSetupViewModel { StoreId = storeId, CryptoCode = cryptoCode, WalletFile = TestUtils.GetFormFile("cobovault.json", content) }); setupVm = (WalletSetupViewModel)Assert.IsType(response).Model; Assert.True(setupVm.Confirmation); response = await controller.UpdateWallet(setupVm); @@ -144,7 +144,7 @@ namespace BTCPayServer.Tests // wasabi wallet file content = "{\r\n \"EncryptedSecret\": \"6PYWBQ1zsukowsnTNA57UUx791aBuJusm7E4egXUmF5WGw3tcdG3cmTL57\",\r\n \"ChainCode\": \"waSIVbn8HaoovoQg/0t8IS1+ZCxGsJRGFT21i06nWnc=\",\r\n \"MasterFingerprint\": \"7a7563b5\",\r\n \"ExtPubKey\": \"xpub6CEqRFZ7yZxCFXuEWZBAdnC8bdvu9SRHevaoU2SsW9ZmKhrCShmbpGZWwaR15hdLURf8hg47g4TpPGaqEU8hw5LEJCE35AUhne67XNyFGBk\",\r\n \"PasswordVerified\": false,\r\n \"MinGapLimit\": 21,\r\n \"AccountKeyPath\": \"84'/0'/0'\",\r\n \"BlockchainState\": {\r\n \"Network\": \"RegTest\",\r\n \"Height\": \"0\"\r\n },\r\n \"HdPubKeys\": []\r\n}"; - response = await controller.UpdateWallet(new WalletSetupViewModel {StoreId = storeId, CryptoCode = cryptoCode, WalletFile = TestUtils.GetFormFile("wasabi.json", content)}); + response = await controller.UpdateWallet(new WalletSetupViewModel { StoreId = storeId, CryptoCode = cryptoCode, WalletFile = TestUtils.GetFormFile("wasabi.json", content) }); setupVm = (WalletSetupViewModel)Assert.IsType(response).Model; Assert.True(setupVm.Confirmation); response = await controller.UpdateWallet(setupVm); @@ -155,13 +155,13 @@ namespace BTCPayServer.Tests // Can we upload coldcard settings? (Should fail, we are giving a mainnet file to a testnet network) content = "{\"keystore\": {\"ckcc_xpub\": \"xpub661MyMwAqRbcGVBsTGeNZN6QGVHmMHLdSA4FteGsRrEriu4pnVZMZWnruFFFXkMnyoBjyHndD3Qwcfz4MPzBUxjSevweNFQx7SAYZATtcDw\", \"xpub\": \"ypub6WWc2gWwHbdnAAyJDnR4SPL1phRh7REqrPBfZeizaQ1EmTshieRXJC3Z5YoU4wkcdKHEjQGkh6AYEzCQC1Kz3DNaWSwdc1pc8416hAjzqyD\", \"label\": \"Coldcard Import 0x60d1af8b\", \"ckcc_xfp\": 1624354699, \"type\": \"hardware\", \"hw_type\": \"coldcard\", \"derivation\": \"m/49'/0'/0'\"}, \"wallet_type\": \"standard\", \"use_encryption\": false, \"seed_version\": 17}"; - response = await controller.UpdateWallet(new WalletSetupViewModel {StoreId = storeId, CryptoCode = cryptoCode, WalletFile = TestUtils.GetFormFile("coldcard-ypub.json", content)}); + response = await controller.UpdateWallet(new WalletSetupViewModel { StoreId = storeId, CryptoCode = cryptoCode, WalletFile = TestUtils.GetFormFile("coldcard-ypub.json", content) }); setupVm = (WalletSetupViewModel)Assert.IsType(response).Model; Assert.False(setupVm.Confirmation); // Should fail, we are giving a mainnet file to a testnet network // And with a good file? (upub) content = "{\"keystore\": {\"ckcc_xpub\": \"tpubD6NzVbkrYhZ4YHNiuTdTmHRmbcPRLfqgyneZFCL1mkzkUBjXriQShxTh9HL34FK2mhieasJVk9EzJrUfkFqRNQBjiXgx3n5BhPkxKBoFmaS\", \"xpub\": \"upub5DBYp1qGgsTrkzCptMGZc2x18pquLwGrBw6nS59T4NViZ4cni1mGowQzziy85K8vzkp1jVtWrSkLhqk9KDfvrGeB369wGNYf39kX8rQfiLn\", \"label\": \"Coldcard Import 0x60d1af8b\", \"ckcc_xfp\": 1624354699, \"type\": \"hardware\", \"hw_type\": \"coldcard\", \"derivation\": \"m/49'/0'/0'\"}, \"wallet_type\": \"standard\", \"use_encryption\": false, \"seed_version\": 17}"; - response = await controller.UpdateWallet(new WalletSetupViewModel {StoreId = storeId, CryptoCode = cryptoCode, WalletFile = TestUtils.GetFormFile("coldcard-upub.json", content)}); + response = await controller.UpdateWallet(new WalletSetupViewModel { StoreId = storeId, CryptoCode = cryptoCode, WalletFile = TestUtils.GetFormFile("coldcard-upub.json", content) }); setupVm = (WalletSetupViewModel)Assert.IsType(response).Model; Assert.True(setupVm.Confirmation); response = await controller.UpdateWallet(setupVm); @@ -430,6 +430,7 @@ namespace BTCPayServer.Tests [Fact(Timeout = TestTimeout)] [Trait("Altcoins", "Altcoins")] [Trait("Lightning", "Lightning")] + [Trait("Integration", "Integration")] public async Task CanUsePaymentMethodDropdown() { using (var s = CreateSeleniumTester()) @@ -438,10 +439,10 @@ namespace BTCPayServer.Tests s.Server.ActivateLightning(); await s.StartAsync(); s.GoToRegister(); - s.RegisterNewUser(); + s.RegisterNewUser(true); s.CreateNewStore(); s.AddDerivationScheme("BTC"); - + s.EnableCheckout(Client.Models.CheckoutType.V1); //check that there is no dropdown since only one payment method is set var invoiceId = s.CreateInvoice(10, "USD", "a@g.com"); s.GoToInvoiceCheckout(invoiceId); @@ -454,15 +455,19 @@ namespace BTCPayServer.Tests invoiceId = s.CreateInvoice(10, "USD", "a@g.com"); s.GoToInvoiceCheckout(invoiceId); var currencyDropdownButton = s.Driver.FindElement(By.ClassName("payment__currencies")); - Assert.Contains("BTC", currencyDropdownButton.Text); + Assert.Contains("Bitcoin", currencyDropdownButton.Text); + currencyDropdownButton.Click(); + IEnumerable elements = null; + TestUtils.Eventually(() => + { + elements = s.Driver.FindElement(By.ClassName("vex-content")).FindElements(By.ClassName("vexmenuitem")); + Assert.Equal(3, elements.Count()); + elements.Single(element => element.Text.Contains("Litecoin")).Click(); + }); + currencyDropdownButton = s.Driver.FindElement(By.ClassName("payment__currencies")); + Assert.Contains("Litecoin", currencyDropdownButton.Text); currencyDropdownButton.Click(); - var elements = s.Driver.FindElement(By.ClassName("vex-content")).FindElements(By.ClassName("vexmenuitem")); - Assert.Equal(3, elements.Count); - elements.Single(element => element.Text.Contains("LTC")).Click(); - currencyDropdownButton = s.Driver.FindElement(By.ClassName("payment__currencies")); - Assert.Contains("LTC", currencyDropdownButton.Text); - currencyDropdownButton.Click(); elements = s.Driver.FindElement(By.ClassName("vex-content")).FindElements(By.ClassName("vexmenuitem")); elements.Single(element => element.Text.Contains("Lightning")).Click(); @@ -754,7 +759,7 @@ inventoryitem: inventory: 1 noninventoryitem: price: 10.0"; - + vmpos.Template = AppService.SerializeTemplate(MigrationStartupTask.ParsePOSYML(vmpos.Template)); Assert.IsType(pos.UpdatePointOfSale(app.Id, vmpos).Result); @@ -866,7 +871,7 @@ g: Assert.Contains(items, item => item.Id == "e" && item.PriceType == ViewPointOfSaleViewModel.ItemPriceType.Minimum); Assert.Contains(items, item => item.Id == "f" && item.PriceType == ViewPointOfSaleViewModel.ItemPriceType.Topup); Assert.Contains(items, item => item.Id == "g" && item.PriceType == ViewPointOfSaleViewModel.ItemPriceType.Topup); - + Assert.IsType(publicApps .ViewPointOfSale(app.Id, PosViewType.Static, choiceKey: "g").Result); invoices = user.BitPay.GetInvoices(); diff --git a/BTCPayServer.Tests/UnitTest1.cs b/BTCPayServer.Tests/UnitTest1.cs index 64934207b..e5455f981 100644 --- a/BTCPayServer.Tests/UnitTest1.cs +++ b/BTCPayServer.Tests/UnitTest1.cs @@ -1480,6 +1480,7 @@ namespace BTCPayServer.Tests [Fact] [Trait("Lightning", "Lightning")] + [Trait("Integration", "Integration")] public async Task CanSetPaymentMethodLimits() { using var tester = CreateServerTester(); @@ -1515,9 +1516,10 @@ namespace BTCPayServer.Tests ItemDesc = "Some description", FullNotifications = true }, Facade.Merchant); - - Assert.Single(invoice.CryptoInfo); - Assert.Equal(PaymentTypes.LightningLike.ToString(), invoice.CryptoInfo[0].PaymentType); + // LN and LNURL + Assert.Equal(2, invoice.CryptoInfo.Length); + Assert.Contains(invoice.CryptoInfo, c => c.PaymentType == PaymentTypes.LNURLPay.ToString()); + Assert.Contains(invoice.CryptoInfo, c => c.PaymentType == PaymentTypes.LightningLike.ToString()); // Let's replicate https://github.com/btcpayserver/btcpayserver/issues/2963 // We allow BTC for more than 5 USD, and LN for less than 150. The default is LN, so the default