ccf30ac36b
continuous-integration/drone/pr Build is passing
Implemented and tested DeleteFileAsync()
55 lines
1.7 KiB
C#
55 lines
1.7 KiB
C#
using LiteCharms.Features.S3.Abstractions;
|
|
|
|
namespace LiteCharms.Features.Tests;
|
|
|
|
public class S3ServiceFeatureTests(CommonFixture fixture, ITestOutputHelper output) : IClassFixture<CommonFixture>
|
|
{
|
|
[Fact]
|
|
public async Task BookshopS3Service_MustReturnUrl()
|
|
{
|
|
var service = fixture.Services.GetKeyedService<IS3Service>(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<IS3Service>(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);
|
|
}
|
|
}
|