fix: Unit test get exceptions.

pull/4735/head
shaoxiaoxu 5 years ago
parent 30f36aca8f
commit 889d9f1910

@ -19,13 +19,13 @@ namespace Volo.Abp.BlobStoring.Aliyun
AliyunBlobNameCalculator = aliyunBlobNameCalculator;
}
private IOss GetOssClient(BlobContainerConfiguration blobContainerConfiguration)
protected virtual IOss GetOssClient(BlobContainerConfiguration blobContainerConfiguration)
{
var aliyunConfig = blobContainerConfiguration.GetAliyunConfiguration();
return OssClientFactory.Create(aliyunConfig);
}
private IOss GetOssClient(AliyunBlobProviderConfiguration aliyunConfig)
protected virtual IOss GetOssClient(AliyunBlobProviderConfiguration aliyunConfig)
{
return OssClientFactory.Create(aliyunConfig);
}
@ -57,9 +57,11 @@ namespace Volo.Abp.BlobStoring.Aliyun
var containerName = GetContainerName(args);
var blobName = AliyunBlobNameCalculator.Calculate(args);
var ossClient = GetOssClient(args.Configuration);
var result = ossClient.DeleteObject(containerName, blobName);
//TODO: undifend delete flag
//https://help.aliyun.com/document_detail/91924.html
if(!BlobExistsAsync(ossClient, containerName, blobName))
{
return Task.FromResult(false);
}
ossClient.DeleteObject(containerName, blobName);
return Task.FromResult(true);
}
@ -71,7 +73,7 @@ namespace Volo.Abp.BlobStoring.Aliyun
return Task.FromResult(BlobExistsAsync(ossClient, containerName, blobName));
}
public override Task<Stream> GetOrNullAsync(BlobProviderGetArgs args)
public override async Task<Stream> GetOrNullAsync(BlobProviderGetArgs args)
{
var containerName = GetContainerName(args);
var blobName = AliyunBlobNameCalculator.Calculate(args);
@ -81,7 +83,9 @@ namespace Volo.Abp.BlobStoring.Aliyun
return null;
}
var result = ossClient.GetObject(containerName, blobName);
return Task.FromResult(result.Content);
var memoryStream = new MemoryStream();
await result.Content.CopyToAsync(memoryStream);
return memoryStream;
}
private static string GetContainerName(BlobProviderArgs args)

@ -16,11 +16,11 @@ namespace Volo.Abp.BlobStoring.Aliyun
/// </summary>
public class DefaultOssClientFactory : IOssClientFactory, ITransientDependency
{
private readonly IDistributedCache<AssumeRoleCredentialsCacheItem> _cache;
protected IDistributedCache<AssumeRoleCredentialsCacheItem> Cache { get; }
public DefaultOssClientFactory(
IDistributedCache<AssumeRoleCredentialsCacheItem> cache)
{
_cache = cache;
Cache = cache;
}
public virtual IOss Create(AliyunBlobProviderConfiguration aliyunConfig)
@ -34,7 +34,7 @@ namespace Volo.Abp.BlobStoring.Aliyun
{
//STS temporary authorization to access OSS
var key = aliyunConfig.ToKeyString();
var cacheItem = _cache.Get(key);
var cacheItem = Cache.Get(key);
if (cacheItem == null)
{
IClientProfile profile = DefaultProfile.GetProfile(
@ -55,7 +55,7 @@ namespace Volo.Abp.BlobStoring.Aliyun
};
var response = client.GetAcsResponse(request);
cacheItem = new AssumeRoleCredentialsCacheItem(response.Credentials.AccessKeyId, response.Credentials.AccessKeySecret, response.Credentials.SecurityToken);
_cache.Set(key, cacheItem, new DistributedCacheEntryOptions()
Cache.Set(key, cacheItem, new DistributedCacheEntryOptions()
{
//Subtract 10 seconds of network request time.
AbsoluteExpirationRelativeToNow = TimeSpan.FromSeconds(aliyunConfig.DurationSeconds - 10)

@ -5,7 +5,7 @@
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<RootNamespace />
<UserSecretsId>fe9a87da-3584-40e0-a06c-aa499936015d</UserSecretsId>
<UserSecretsId>9f0d2c00-80c1-435b-bfab-2c39c8249091</UserSecretsId>
</PropertyGroup>
<ItemGroup>

@ -1,6 +1,8 @@
using Microsoft.Extensions.Configuration;
using Aliyun.OSS;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using System;
using System.Linq;
using Volo.Abp.Modularity;
namespace Volo.Abp.BlobStoring.Aliyun
@ -19,7 +21,7 @@ namespace Volo.Abp.BlobStoring.Aliyun
)]
public class AbpBlobStoringAliyunTestModule : AbpModule
{
private const string UserSecretsId = "fe9a87da-3584-40e0-a06c-aa499936015d";
private const string UserSecretsId = "9f0d2c00-80c1-435b-bfab-2c39c8249091";
private AliyunBlobProviderConfiguration _configuration;
private readonly string _randomContainerName = "abp-aliyun-test-container-" + Guid.NewGuid().ToString("N");
@ -32,11 +34,11 @@ namespace Volo.Abp.BlobStoring.Aliyun
}));
var configuration = context.Services.GetConfiguration();
var _accessKeyId = configuration["Aliyun:AccessKeyId"];
var _accessKeySecret = configuration["Aliyun:AccessKeySecret"];
var _endpoint = configuration["Aliyun:Endpoint"];
var _regionId = configuration["Aliyun:RegionId"];
var _roleArn = configuration["Aliyun:RoleArn"];
var accessKeyId = configuration["Aliyun:AccessKeyId"];
var accessKeySecret = configuration["Aliyun:AccessKeySecret"];
var endpoint = configuration["Aliyun:Endpoint"];
var regionId = configuration["Aliyun:RegionId"];
var roleArn = configuration["Aliyun:RoleArn"];
Configure<AbpBlobStoringOptions>(options =>
{
@ -44,14 +46,14 @@ namespace Volo.Abp.BlobStoring.Aliyun
{
containerConfiguration.UseAliyun(aliyun =>
{
aliyun.AccessKeyId = _accessKeyId;
aliyun.AccessKeySecret = _accessKeySecret;
aliyun.Endpoint = _endpoint;
aliyun.AccessKeyId = accessKeyId;
aliyun.AccessKeySecret = accessKeySecret;
aliyun.Endpoint = endpoint;
//STS
aliyun.RegionId = _regionId;
aliyun.RoleArn = _roleArn;
aliyun.RegionId = regionId;
aliyun.RoleArn = roleArn;
aliyun.RoleSessionName = Guid.NewGuid().ToString("N");
aliyun.DurationSeconds = 3600;
aliyun.DurationSeconds = 0;
aliyun.Policy = String.Empty;
//Other
aliyun.CreateContainerIfNotExists = true;
@ -66,7 +68,16 @@ namespace Volo.Abp.BlobStoring.Aliyun
{
var ossClientFactory = context.ServiceProvider.GetService<IOssClientFactory>();
var ossClient = ossClientFactory.Create(_configuration);
ossClient.DeleteBucket(_randomContainerName);
if(ossClient.DoesBucketExist(_randomContainerName))
{
var objects = ossClient.ListObjects(_randomContainerName);
if (objects.ObjectSummaries.Any())
{
ossClient.DeleteObjects(new DeleteObjectsRequest(_randomContainerName,
objects.ObjectSummaries.Select(o => o.Key).ToList()));
}
ossClient.DeleteBucket(_randomContainerName);
}
}
}

Loading…
Cancel
Save