using LiteCharms.Features.S3.Abstractions; namespace LiteCharms.Features.Tests; public class S3ServiceFeatureTests(CommonFixture fixture, ITestOutputHelper output) : IClassFixture { [Fact] public async Task BookshopS3Service_MustReturnUrl() { var service = fixture.Services.GetKeyedService(S3.Constants.BookshopBucketName); var fileName = "appsettings.json"; string path = Path.Combine(Directory.GetCurrentDirectory(), fileName); Assert.True(File.Exists(path)); var stream = File.OpenRead(path); var result = await service!.UploadFileAsync(fileName, stream, MimeKit.MimeTypes.GetMimeType(fileName)); Assert.True(result.IsSuccess); Assert.NotNull(result.Value); Assert.NotEmpty(result.Value); output.WriteLine(result.Value); } [Fact] public async Task BookshopS3Service_MustDeleteFile() { var service = fixture.Services.GetKeyedService(S3.Constants.BookshopBucketName); var fileName = "appsettings.json"; string path = Path.Combine(Directory.GetCurrentDirectory(), fileName); Assert.True(File.Exists(path)); var stream = File.OpenRead(path); var uploadResult = await service!.UploadFileAsync(fileName, stream, MimeKit.MimeTypes.GetMimeType(fileName)); Assert.True(uploadResult.IsSuccess); Assert.NotNull(uploadResult.Value); Assert.NotEmpty(uploadResult.Value); var fileKey = uploadResult.Value.Split('/').Last(); var deleteResult = await service!.DeleteFileAsync(fileKey); Assert.True(deleteResult.IsSuccess); } }