using Shouldly; using Microsoft.Extensions.Logging.Abstractions; using Xunit; namespace ZB.MOM.WW.OtOpcUa.Driver.OpcUaClient.Tests; /// /// Tests for — the factory that lets the /// Server-side DriverFactoryBootstrap materialise a real /// from a DriverInstance row instead of falling back to a stub. /// public class OpcUaClientDriverFactoryTests { private const string SampleConfig = """{"EndpointUrl":"opc.tcp://host:4840","SecurityMode":"None","AutoAcceptCertificates":true}"""; /// Verifies the factory builds a driver carrying the right type + instance identity. [Fact] public void CreateInstance_builds_an_OpcUaClient_driver_with_the_right_identity() { var driver = OpcUaClientDriverFactoryExtensions.CreateInstance("drv-1", SampleConfig, NullLoggerFactory.Instance); driver.DriverType.ShouldBe("OpcUaClient"); driver.DriverInstanceId.ShouldBe("drv-1"); } /// Verifies the public driver-type-name constant matches the driver's DriverType. [Fact] public void DriverTypeName_is_OpcUaClient() => OpcUaClientDriverFactoryExtensions.DriverTypeName.ShouldBe("OpcUaClient"); /// Verifies a JSON literal that deserialises to null is rejected with a clear error. [Fact] public void CreateInstance_throws_on_null_json_deserialisation() => Should.Throw( () => OpcUaClientDriverFactoryExtensions.CreateInstance("drv-1", "null", NullLoggerFactory.Instance)); }