48 lines
1.7 KiB
C#
48 lines
1.7 KiB
C#
using System;
|
|
using System.Runtime.InteropServices;
|
|
using MxGateway.Contracts.Proto;
|
|
using MxGateway.Worker.Conversion;
|
|
|
|
namespace MxGateway.Worker.Tests.Conversion;
|
|
|
|
public sealed class HResultConverterTests
|
|
{
|
|
private readonly HResultConverter _converter = new();
|
|
|
|
[Fact]
|
|
public void Convert_WithComException_CapturesExceptionHResult()
|
|
{
|
|
COMException exception = new("Sensitive provider text should not be copied.", unchecked((int)0x80070057));
|
|
|
|
HResultConversion converted = _converter.Convert(exception);
|
|
|
|
Assert.Equal(unchecked((int)0x80070057), converted.HResult);
|
|
Assert.Equal(ProtocolStatusCode.MxaccessFailure, converted.ProtocolStatus.Code);
|
|
Assert.Contains("0x80070057", converted.ProtocolStatus.Message);
|
|
Assert.Contains(typeof(COMException).FullName!, converted.DiagnosticMessage);
|
|
Assert.DoesNotContain("Sensitive provider text", converted.DiagnosticMessage);
|
|
}
|
|
|
|
[Fact]
|
|
public void CreateProtocolStatus_WithSuccessHResult_ReturnsOk()
|
|
{
|
|
ProtocolStatus status = _converter.CreateProtocolStatus(0);
|
|
|
|
Assert.Equal(ProtocolStatusCode.Ok, status.Code);
|
|
Assert.Equal("HRESULT 0x00000000", status.Message);
|
|
}
|
|
|
|
[Fact]
|
|
public void Convert_WithNonComException_CapturesExceptionHResult()
|
|
{
|
|
InvalidOperationException exception = new("do not include this");
|
|
|
|
HResultConversion converted = _converter.Convert(exception);
|
|
|
|
Assert.Equal(exception.HResult, converted.HResult);
|
|
Assert.Equal(ProtocolStatusCode.MxaccessFailure, converted.ProtocolStatus.Code);
|
|
Assert.Contains("0x", converted.DiagnosticMessage);
|
|
Assert.DoesNotContain("do not include this", converted.DiagnosticMessage);
|
|
}
|
|
}
|