Files
lmxopcua/tests/Drivers/ZB.MOM.WW.OtOpcUa.Driver.Historian.QuestDb.Tests/QuestDbHistorianOptionsTests.cs
T

80 lines
2.5 KiB
C#

using Shouldly;
using Xunit;
namespace ZB.MOM.WW.OtOpcUa.Driver.Historian.QuestDb.Tests;
public sealed class QuestDbHistorianOptionsTests
{
private static QuestDbHistorianOptions Valid() => new() { ConnectionString = "Host=h;Port=8812" };
[Fact]
public void Defaults_are_the_documented_ones()
{
var o = new QuestDbHistorianOptions();
o.ConnectionString.ShouldBe("");
o.TablePrefix.ShouldBe("hist_");
o.RetentionDays.ShouldBeNull();
o.CommandTimeout.ShouldBe(TimeSpan.FromSeconds(30));
o.AutoCreateSchema.ShouldBeTrue();
o.VisibilityTimeout.ShouldBe(TimeSpan.FromSeconds(5));
}
[Fact]
public void A_valid_configuration_has_no_errors() => Valid().Validate().ShouldBeEmpty();
[Fact]
public void Missing_connection_string_names_the_key()
{
var o = Valid(); o.ConnectionString = " ";
o.Validate().ShouldHaveSingleItem().ShouldContain("ServerHistorian:QuestDb:ConnectionString");
}
[Theory]
[InlineData("")]
[InlineData("hist-")]
[InlineData("hist.")]
[InlineData("hist_; DROP")]
public void Bad_prefix_names_the_key(string prefix)
{
var o = Valid(); o.TablePrefix = prefix;
o.Validate().ShouldHaveSingleItem().ShouldContain("ServerHistorian:QuestDb:TablePrefix");
}
[Theory]
[InlineData("t0123456789ab_")]
[InlineData("A_9")]
public void Good_prefixes_pass(string prefix)
{
var o = Valid(); o.TablePrefix = prefix;
o.Validate().ShouldBeEmpty();
}
[Theory]
[InlineData(0)]
[InlineData(-3)]
public void Retention_below_one_names_the_key(int days)
{
var o = Valid(); o.RetentionDays = days;
o.Validate().ShouldHaveSingleItem().ShouldContain("ServerHistorian:QuestDb:RetentionDays");
}
[Fact]
public void Retention_of_one_is_valid() { var o = Valid(); o.RetentionDays = 1; o.Validate().ShouldBeEmpty(); }
[Fact]
public void Non_positive_command_timeout_names_the_key()
{
var o = Valid(); o.CommandTimeout = TimeSpan.Zero;
o.Validate().ShouldHaveSingleItem().ShouldContain("ServerHistorian:QuestDb:CommandTimeout");
}
[Fact]
public void Negative_visibility_timeout_names_the_key_and_zero_is_valid()
{
var o = Valid(); o.VisibilityTimeout = TimeSpan.FromMilliseconds(-1);
o.Validate().ShouldHaveSingleItem().ShouldContain("ServerHistorian:QuestDb:VisibilityTimeout");
o.VisibilityTimeout = TimeSpan.Zero;
o.Validate().ShouldBeEmpty();
}
}