using ZB.MOM.WW.OtOpcUa.Driver.Galaxy.Runtime;
namespace ZB.MOM.WW.OtOpcUa.Driver.Galaxy.Tests.Runtime;
///
/// test double that resolves every acknowledge to one fixed
/// credential (or refuses all), recording the key ids it was asked about.
///
internal sealed class FixedAckCredentialResolver : IGalaxyAckCredentialResolver
{
private readonly GalaxyAckCredential? _credential;
private FixedAckCredentialResolver(GalaxyAckCredential? credential) => _credential = credential;
/// Gets the key ids the driver resolved for, in order.
public List RequestedKeyIds { get; } = [];
/// A resolver that always returns a fallback account ACKDOM\ack-op / pw.
public static FixedAckCredentialResolver Fallback() =>
new(new GalaxyAckCredential("ack-op", "ACKDOM", "pw", GalaxyAckCredentialSource.Fallback));
/// A resolver that refuses every acknowledge.
public static FixedAckCredentialResolver RefuseAll() => new(null);
///
public Task ResolveAsync(string? apiKeyId, CancellationToken cancellationToken)
{
RequestedKeyIds.Add(apiKeyId);
return Task.FromResult(_credential is null
? GalaxyAckCredentialResolution.Refused("test refusal")
: GalaxyAckCredentialResolution.Resolved(_credential));
}
}