48 lines
1.6 KiB
C#
48 lines
1.6 KiB
C#
using FluentAssertions;
|
|
using FreeCode.ApiProviders;
|
|
using FreeCode.Core.Interfaces;
|
|
using FreeCode.Tests.Unit.Helpers;
|
|
using Xunit;
|
|
|
|
namespace FreeCode.Tests.Unit.ApiProviders;
|
|
|
|
public sealed class ProviderRouterTests
|
|
{
|
|
[Fact]
|
|
public void GetActiveProvider_DefaultsToAnthropic()
|
|
{
|
|
Environment.SetEnvironmentVariable("CLAUDE_CODE_USE_OPENAI", null);
|
|
var services = CreateServices();
|
|
|
|
var sut = new ApiProviderRouter(services);
|
|
|
|
sut.GetActiveProvider().Should().BeOfType<AnthropicProvider>();
|
|
}
|
|
|
|
[Fact]
|
|
public void GetActiveProvider_WithOpenAiFlag_SelectsCodex()
|
|
{
|
|
Environment.SetEnvironmentVariable("CLAUDE_CODE_USE_OPENAI", "1");
|
|
try
|
|
{
|
|
var services = CreateServices();
|
|
|
|
var sut = new ApiProviderRouter(services);
|
|
|
|
sut.GetActiveProvider().Should().BeOfType<CodexProvider>();
|
|
}
|
|
finally
|
|
{
|
|
Environment.SetEnvironmentVariable("CLAUDE_CODE_USE_OPENAI", null);
|
|
}
|
|
}
|
|
|
|
private static IServiceProvider CreateServices()
|
|
=> new SimpleServiceProvider()
|
|
.AddService(typeof(AnthropicProvider), new AnthropicProvider(new HttpClient(new MockHttpHandler("data: {\"type\":\"message_stop\"}"))) )
|
|
.AddService(typeof(CodexProvider), new CodexProvider(new HttpClient(new MockHttpHandler("data: {\"type\":\"response.completed\"}"))))
|
|
.AddService(typeof(BedrockProvider), new BedrockProvider())
|
|
.AddService(typeof(VertexProvider), new VertexProvider())
|
|
.AddService(typeof(FoundryProvider), new FoundryProvider());
|
|
}
|