Browse Source

Better tests.

pull/516/head
Sebastian 6 years ago
parent
commit
d9e7ad8dfe
  1. 2
      backend/src/Squidex/appsettings.json
  2. 57
      backend/tests/Squidex.Infrastructure.Tests/Assets/AssetStoreTests.cs

2
backend/src/Squidex/appsettings.json

@ -315,7 +315,7 @@
/*
* The name of your bucket.
*/
"bucket": "squidex-assets",
"bucket": "squidex-test",
/*
* The optional folder within the bucket.

57
backend/tests/Squidex.Infrastructure.Tests/Assets/AssetStoreTests.cs

@ -14,7 +14,8 @@ namespace Squidex.Infrastructure.Assets
{
public abstract class AssetStoreTests<T> where T : IAssetStore
{
private readonly MemoryStream assetData = new MemoryStream(new byte[] { 0x1, 0x2, 0x3, 0x4 });
private readonly MemoryStream assetLarge = CreateFile(4 * 1024 * 1024);
private readonly MemoryStream assetSmall = CreateFile(4);
private readonly string fileName = Guid.NewGuid().ToString();
private readonly string sourceFile = Guid.NewGuid().ToString();
private readonly Lazy<T> sut;
@ -99,47 +100,59 @@ namespace Squidex.Infrastructure.Assets
[Fact]
public async Task Should_write_and_read_file()
{
await Sut.UploadAsync(fileName, assetData);
await Sut.UploadAsync(fileName, assetSmall);
var readData = new MemoryStream();
await Sut.DownloadAsync(fileName, readData);
Assert.Equal(assetData.ToArray(), readData.ToArray());
Assert.Equal(assetSmall.ToArray(), readData.ToArray());
}
[Fact]
public async Task Should_write_and_read_large_file()
{
await Sut.UploadAsync(fileName, assetLarge);
var readData = new MemoryStream();
await Sut.DownloadAsync(fileName, readData);
Assert.Equal(assetLarge.ToArray(), readData.ToArray());
}
[Fact]
public async Task Should_write_and_read_file_with_range()
{
await Sut.UploadAsync(fileName, assetData, true);
await Sut.UploadAsync(fileName, assetSmall, true);
var readData = new MemoryStream();
await Sut.DownloadAsync(fileName, readData, new BytesRange(1, 2));
Assert.Equal(new Span<byte>(assetData.ToArray()).Slice(1, 2).ToArray(), readData.ToArray());
Assert.Equal(new Span<byte>(assetSmall.ToArray()).Slice(1, 2).ToArray(), readData.ToArray());
}
[Fact]
public async Task Should_write_and_and_get_size()
{
await Sut.UploadAsync(fileName, assetData, true);
await Sut.UploadAsync(fileName, assetSmall, true);
var size = await Sut.GetSizeAsync(fileName);
Assert.Equal(assetData.Length, size);
Assert.Equal(assetSmall.Length, size);
}
[Fact]
public async Task Should_write_and_read_file_and_overwrite_non_existing()
{
await Sut.UploadAsync(fileName, assetData, true);
await Sut.UploadAsync(fileName, assetSmall, true);
var readData = new MemoryStream();
await Sut.DownloadAsync(fileName, readData);
Assert.Equal(assetData.ToArray(), readData.ToArray());
Assert.Equal(assetSmall.ToArray(), readData.ToArray());
}
[Fact]
@ -148,27 +161,27 @@ namespace Squidex.Infrastructure.Assets
var oldData = new MemoryStream(new byte[] { 0x1, 0x2, 0x3, 0x4, 0x5 });
await Sut.UploadAsync(fileName, oldData);
await Sut.UploadAsync(fileName, assetData, true);
await Sut.UploadAsync(fileName, assetSmall, true);
var readData = new MemoryStream();
await Sut.DownloadAsync(fileName, readData);
Assert.Equal(assetData.ToArray(), readData.ToArray());
Assert.Equal(assetSmall.ToArray(), readData.ToArray());
}
[Fact]
public async Task Should_throw_exception_when_file_to_write_already_exists()
{
await Sut.UploadAsync(fileName, assetData);
await Sut.UploadAsync(fileName, assetSmall);
await Assert.ThrowsAsync<AssetAlreadyExistsException>(() => Sut.UploadAsync(fileName, assetData));
await Assert.ThrowsAsync<AssetAlreadyExistsException>(() => Sut.UploadAsync(fileName, assetSmall));
}
[Fact]
public async Task Should_throw_exception_when_target_file_to_copy_to_already_exists()
{
await Sut.UploadAsync(sourceFile, assetData);
await Sut.UploadAsync(sourceFile, assetSmall);
await Sut.CopyAsync(sourceFile, fileName);
await Assert.ThrowsAsync<AssetAlreadyExistsException>(() => Sut.CopyAsync(sourceFile, fileName));
@ -177,7 +190,7 @@ namespace Squidex.Infrastructure.Assets
[Fact]
public async Task Should_ignore_when_deleting_not_existing_file()
{
await Sut.UploadAsync(sourceFile, assetData);
await Sut.UploadAsync(sourceFile, assetSmall);
await Sut.DeleteAsync(sourceFile);
await Sut.DeleteAsync(sourceFile);
}
@ -188,5 +201,19 @@ namespace Squidex.Infrastructure.Assets
await Assert.ThrowsAsync<ArgumentException>(() => action(string.Empty));
await Assert.ThrowsAsync<ArgumentException>(() => action(" "));
}
private static MemoryStream CreateFile(int length)
{
var memoryStream = new MemoryStream();
for (var i = 0; i < length; i++)
{
memoryStream.WriteByte((byte)i);
}
memoryStream.Position = 0;
return memoryStream;
}
}
}

Loading…
Cancel
Save