diff --git a/BTCPayServer.Tests/GreenfieldAPITests.cs b/BTCPayServer.Tests/GreenfieldAPITests.cs index a277904cf..82ee1c28b 100644 --- a/BTCPayServer.Tests/GreenfieldAPITests.cs +++ b/BTCPayServer.Tests/GreenfieldAPITests.cs @@ -301,6 +301,16 @@ namespace BTCPayServer.Tests Assert.Equal("test app title", app.Title); Assert.False(app.Archived); + // Test title falls back to name + app = await client.CreatePointOfSaleApp( + user.StoreId, + new CreatePointOfSaleAppRequest + { + AppName = "test app name" + } + ); + Assert.Equal("test app name", app.Title); + // Make sure we return a 404 if we try to get an app that doesn't exist await AssertHttpError(404, async () => { @@ -470,6 +480,16 @@ namespace BTCPayServer.Tests Assert.Equal("Crowdfund", app.AppType); Assert.False(app.Archived); + // Test title falls back to name + app = await client.CreateCrowdfundApp( + user.StoreId, + new CreateCrowdfundAppRequest + { + AppName = "test app name" + } + ); + Assert.Equal("test app name", app.Title); + // Make sure we return a 404 if we try to get an app that doesn't exist await AssertHttpError(404, async () => { diff --git a/BTCPayServer.Tests/SeleniumTests.cs b/BTCPayServer.Tests/SeleniumTests.cs index 0140b1dbe..4b66ef345 100644 --- a/BTCPayServer.Tests/SeleniumTests.cs +++ b/BTCPayServer.Tests/SeleniumTests.cs @@ -86,8 +86,9 @@ namespace BTCPayServer.Tests s.GenerateWallet(isHotWallet: true); // Point Of Sale + var appName = $"PoS-{Guid.NewGuid().ToString()[..21]}"; s.Driver.FindElement(By.Id("StoreNav-CreatePointOfSale")).Click(); - s.Driver.FindElement(By.Id("AppName")).SendKeys(Guid.NewGuid().ToString()); + s.Driver.FindElement(By.Id("AppName")).SendKeys(appName); s.Driver.FindElement(By.Id("Create")).Click(); Assert.Contains("App successfully created", s.FindAlertMessage().Text); @@ -1152,12 +1153,15 @@ namespace BTCPayServer.Tests using var s = CreateSeleniumTester(newDb: true); await s.StartAsync(); var userId = s.RegisterNewUser(true); + var appName = $"PoS-{Guid.NewGuid().ToString()[..21]}"; s.CreateNewStore(); s.Driver.FindElement(By.Id("StoreNav-CreatePointOfSale")).Click(); - s.Driver.FindElement(By.Name("AppName")).SendKeys("PoS" + Guid.NewGuid()); + s.Driver.FindElement(By.Name("AppName")).SendKeys(appName); s.Driver.FindElement(By.Id("Create")).Click(); Assert.Contains("App successfully created", s.FindAlertMessage().Text); - + Assert.Equal(appName, s.Driver.FindElement(By.Id("Title")).GetAttribute("value")); + s.Driver.FindElement(By.Id("Title")).Clear(); + s.Driver.FindElement(By.Id("Title")).SendKeys("Tea shop"); s.Driver.FindElement(By.CssSelector("label[for='DefaultView_Cart']")).Click(); s.Driver.FindElement(By.CssSelector(".template-item:nth-of-type(1)")).Click(); s.Driver.FindElement(By.Id("BuyButtonText")).SendKeys("Take my money"); @@ -1269,11 +1273,13 @@ namespace BTCPayServer.Tests s.CreateNewStore(); s.AddDerivationScheme(); + var appName = $"CF-{Guid.NewGuid().ToString()[..21]}"; s.Driver.FindElement(By.Id("StoreNav-CreateCrowdfund")).Click(); - s.Driver.FindElement(By.Name("AppName")).SendKeys("CF" + Guid.NewGuid()); + s.Driver.FindElement(By.Name("AppName")).SendKeys(appName); s.Driver.FindElement(By.Id("Create")).Click(); Assert.Contains("App successfully created", s.FindAlertMessage().Text); - + Assert.Equal(appName, s.Driver.FindElement(By.Id("Title")).GetAttribute("value")); + s.Driver.FindElement(By.Id("Title")).Clear(); s.Driver.FindElement(By.Id("Title")).SendKeys("Kukkstarter"); s.Driver.FindElement(By.CssSelector("div.note-editable.card-block")).SendKeys("1BTC = 1BTC"); s.Driver.FindElement(By.Id("TargetCurrency")).Clear(); @@ -2507,7 +2513,9 @@ namespace BTCPayServer.Tests s.GoToLightningSettings(); s.Driver.SetCheckbox(By.Id("LNURLEnabled"), true); s.Driver.FindElement(By.Id("StoreNav-CreatePointOfSale")).Click(); - s.Driver.FindElement(By.Id("AppName")).SendKeys(Guid.NewGuid().ToString()); + + var appName = $"PoS-{Guid.NewGuid().ToString()[..21]}"; + s.Driver.FindElement(By.Id("AppName")).SendKeys(appName); s.Driver.FindElement(By.Id("Create")).Click(); TestUtils.Eventually(() => Assert.Contains("App successfully created", s.FindAlertMessage().Text)); s.Driver.FindElement(By.CssSelector("label[for='DefaultView_Print']")).Click(); @@ -2556,8 +2564,9 @@ namespace BTCPayServer.Tests Assert.Contains("User added successfully", s.FindAlertMessage().Text); // Setup POS + var appName = $"PoS-{Guid.NewGuid().ToString()[..21]}"; s.Driver.FindElement(By.Id("StoreNav-CreatePointOfSale")).Click(); - s.Driver.FindElement(By.Id("AppName")).SendKeys(Guid.NewGuid().ToString()); + s.Driver.FindElement(By.Id("AppName")).SendKeys(appName); s.Driver.FindElement(By.Id("Create")).Click(); TestUtils.Eventually(() => Assert.Contains("App successfully created", s.FindAlertMessage().Text)); s.Driver.FindElement(By.CssSelector("label[for='DefaultView_Light']")).Click(); @@ -2656,8 +2665,10 @@ namespace BTCPayServer.Tests s.CreateNewStore(); s.GoToStore(); s.AddLightningNode(LightningConnectionType.CLightning, false); + + var appName = $"PoS-{Guid.NewGuid().ToString()[..21]}"; s.Driver.FindElement(By.Id("StoreNav-CreatePointOfSale")).Click(); - s.Driver.FindElement(By.Id("AppName")).SendKeys(Guid.NewGuid().ToString()); + s.Driver.FindElement(By.Id("AppName")).SendKeys(appName); s.Driver.FindElement(By.Id("Create")).Click(); Assert.Contains("App successfully created", s.FindAlertMessage().Text); s.Driver.FindElement(By.CssSelector("label[for='DefaultView_Cart']")).Click(); diff --git a/BTCPayServer/Controllers/GreenField/GreenfieldAppsController.cs b/BTCPayServer/Controllers/GreenField/GreenfieldAppsController.cs index fb6a796f3..2a4111e02 100644 --- a/BTCPayServer/Controllers/GreenField/GreenfieldAppsController.cs +++ b/BTCPayServer/Controllers/GreenField/GreenfieldAppsController.cs @@ -238,7 +238,7 @@ namespace BTCPayServer.Controllers.Greenfield return new CrowdfundSettings { - Title = request.Title?.Trim(), + Title = request.Title?.Trim() ?? request.AppName, Enabled = request.Enabled ?? true, EnforceTargetAmount = request.EnforceTargetAmount ?? false, StartDate = request.StartDate?.UtcDateTime, @@ -272,7 +272,7 @@ namespace BTCPayServer.Controllers.Greenfield { return new PointOfSaleSettings { - Title = request.Title, + Title = request.Title ?? request.AppName, DefaultView = (PosViewType)request.DefaultView, ShowCustomAmount = request.ShowCustomAmount, ShowDiscount = request.ShowDiscount, diff --git a/BTCPayServer/Plugins/Crowdfund/CrowdfundPlugin.cs b/BTCPayServer/Plugins/Crowdfund/CrowdfundPlugin.cs index ee409baa3..57ff4b9ae 100644 --- a/BTCPayServer/Plugins/Crowdfund/CrowdfundPlugin.cs +++ b/BTCPayServer/Plugins/Crowdfund/CrowdfundPlugin.cs @@ -236,7 +236,7 @@ namespace BTCPayServer.Plugins.Crowdfund public override Task SetDefaultSettings(AppData appData, string defaultCurrency) { - var emptyCrowdfund = new CrowdfundSettings { TargetCurrency = defaultCurrency }; + var emptyCrowdfund = new CrowdfundSettings { Title = appData.Name, TargetCurrency = defaultCurrency }; appData.SetSettings(emptyCrowdfund); return Task.CompletedTask; } diff --git a/BTCPayServer/Plugins/PointOfSale/PointOfSalePlugin.cs b/BTCPayServer/Plugins/PointOfSale/PointOfSalePlugin.cs index dc8ff4298..6136eaaa9 100644 --- a/BTCPayServer/Plugins/PointOfSale/PointOfSalePlugin.cs +++ b/BTCPayServer/Plugins/PointOfSale/PointOfSalePlugin.cs @@ -117,7 +117,7 @@ namespace BTCPayServer.Plugins.PointOfSale public override Task SetDefaultSettings(AppData appData, string defaultCurrency) { - var empty = new PointOfSaleSettings { Currency = defaultCurrency }; + var empty = new PointOfSaleSettings { Title = appData.Name, Currency = defaultCurrency }; appData.SetSettings(empty); return Task.CompletedTask; }