adding
This commit is contained in:
@@ -0,0 +1,119 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using Azure;
|
||||
using Azure.Storage.Blobs;
|
||||
using Azure.Storage.Blobs.Models;
|
||||
using LCU.API.Internal.DocumentLib.DataAccess;
|
||||
using Moq;
|
||||
using NUnit.Framework;
|
||||
|
||||
namespace LCU.API.Internal.DocumentTest.DataAccess;
|
||||
|
||||
public class BlobApiDaoTest
|
||||
{
|
||||
|
||||
private BlobApiDao _dao;
|
||||
private Mock<BlobClient> _mockClient;
|
||||
|
||||
[SetUp]
|
||||
public void Setup()
|
||||
{
|
||||
var mockBlobClient = new Mock<IBlobStorageClient>();
|
||||
var mockBlobContainerClient = new Mock<BlobContainerClient>();
|
||||
mockBlobClient.Setup(client => client.GetClient()).Returns(mockBlobContainerClient.Object);
|
||||
|
||||
_dao = new BlobApiDao(mockBlobClient.Object);
|
||||
_mockClient = new Mock<BlobClient>();
|
||||
mockBlobContainerClient.Setup(client => client.GetBlobClient(It.IsAny<string>())).Returns(_mockClient.Object);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task SaveDocumentToBlob_Success()
|
||||
{
|
||||
var fileData = Encoding.UTF8.GetBytes("test");
|
||||
_mockClient.Setup( mock => mock.UploadAsync(It.IsAny<Stream>())).Verifiable();
|
||||
|
||||
var result = await _dao.SaveDocumentToBlob(fileData);
|
||||
|
||||
Assert.NotNull(result);
|
||||
_mockClient.Verify();
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void SaveDocumentToBlob_Exception_ThrowsException()
|
||||
{
|
||||
var fileData = Encoding.UTF8.GetBytes("test");
|
||||
_mockClient.Setup( mock => mock.UploadAsync(It.IsAny<Stream>())).ThrowsAsync(new Exception("Exception thrown from unit test.")).Verifiable();
|
||||
|
||||
Assert.ThrowsAsync<Exception>(async () => await _dao.SaveDocumentToBlob(fileData));
|
||||
_mockClient.Verify();
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task UpdateDocumentInBlob_Success()
|
||||
{
|
||||
var blobDocId = Guid.NewGuid();
|
||||
var fileData = Encoding.UTF8.GetBytes("test");
|
||||
_mockClient.Setup( mock => mock.UploadAsync(It.IsAny<Stream>(), true, CancellationToken.None)).Verifiable();
|
||||
|
||||
await _dao.UpdateDocumentInBlob(blobDocId, fileData);
|
||||
|
||||
_mockClient.Verify();
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void UpdateDocumentInBlob_Exception_ThrowsException()
|
||||
{
|
||||
var blobDocId = Guid.NewGuid();
|
||||
var fileData = Encoding.UTF8.GetBytes("test");
|
||||
_mockClient.Setup( mock => mock.UploadAsync(It.IsAny<Stream>(), true, CancellationToken.None)).ThrowsAsync(new Exception("Exception thrown from unit test.")).Verifiable();
|
||||
|
||||
Assert.ThrowsAsync<Exception>(async () => await _dao.UpdateDocumentInBlob(blobDocId, fileData));
|
||||
_mockClient.Verify();
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task RemoveDocumentFromBlob_Success()
|
||||
{
|
||||
var blobDocId = Guid.NewGuid();
|
||||
_mockClient.Setup(mock => mock.DeleteAsync(DeleteSnapshotsOption.IncludeSnapshots, It.IsAny<BlobRequestConditions>(), CancellationToken.None)).Verifiable();
|
||||
|
||||
await _dao.RemoveDocumentFromBlob(blobDocId);
|
||||
|
||||
_mockClient.Verify();
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void RemoveDocumentFromBlob_Exception_ThrowsException()
|
||||
{
|
||||
var blobDocId = Guid.NewGuid();
|
||||
_mockClient.Setup( mock => mock.DeleteAsync(DeleteSnapshotsOption.IncludeSnapshots, It.IsAny<BlobRequestConditions>(), CancellationToken.None)).ThrowsAsync(new Exception("Exception thrown from unit test.")).Verifiable();
|
||||
|
||||
Assert.ThrowsAsync<Exception>(async () => await _dao.RemoveDocumentFromBlob(blobDocId));
|
||||
_mockClient.Verify();
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task GetDocumentFromBlob_Success()
|
||||
{
|
||||
var blobDocId = Guid.NewGuid();
|
||||
_mockClient.Setup(mock => mock.DownloadStreamingAsync(It.IsAny<HttpRange>(), It.IsAny<BlobRequestConditions>(), It.IsAny<bool>(), It.IsAny<IProgress<long>>(),It.IsAny<CancellationToken>())).Verifiable();
|
||||
|
||||
await _dao.GetDocumentFromBlob(blobDocId);
|
||||
|
||||
_mockClient.Verify();
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void GetDocumentFromBlob_Exception_ThrowsException()
|
||||
{
|
||||
var blobDocId = Guid.NewGuid();
|
||||
_mockClient.Setup( mock => mock.DownloadStreamingAsync(It.IsAny<HttpRange>(), It.IsAny<BlobRequestConditions>(), It.IsAny<bool>(), It.IsAny<IProgress<long>>(), It.IsAny<CancellationToken>())).ThrowsAsync(new Exception("Exception thrown from unit test.")).Verifiable();
|
||||
|
||||
Assert.ThrowsAsync<Exception>(async () => await _dao.GetDocumentFromBlob(blobDocId));
|
||||
_mockClient.Verify();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user