mirror of
https://github.com/btcpayserver/btcpayserver.git
synced 2024-11-19 18:11:36 +01:00
5571413a78
* Allowing for POS to be displayed at website root * Switching to asp attributes for form post action * Applying default formatting rules on HTML * The destination pays mining fees => Subtract fees from amount * small cleanup (#851) * Part2: Openiddict: Init OpenIddict & Database Migration & Auth Policies (#567) * Part 1: OpenIddict - Minor Changes & Config prep * Part 1: OpenIddict - Minor Changes & Config prep * Part2: Openiddict: Init OpenIddict & Database Migration & Auth Policies * pr changes * pr changes * fix merge * pr fixes * remove config for openid -- no need for it for now * fix compile * fix compile #2 * remove extra ns using * Update Startup.cs * compile * adjust settings a bit * remove duplicate * remove external login provider placeholder html * remove unused directives * regenerate db snapshot model * Remove dynamic policy * Provide Pretty descriptions for payment methods from their handlers (#852) * small cleanup * Provide Pretty descriptions for payment methods from their handlers * remove PrettyMethod() * integration with trezor * rough load xpub from trezor * update deriv scheme trezor * move ledger import to dialog * add import from hw wallet dropdown * Support temporary links for local file system provider (#848) * wip * Support temporary links for local file system provider * pass base url to file services * fix test * do not crash on errors with local filesystem * remove console * fix paranthesis * work on trezor.net integration * pushed non compiling sign wallet code * comment out wallet code * abstract ledger ws in add deriv * Auto stash before merge of "trezor" and "btcpayserver/master" * final add changes * cleanup * improve connectivity and fix e2e tests * fix selenium * add experimental warning for trezor * move import button to right and convert to text link * switch to defer and async scripts in add deriv scheme * make defer not async * more elaborate import trezor dialog * Fix small issues * hide trezor for now
144 lines
5.0 KiB
C#
144 lines
5.0 KiB
C#
using System;
|
|
using BTCPayServer;
|
|
using System.Linq;
|
|
using System.Collections.Generic;
|
|
using System.Runtime.CompilerServices;
|
|
using System.Text;
|
|
using NBitcoin;
|
|
using OpenQA.Selenium;
|
|
using OpenQA.Selenium.Chrome;
|
|
using Xunit;
|
|
using System.IO;
|
|
using BTCPayServer.Tests.Logging;
|
|
using System.Threading;
|
|
|
|
namespace BTCPayServer.Tests
|
|
{
|
|
public class SeleniumTester : IDisposable
|
|
{
|
|
public IWebDriver Driver { get; set; }
|
|
public ServerTester Server { get; set; }
|
|
|
|
public static SeleniumTester Create([CallerMemberNameAttribute] string scope = null)
|
|
{
|
|
var server = ServerTester.Create(scope);
|
|
return new SeleniumTester()
|
|
{
|
|
Server = server
|
|
};
|
|
}
|
|
|
|
public void Start()
|
|
{
|
|
Server.Start();
|
|
ChromeOptions options = new ChromeOptions();
|
|
options.AddArguments("headless"); // Comment to view browser
|
|
options.AddArguments("window-size=1200x600"); // Comment to view browser
|
|
options.AddArgument("shm-size=2g");
|
|
if (Server.PayTester.InContainer)
|
|
{
|
|
options.AddArgument("no-sandbox");
|
|
}
|
|
Driver = new ChromeDriver(Server.PayTester.InContainer ? "/usr/bin" : Directory.GetCurrentDirectory(), options);
|
|
Logs.Tester.LogInformation("Selenium: Using chrome driver");
|
|
Logs.Tester.LogInformation("Selenium: Browsing to " + Server.PayTester.ServerUri);
|
|
Logs.Tester.LogInformation($"Selenium: Resolution {Driver.Manage().Window.Size}");
|
|
Driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(10);
|
|
Driver.Navigate().GoToUrl(Server.PayTester.ServerUri);
|
|
Driver.AssertNoError();
|
|
}
|
|
|
|
public string Link(string relativeLink)
|
|
{
|
|
return Server.PayTester.ServerUri.AbsoluteUri.WithoutEndingSlash() + relativeLink.WithStartingSlash();
|
|
}
|
|
|
|
public string RegisterNewUser(bool isAdmin = false)
|
|
{
|
|
var usr = RandomUtils.GetUInt256().ToString() + "@a.com";
|
|
Driver.FindElement(By.Id("Register")).Click();
|
|
Driver.FindElement(By.Id("Email")).SendKeys(usr);
|
|
Driver.FindElement(By.Id("Password")).SendKeys("123456");
|
|
Driver.FindElement(By.Id("ConfirmPassword")).SendKeys("123456");
|
|
if (isAdmin)
|
|
Driver.FindElement(By.Id("IsAdmin")).Click();
|
|
Driver.FindElement(By.Id("RegisterButton")).Click();
|
|
Driver.AssertNoError();
|
|
return usr;
|
|
}
|
|
|
|
public string CreateNewStore()
|
|
{
|
|
var usr = "Store" + RandomUtils.GetUInt64().ToString();
|
|
Driver.FindElement(By.Id("Stores")).Click();
|
|
Driver.FindElement(By.Id("CreateStore")).Click();
|
|
Driver.FindElement(By.Id("Name")).SendKeys(usr);
|
|
Driver.FindElement(By.Id("Create")).Click();
|
|
return usr;
|
|
}
|
|
|
|
public void AddDerivationScheme(string derivationScheme = "xpub661MyMwAqRbcGABgHMUXDzPzH1tU7eZaAaJQXhDXsSxsqyQzQeU6kznNfSuAyqAK9UaWSaZaMFdNiY5BCF4zBPAzSnwfUAwUhwttuAKwfRX-[legacy]")
|
|
{
|
|
Driver.FindElement(By.Id("ModifyBTC")).ForceClick();
|
|
Driver.FindElement(By.ClassName("store-derivation-scheme")).SendKeys(derivationScheme);
|
|
Driver.FindElement(By.Id("Continue")).ForceClick();
|
|
Driver.FindElement(By.Id("Confirm")).ForceClick();
|
|
Driver.FindElement(By.Id("Save")).ForceClick();
|
|
return;
|
|
}
|
|
|
|
public void ClickOnAllSideMenus()
|
|
{
|
|
var links = Driver.FindElements(By.CssSelector(".nav-pills .nav-link")).Select(c => c.GetAttribute("href")).ToList();
|
|
Driver.AssertNoError();
|
|
Assert.NotEmpty(links);
|
|
foreach (var l in links)
|
|
{
|
|
Driver.Navigate().GoToUrl(l);
|
|
Driver.AssertNoError();
|
|
}
|
|
}
|
|
|
|
public void CreateInvoice(string random)
|
|
{
|
|
Driver.FindElement(By.Id("Invoices")).Click();
|
|
Driver.FindElement(By.Id("CreateNewInvoice")).Click();
|
|
Driver.FindElement(By.CssSelector("input#Amount.form-control")).SendKeys("100");
|
|
Driver.FindElement(By.Name("StoreId")).SendKeys("Deriv" + random + Keys.Enter);
|
|
Driver.FindElement(By.Id("Create")).Click();
|
|
return;
|
|
}
|
|
|
|
|
|
public void Dispose()
|
|
{
|
|
if (Driver != null)
|
|
{
|
|
try
|
|
{
|
|
Driver.Close();
|
|
}
|
|
catch { }
|
|
Driver.Dispose();
|
|
}
|
|
if (Server != null)
|
|
Server.Dispose();
|
|
}
|
|
|
|
internal void AssertNotFound()
|
|
{
|
|
Assert.Contains("Status Code: 404; Not Found", Driver.PageSource);
|
|
}
|
|
|
|
internal void GoToHome()
|
|
{
|
|
Driver.Navigate().GoToUrl(Server.PayTester.ServerUri);
|
|
}
|
|
|
|
internal void Logout()
|
|
{
|
|
Driver.FindElement(By.Id("Logout")).Click();
|
|
}
|
|
}
|
|
}
|