2025-01-09 23:17:41 -06:00
|
|
|
using AnthropicClient.Tests.Unit;
|
|
|
|
|
|
2024-07-01 23:59:24 -05:00
|
|
|
namespace AnthropicClient.Tests.Integration;
|
|
|
|
|
|
2025-01-09 23:17:41 -06:00
|
|
|
public class IntegrationTest : SerializationTest
|
2024-07-01 23:59:24 -05:00
|
|
|
{
|
|
|
|
|
protected readonly MockHttpMessageHandler _mockHttpMessageHandler = new();
|
|
|
|
|
protected AnthropicApiClient Client => CreateClient();
|
|
|
|
|
|
|
|
|
|
private AnthropicApiClient CreateClient()
|
|
|
|
|
{
|
|
|
|
|
return new AnthropicApiClient("test-key", _mockHttpMessageHandler.ToHttpClient());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static class MockHttpMessageHandlerExtensions
|
|
|
|
|
{
|
2025-01-02 20:41:12 -06:00
|
|
|
private const string BaseUrl = "https://api.anthropic.com/v1";
|
|
|
|
|
private static readonly string MessagesEndpoint = $"{BaseUrl}/messages";
|
|
|
|
|
private static readonly string CountTokensEndpoint = $"{BaseUrl}/messages/count_tokens";
|
2025-01-08 20:37:58 -06:00
|
|
|
private static readonly string MessageBatchesEndpoint = $"{BaseUrl}/messages/batches";
|
2025-01-05 21:20:27 -06:00
|
|
|
private static readonly string ModelsEndpoint = $"{BaseUrl}/models";
|
2025-07-15 00:39:10 +00:00
|
|
|
private static readonly string FilesEndpoint = $"{BaseUrl}/files";
|
2025-01-02 20:41:12 -06:00
|
|
|
|
|
|
|
|
private static MockedRequest SetupBaseRequest(
|
|
|
|
|
this MockHttpMessageHandler mockHttpMessageHandler,
|
|
|
|
|
HttpMethod method,
|
|
|
|
|
string url
|
|
|
|
|
)
|
2024-07-01 23:59:24 -05:00
|
|
|
{
|
|
|
|
|
return mockHttpMessageHandler
|
2025-01-02 20:41:12 -06:00
|
|
|
.When(method, url)
|
2024-07-01 23:59:24 -05:00
|
|
|
.WithHeaders(new Dictionary<string, string>
|
|
|
|
|
{
|
|
|
|
|
{ "anthropic-version", "2023-06-01" },
|
|
|
|
|
{ "x-api-key", "test-key" }
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static MockedRequest WhenCreateMessageRequest(this MockHttpMessageHandler mockHttpMessageHandler)
|
|
|
|
|
{
|
|
|
|
|
return mockHttpMessageHandler
|
2025-01-02 20:41:12 -06:00
|
|
|
.SetupBaseRequest(HttpMethod.Post, MessagesEndpoint)
|
2024-07-03 16:57:27 -05:00
|
|
|
.WithJsonContent<MessageRequest>(r => r.Stream == false, JsonSerializationOptions.DefaultOptions);
|
2024-07-01 23:59:24 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static MockedRequest WhenCreateStreamMessageRequest(this MockHttpMessageHandler mockHttpMessageHandler)
|
|
|
|
|
{
|
|
|
|
|
return mockHttpMessageHandler
|
2025-01-02 20:41:12 -06:00
|
|
|
.SetupBaseRequest(HttpMethod.Post, MessagesEndpoint)
|
2024-07-03 16:57:27 -05:00
|
|
|
.WithJsonContent<StreamMessageRequest>(r => r.Stream == true, JsonSerializationOptions.DefaultOptions);
|
2024-07-01 23:59:24 -05:00
|
|
|
}
|
2025-01-02 20:41:12 -06:00
|
|
|
|
|
|
|
|
public static MockedRequest WhenCountMessageTokensRequest(this MockHttpMessageHandler mockHttpMessageHandler)
|
|
|
|
|
{
|
|
|
|
|
return mockHttpMessageHandler
|
|
|
|
|
.SetupBaseRequest(HttpMethod.Post, CountTokensEndpoint);
|
|
|
|
|
}
|
2025-01-05 21:20:27 -06:00
|
|
|
|
|
|
|
|
public static MockedRequest WhenListModelsRequest(this MockHttpMessageHandler mockHttpMessageHandler)
|
|
|
|
|
{
|
|
|
|
|
return mockHttpMessageHandler
|
|
|
|
|
.SetupBaseRequest(HttpMethod.Get, ModelsEndpoint);
|
|
|
|
|
}
|
2025-01-05 21:36:34 -06:00
|
|
|
|
|
|
|
|
public static MockedRequest WhenGetModelRequest(this MockHttpMessageHandler mockHttpMessageHandler, string modelId)
|
|
|
|
|
{
|
|
|
|
|
return mockHttpMessageHandler
|
|
|
|
|
.SetupBaseRequest(HttpMethod.Get, $"{ModelsEndpoint}/{modelId}");
|
|
|
|
|
}
|
2025-01-08 20:37:58 -06:00
|
|
|
|
|
|
|
|
public static MockedRequest WhenCreateMessageBatchRequest(this MockHttpMessageHandler mockHttpMessageHandler)
|
|
|
|
|
{
|
|
|
|
|
return mockHttpMessageHandler
|
|
|
|
|
.SetupBaseRequest(HttpMethod.Post, MessageBatchesEndpoint);
|
|
|
|
|
}
|
2025-01-09 23:17:41 -06:00
|
|
|
|
2025-01-08 23:15:24 -06:00
|
|
|
public static MockedRequest WhenGetMessageBatchRequest(this MockHttpMessageHandler mockHttpMessageHandler, string batchId)
|
|
|
|
|
{
|
|
|
|
|
return mockHttpMessageHandler
|
|
|
|
|
.SetupBaseRequest(HttpMethod.Get, $"{MessageBatchesEndpoint}/{batchId}");
|
|
|
|
|
}
|
2025-01-09 23:17:41 -06:00
|
|
|
|
|
|
|
|
public static MockedRequest WhenGetMessageBatchResultsRequest(this MockHttpMessageHandler mockHttpMessageHandler, string batchId)
|
|
|
|
|
{
|
|
|
|
|
return mockHttpMessageHandler
|
|
|
|
|
.SetupBaseRequest(HttpMethod.Get, $"{MessageBatchesEndpoint}/{batchId}/results");
|
|
|
|
|
}
|
2025-01-12 13:46:05 -06:00
|
|
|
|
|
|
|
|
public static MockedRequest WhenListMessageBatchesRequest(this MockHttpMessageHandler mockHttpMessageHandler)
|
|
|
|
|
{
|
|
|
|
|
return mockHttpMessageHandler
|
|
|
|
|
.SetupBaseRequest(HttpMethod.Get, MessageBatchesEndpoint);
|
|
|
|
|
}
|
2025-01-13 13:11:47 -06:00
|
|
|
|
|
|
|
|
public static MockedRequest WhenCancelMessageBatchRequest(this MockHttpMessageHandler mockHttpMessageHandler, string batchId)
|
|
|
|
|
{
|
|
|
|
|
return mockHttpMessageHandler
|
|
|
|
|
.SetupBaseRequest(HttpMethod.Post, $"{MessageBatchesEndpoint}/{batchId}/cancel");
|
|
|
|
|
}
|
2025-01-14 13:41:32 -06:00
|
|
|
|
|
|
|
|
public static MockedRequest WhenDeleteMessageBatchRequest(this MockHttpMessageHandler mockHttpMessageHandler, string batchId)
|
|
|
|
|
{
|
|
|
|
|
return mockHttpMessageHandler
|
|
|
|
|
.SetupBaseRequest(HttpMethod.Delete, $"{MessageBatchesEndpoint}/{batchId}");
|
|
|
|
|
}
|
2025-07-15 00:39:10 +00:00
|
|
|
|
|
|
|
|
public static MockedRequest WhenCreateFileRequest(this MockHttpMessageHandler mockHttpMessageHandler)
|
|
|
|
|
{
|
|
|
|
|
return mockHttpMessageHandler
|
|
|
|
|
.SetupBaseRequest(HttpMethod.Post, FilesEndpoint);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static MockedRequest WhenListFilesRequest(this MockHttpMessageHandler mockHttpMessageHandler)
|
|
|
|
|
{
|
|
|
|
|
return mockHttpMessageHandler
|
|
|
|
|
.SetupBaseRequest(HttpMethod.Get, FilesEndpoint);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static MockedRequest WhenGetFileRequest(this MockHttpMessageHandler mockHttpMessageHandler, string fileId)
|
|
|
|
|
{
|
|
|
|
|
return mockHttpMessageHandler
|
|
|
|
|
.SetupBaseRequest(HttpMethod.Get, $"{FilesEndpoint}/{fileId}");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static MockedRequest WhenDownloadFileRequest(this MockHttpMessageHandler mockHttpMessageHandler, string fileId)
|
|
|
|
|
{
|
|
|
|
|
return mockHttpMessageHandler
|
|
|
|
|
.SetupBaseRequest(HttpMethod.Get, $"{FilesEndpoint}/{fileId}/content");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static MockedRequest WhenDeleteFileRequest(this MockHttpMessageHandler mockHttpMessageHandler, string fileId)
|
|
|
|
|
{
|
|
|
|
|
return mockHttpMessageHandler
|
|
|
|
|
.SetupBaseRequest(HttpMethod.Delete, $"{FilesEndpoint}/{fileId}");
|
|
|
|
|
}
|
2024-07-01 23:59:24 -05:00
|
|
|
}
|