Try your search with a different keyword or use * as a wildcard.
using FluentAssertions;
using Microsoft.AspNetCore.Http;
using Nop.Core;
using NUnit.Framework;
namespace Nop.Tests.Nop.Core.Tests;
[TestFixture]
public class WebHelperTests : BaseNopTest
{
private HttpContext _httpContext;
private IWebHelper _webHelper;
[OneTimeSetUp]
public void SetUp()
{
_webHelper = GetService();
_httpContext = GetService().HttpContext;
var queryString = new QueryString(string.Empty);
queryString = queryString.Add("Key1", "Value1");
queryString = queryString.Add("Key2", "Value2");
_httpContext.Request.QueryString = queryString;
}
[OneTimeTearDown]
public void TearDown()
{
var queryString = new QueryString(string.Empty);
_httpContext.Request.QueryString = queryString;
}
[Test]
public void CanGetStoreHostWithoutSsl()
{
_webHelper.GetStoreHost(false).Should().Be($"http://{NopTestsDefaults.HostIpAddress}/");
}
[Test]
public void CanGetStoreHostWithSsl()
{
_webHelper.GetStoreHost(true).Should().Be($"https://{NopTestsDefaults.HostIpAddress}/");
}
[Test]
public void CanGetStoreLocationWithoutSsl()
{
_webHelper.GetStoreLocation(false).Should().Be($"http://{NopTestsDefaults.HostIpAddress}/");
}
[Test]
public void CanGetStoreLocationWithSsl()
{
_webHelper.GetStoreLocation(true).Should().Be($"https://{NopTestsDefaults.HostIpAddress}/");
}
[Test]
public void CanGetStoreLocationInVirtualDirectory()
{
_httpContext.Request.PathBase = "/nopCommercepath";
_webHelper.GetStoreLocation(false).Should().Be($"http://{NopTestsDefaults.HostIpAddress}/nopCommercepath/");
_httpContext.Request.PathBase = string.Empty;
}
[Test]
public void CanGetQueryString()
{
_webHelper.QueryString("Key1").Should().Be("Value1");
_webHelper.QueryString("Key2").Should().Be("Value2");
_webHelper.QueryString("Key3").Should().Be(null);
}
[Test]
public void CanRemoveQueryString()
{
//empty URL
_webHelper.RemoveQueryString(null, null).Should().Be(string.Empty);
//empty key
_webHelper.RemoveQueryString($"http://{NopTestsDefaults.HostIpAddress}/", null).Should().Be($"http://{NopTestsDefaults.HostIpAddress}/");
//non-existing param with fragment
_webHelper.RemoveQueryString($"http://{NopTestsDefaults.HostIpAddress}/#fragment", "param").Should().Be($"http://{NopTestsDefaults.HostIpAddress}/#fragment");
//first param (?)
_webHelper.RemoveQueryString($"http://{NopTestsDefaults.HostIpAddress}/?param1=value1¶m2=value1", "param1")
.Should().Be($"http://{NopTestsDefaults.HostIpAddress}/?param2=value1");
//second param (&)
_webHelper.RemoveQueryString($"http://{NopTestsDefaults.HostIpAddress}/?param1=value1¶m2=value1", "param2")
.Should().Be($"http://{NopTestsDefaults.HostIpAddress}/?param1=value1");
//non-existing param
_webHelper.RemoveQueryString($"http://{NopTestsDefaults.HostIpAddress}/?param1=value1¶m2=value1", "param3")
.Should().Be($"http://{NopTestsDefaults.HostIpAddress}/?param1=value1¶m2=value1");
//with fragment
_webHelper.RemoveQueryString($"http://{NopTestsDefaults.HostIpAddress}/?param1=value1¶m2=value1#fragment", "param1")
.Should().Be($"http://{NopTestsDefaults.HostIpAddress}/?param2=value1#fragment");
//specific value
_webHelper.RemoveQueryString($"http://{NopTestsDefaults.HostIpAddress}/?param1=value1¶m1=value2¶m2=value1", "param1", "value1")
.Should().Be($"http://{NopTestsDefaults.HostIpAddress}/?param1=value2¶m2=value1");
//all values
_webHelper.RemoveQueryString($"http://{NopTestsDefaults.HostIpAddress}/?param1=value1¶m1=value2¶m2=value1", "param1")
.Should().Be($"http://{NopTestsDefaults.HostIpAddress}/?param2=value1");
}
[Test]
public void CanModifyQueryString()
{
//empty URL
_webHelper.ModifyQueryString(null, null).Should().Be(string.Empty);
//empty key
_webHelper.ModifyQueryString($"http://{NopTestsDefaults.HostIpAddress}/", null).Should().Be($"http://{NopTestsDefaults.HostIpAddress}/");
//empty value
_webHelper.ModifyQueryString($"http://{NopTestsDefaults.HostIpAddress}/", "param").Should().Be($"http://{NopTestsDefaults.HostIpAddress}/?param=");
//first param (?)
_webHelper.ModifyQueryString($"http://{NopTestsDefaults.HostIpAddress}/?param1=value1¶m2=value1", "Param1", "value2")
.Should().Be($"http://{NopTestsDefaults.HostIpAddress}/?param1=value2¶m2=value1");
//second param (&)
_webHelper.ModifyQueryString($"http://{NopTestsDefaults.HostIpAddress}/?param1=value1¶m2=value1", "param2", "value2")
.Should().Be($"http://{NopTestsDefaults.HostIpAddress}/?param1=value1¶m2=value2");
//non-existing param
_webHelper.ModifyQueryString($"http://{NopTestsDefaults.HostIpAddress}/?param1=value1¶m2=value1", "param3", "value1")
.Should().Be($"http://{NopTestsDefaults.HostIpAddress}/?param1=value1¶m2=value1¶m3=value1");
//multiple values
_webHelper.ModifyQueryString($"http://{NopTestsDefaults.HostIpAddress}/?param1=value1¶m2=value1", "param1", "value1", "value2", "value3")
.Should().Be($"http://{NopTestsDefaults.HostIpAddress}/?param1=value1,value2,value3¶m2=value1");
//with fragment
_webHelper.ModifyQueryString($"http://{NopTestsDefaults.HostIpAddress}/?param1=value1¶m2=value1#fragment", "param1", "value2")
.Should().Be($"http://{NopTestsDefaults.HostIpAddress}/?param1=value2¶m2=value1#fragment");
}
[Test]
public void CanModifyQueryStringInVirtualDirectory()
{
_httpContext.Request.PathBase = "/nopCommercepath";
_webHelper.ModifyQueryString("/nopCommercepath/Controller/Action", "param1", "value1").Should().Be("/nopCommercepath/Controller/Action?param1=value1");
_httpContext.Request.PathBase = string.Empty;
}
}