public async Task TestPutAsyncByteArray() { var storageSession = new S3StorageSession( ValidStorageOptions, TestFixture.FakeAwsOptions, null ); // Moq client var mock = new Mock <IAmazonS3>(); mock .Setup(foo => foo.PutObjectAsync(It.IsAny <PutObjectRequest>(), default(CancellationToken))) .ReturnsAsync(new PutObjectResponse()); storageSession.S3Client = mock.Object; // Test S3 Response var testId = Guid.NewGuid().ToString(); var contentType = "text/css"; var fileBytes = await File.ReadAllBytesAsync("test.css"); string uri = await storageSession.PutAsync(testId, contentType, fileBytes); Assert.False(string.IsNullOrWhiteSpace(uri)); Assert.StartsWith(ValidUnitTestUriHost, ValidUnitTestUriHost); }
public async Task TestDeleteAsync() { S3StorageSession storageSession = new S3StorageSession(ValidStorageOptions, null, null); // Moq client var mock = new Mock <IAmazonS3>(); mock .Setup(foo => foo.DeleteObjectAsync(ValidStorageOptions.BucketName, ValidStorageOptions.KeyPrefix, default(CancellationToken))) .ReturnsAsync(new DeleteObjectResponse()); storageSession.S3Client = mock.Object; // Test S3 Response var testId = Guid.NewGuid().ToString(); var response = await storageSession.DeleteAsync(testId); Assert.True(response); // Moq throws async not working. /* * mock = new Mock<IAmazonS3>(); * var tcs = new TaskCompletionSource<DeleteObjectResponse>(); * mock * .Setup(foo => foo.DeleteObjectAsync(s3StorageConfiguration.BucketName, s3StorageConfiguration.KeyPrefix, default(CancellationToken))) * .ThrowsAsync(new Exception()); * storageSession.S3Client = mock.Object; * response = await storageSession.DeleteAsync(testId); * Assert.False(response); */ }
public async void TestGetAsync() { S3StorageSession storageSession = new S3StorageSession(ValidStorageOptions, null, null); var testId = Guid.NewGuid().ToString(); var objectKey = Url.Combine(ValidStorageOptions.KeyPrefix, testId); // Moq client var mock = new Mock <IAmazonS3>(); using (var fileStream = new FileStream("test.css", FileMode.Open)) using (var memoryStream = new MemoryStream()) { mock .Setup(foo => foo.GetObjectAsync(ValidUnitTestBucketName, objectKey, default(CancellationToken))) .ReturnsAsync(new GetObjectResponse { ResponseStream = fileStream }); storageSession.S3Client = mock.Object; bool success = await storageSession.GetAsync(testId, memoryStream); Assert.True(success); var outString = Encoding.UTF8.GetString(memoryStream.ToArray()); Assert.Contains("body", outString); } }