Files
Umbraco-CMS/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Extensions/ConfigurationExtensionsTests.cs
Bjarke Berg 0f1c2f7022 Ensure no management api for v12 (#14197)
* Remove management api

* Remove actual files
2023-05-04 13:32:41 +02:00

134 lines
4.8 KiB
C#

// Copyright (c) Umbraco.
// See LICENSE for more details.
using Microsoft.Extensions.Configuration;
using Moq;
using NUnit.Framework;
using Umbraco.Cms.Core;
using Umbraco.Cms.Core.Configuration.Models;
using Umbraco.Extensions;
namespace Umbraco.Cms.Tests.UnitTests.Umbraco.Core.Extensions;
[TestFixture]
public class ConfigurationExtensionsTests
{
private const string DataDirectory = @"C:\Data";
[Test]
public void CanParseSqlServerConnectionString()
{
const string ConfiguredConnectionString = @"Server=.\SQLEXPRESS;Database=UmbracoCms;Integrated Security=true";
var mockedConfig = CreateConfig(ConfiguredConnectionString);
var connectionString = mockedConfig.Object.GetUmbracoConnectionString(out var providerName);
AssertResults(
ConfiguredConnectionString,
"Microsoft.Data.SqlClient",
connectionString,
providerName);
}
[Test]
public void CanParseLocalDbConnectionString()
{
const string ConfiguredConnectionString = @"Server=(LocalDb)\MyInstance;Integrated Security=true;";
var mockedConfig = CreateConfig(ConfiguredConnectionString);
var connectionString = mockedConfig.Object.GetUmbracoConnectionString(out var providerName);
AssertResults(
ConfiguredConnectionString,
"Microsoft.Data.SqlClient",
connectionString,
providerName);
}
[Test]
public void CanParseLocalDbConnectionStringWithDataDirectory()
{
const string ConfiguredConnectionString =
@"Data Source=(LocalDb)\MyInstance;Initial Catalog=UmbracoDb;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\Umbraco.mdf";
var mockedConfig = CreateConfig(ConfiguredConnectionString);
SetDataDirectory();
var connectionString = mockedConfig.Object.GetUmbracoConnectionString(out var providerName);
AssertResults(
@"Data Source=(LocalDb)\MyInstance;Initial Catalog=UmbracoDb;Integrated Security=SSPI;AttachDBFilename=C:\Data\Umbraco.mdf",
"Microsoft.Data.SqlClient",
connectionString,
providerName);
}
[Test]
public void CanParseSQLiteConnectionStringWithDataDirectory()
{
const string ConfiguredConnectionString =
"Data Source=|DataDirectory|/Umbraco.sqlite.db;Cache=Shared;Foreign Keys=True;Pooling=True";
const string ConfiguredProviderName = "Microsoft.Data.Sqlite";
var mockedConfig = CreateConfig(ConfiguredConnectionString, ConfiguredProviderName);
SetDataDirectory();
var connectionString = mockedConfig.Object.GetUmbracoConnectionString(out var providerName);
AssertResults(
@"Data Source=C:\Data/Umbraco.sqlite.db;Cache=Shared;Foreign Keys=True;Pooling=True",
"Microsoft.Data.Sqlite",
connectionString,
providerName);
}
[Test]
public void CanParseConnectionStringWithNamedProvider()
{
const string ConfiguredConnectionString = @"Server=.\SQLEXPRESS;Database=UmbracoCms;Integrated Security=true";
const string ConfiguredProviderName = "MyProvider";
var mockedConfig = CreateConfig(ConfiguredConnectionString, ConfiguredProviderName);
var connectionString = mockedConfig.Object.GetUmbracoConnectionString(out var providerName);
AssertResults(
ConfiguredConnectionString,
ConfiguredProviderName,
connectionString,
providerName);
}
private static Mock<IConfiguration> CreateConfig(string configuredConnectionString, string configuredProviderName = ConnectionStrings.DefaultProviderName)
{
var mockConfigSection = new Mock<IConfigurationSection>();
mockConfigSection
.SetupGet(m => m[It.Is<string>(s => s == Constants.System.UmbracoConnectionName)])
.Returns(configuredConnectionString);
mockConfigSection
.SetupGet(m =>
m[
It.Is<string>(s =>
s == $"{Constants.System.UmbracoConnectionName}{ConnectionStrings.ProviderNamePostfix}")])
.Returns(configuredProviderName);
var mockedConfig = new Mock<IConfiguration>();
mockedConfig
.Setup(a => a.GetSection(It.Is<string>(s => s == "ConnectionStrings")))
.Returns(mockConfigSection.Object);
return mockedConfig;
}
private static void SetDataDirectory() =>
AppDomain.CurrentDomain.SetData("DataDirectory", DataDirectory);
private static void AssertResults(string expectedConnectionString, string expectedProviderName, string connectionString, string providerName)
{
Assert.AreEqual(expectedConnectionString, connectionString);
Assert.AreEqual(expectedProviderName, providerName);
}
}