mishima-nexus-client-csharp/tests/Robotico.Nexus.Client.Tests/NexusGrpcChannelFactoryTest...

48 lines
1.6 KiB
C#
Raw Permalink Normal View History

using Grpc.Net.Client;
using Robotico.Result.Errors;
using Xunit;
namespace Robotico.Nexus.Client.Tests;
public class NexusGrpcChannelFactoryTests
{
[Fact]
public void ResolveAddress_UsesHttps_WhenRequested()
{
NexusConnectionUriParts parsed = new(NexusUriSchemes.Graph, "myhost", 50051, null);
Assert.Equal("https://myhost:50051", NexusGrpcChannelFactory.ResolveAddress(parsed, useHttps: true));
}
[Fact]
public void ResolveAddress_UsesHttp_WhenPlaintext()
{
NexusConnectionUriParts parsed = new(NexusUriSchemes.Graph, "myhost", 50051, null);
Assert.Equal("http://myhost:50051", NexusGrpcChannelFactory.ResolveAddress(parsed, useHttps: false));
}
[Fact]
public void CreateChannel_Succeeds_ForPlaintextLoopback()
{
NexusConnectionUriParts parsed = new(NexusUriSchemes.Graph, "127.0.0.1", 50051, null);
Robotico.Result.Result<GrpcChannel> result = NexusGrpcChannelFactory.CreateChannel(parsed, material: null, useHttps: false);
Assert.True(result.IsSuccess(out GrpcChannel? channel, out _));
channel!.Dispose();
}
[Fact]
public void CreateChannel_Fails_WhenTlsMaterialFilesAreMissing()
{
NexusConnectionUriParts parsed = new(NexusUriSchemes.Graph, "127.0.0.1", 50051, null);
NexusTlsMaterial material = new("/nonexistent/ca.pem", "/nonexistent/cert.pem", "/nonexistent/key.pem");
Robotico.Result.Result<GrpcChannel> result = NexusGrpcChannelFactory.CreateChannel(parsed, material, useHttps: true);
Assert.True(result.IsError(out IError? error));
Assert.Equal(NexusErrors.TlsRejected, error!.Code);
}
}