From 0aaf6e0995227116240238182ad5bbaeaf78aeb4 Mon Sep 17 00:00:00 2001 From: Stevan Freeborn <65925598+StevanFreeborn@users.noreply.github.com> Date: Mon, 14 Jul 2025 19:04:46 -0500 Subject: [PATCH] tests: add tests for sad path in new files methods --- .../Integration/AnthropicApiClientTests.cs | 129 ++++++++++++++++++ 1 file changed, 129 insertions(+) diff --git a/tests/AnthropicClient.Tests/Integration/AnthropicApiClientTests.cs b/tests/AnthropicClient.Tests/Integration/AnthropicApiClientTests.cs index 66ea05e..168f552 100644 --- a/tests/AnthropicClient.Tests/Integration/AnthropicApiClientTests.cs +++ b/tests/AnthropicClient.Tests/Integration/AnthropicApiClientTests.cs @@ -1966,6 +1966,33 @@ public class AnthropicApiClientTests : IntegrationTest }); } + [Fact] + public async Task CreateFileAsync_WhenCalledAndRequestFails_ItShouldReturnError() + { + _mockHttpMessageHandler + .WhenCreateFileRequest() + .Respond( + HttpStatusCode.BadRequest, + "application/json", + @"{ + ""type"": ""error"", + ""error"": { + ""type"": ""invalid_request_error"", + ""message"": ""file: file size exceeds limit"" + } + }" + ); + + var fileContent = new MemoryStream(Encoding.UTF8.GetBytes("Example file content")); + var request = new CreateFileRequest(fileContent, "example.txt", "text/plain"); + + var result = await Client.CreateFileAsync(request); + + result.IsSuccess.Should().BeFalse(); + result.Error.Should().BeOfType(); + result.Error.Error.Should().BeOfType(); + } + [Fact] public async Task ListFilesAsync_WhenCalled_ItShouldReturnPageOfFiles() { @@ -2014,6 +2041,30 @@ public class AnthropicApiClientTests : IntegrationTest }); } + [Fact] + public async Task ListFilesAsync_WhenCalledAndRequestFails_ItShouldReturnError() + { + _mockHttpMessageHandler + .WhenListFilesRequest() + .Respond( + HttpStatusCode.BadRequest, + "application/json", + @"{ + ""type"": ""error"", + ""error"": { + ""type"": ""invalid_request_error"", + ""message"": ""files: file not found"" + } + }" + ); + + var result = await Client.ListFilesAsync(); + + result.IsSuccess.Should().BeFalse(); + result.Error.Should().BeOfType(); + result.Error.Error.Should().BeOfType(); + } + [Fact] public async Task ListFilesAsync_WhenCalledWithPagingRequest_ItShouldReturnPageOfFiles() { @@ -2204,6 +2255,32 @@ public class AnthropicApiClientTests : IntegrationTest }); } + [Fact] + public async Task GetFileInfoAsync_WhenCalledAndRequestFails_ItShouldReturnError() + { + var fileId = "file_013Zva2CMHLNnXjNJJKqJ2EF"; + + _mockHttpMessageHandler + .WhenGetFileRequest(fileId) + .Respond( + HttpStatusCode.BadRequest, + "application/json", + @"{ + ""type"": ""error"", + ""error"": { + ""type"": ""invalid_request_error"", + ""message"": ""file: file not found"" + } + }" + ); + + var result = await Client.GetFileInfoAsync(fileId); + + result.IsSuccess.Should().BeFalse(); + result.Error.Should().BeOfType(); + result.Error.Error.Should().BeOfType(); + } + [Fact] public async Task GetFileAsync_WhenCalled_ItShouldReturnFileContent() { @@ -2228,6 +2305,32 @@ public class AnthropicApiClientTests : IntegrationTest content.Should().Be("Example file content"); } + [Fact] + public async Task GetFileAsync_WhenCalledAndRequestFails_ItShouldReturnError() + { + var fileId = "file_013Zva2CMHLNnXjNJJKqJ2EF"; + + _mockHttpMessageHandler + .WhenGetFileContentRequest(fileId) + .Respond( + HttpStatusCode.BadRequest, + "application/json", + @"{ + ""type"": ""error"", + ""error"": { + ""type"": ""invalid_request_error"", + ""message"": ""file: file not found"" + } + }" + ); + + var result = await Client.GetFileAsync(fileId); + + result.IsSuccess.Should().BeFalse(); + result.Error.Should().BeOfType(); + result.Error.Error.Should().BeOfType(); + } + [Fact] public async Task DeleteFileAsync_WhenCalled_ItShouldReturnDeletionResponse() { @@ -2251,4 +2354,30 @@ public class AnthropicApiClientTests : IntegrationTest result.Value.Id.Should().Be(fileId); result.Value.Type.Should().Be("file_deleted"); } + + [Fact] + public async Task DeleteFileAsync_WhenCalledAndRequestFails_ItShouldReturnError() + { + var fileId = "file_013Zva2CMHLNnXjNJJKqJ2EF"; + + _mockHttpMessageHandler + .WhenDeleteFileRequest(fileId) + .Respond( + HttpStatusCode.BadRequest, + "application/json", + @"{ + ""type"": ""error"", + ""error"": { + ""type"": ""invalid_request_error"", + ""message"": ""file: file not found"" + } + }" + ); + + var result = await Client.DeleteFileAsync(fileId); + + result.IsSuccess.Should().BeFalse(); + result.Error.Should().BeOfType(); + result.Error.Error.Should().BeOfType(); + } } \ No newline at end of file