Added MultiTenancyOptions.

pull/81/head
Halil İbrahim Kalkan 9 years ago
parent 27807c855a
commit 268af45ec5

@ -1,5 +1,5 @@
using System;
using System.Collections.Generic;
using Microsoft.Extensions.Options;
using Volo.DependencyInjection;
namespace Volo.Abp.MultiTenancy
@ -9,14 +9,14 @@ namespace Volo.Abp.MultiTenancy
public TenantInfo CurrentTenant => GetCurrentTenant();
private readonly ITenantScopeProvider _tenantScopeProvider;
private readonly IEnumerable<ITenantResolver> _currentTenantResolvers;
private readonly MultiTenancyOptions _options;
public MultiTenancyManager(
ITenantScopeProvider tenantScopeProvider,
IEnumerable<ITenantResolver> currentTenantResolvers)
ITenantScopeProvider tenantScopeProvider,
IOptions<MultiTenancyOptions> options)
{
_tenantScopeProvider = tenantScopeProvider;
_currentTenantResolvers = currentTenantResolvers;
_options = options.Value;
}
protected virtual TenantInfo GetCurrentTenant()
@ -28,7 +28,7 @@ namespace Volo.Abp.MultiTenancy
var context = new CurrentTenantResolveContext();
foreach (var currentTenantResolver in _currentTenantResolvers)
foreach (var currentTenantResolver in _options.TenantResolvers)
{
currentTenantResolver.Resolve(context);
if (context.Handled)

@ -0,0 +1,14 @@
using System.Collections.Generic;
namespace Volo.Abp.MultiTenancy
{
public class MultiTenancyOptions
{
public List<ITenantResolver> TenantResolvers { get; }
public MultiTenancyOptions()
{
TenantResolvers = new List<ITenantResolver>();
}
}
}

@ -1,4 +1,5 @@
using System;
using Microsoft.Extensions.Options;
using NSubstitute;
using Shouldly;
using Xunit;
@ -12,7 +13,10 @@ namespace Volo.Abp.MultiTenancy
{
//Arrange
var manager = new MultiTenancyManager(Substitute.For<ITenantScopeProvider>(), new ITenantResolver[0]);
var manager = new MultiTenancyManager(
Substitute.For<ITenantScopeProvider>(),
new OptionsWrapper<MultiTenancyOptions>(new MultiTenancyOptions())
);
//Assert
@ -26,14 +30,21 @@ namespace Volo.Abp.MultiTenancy
var fakeTenant = new TenantInfo(Guid.NewGuid().ToString(), "acme");
var manager = new MultiTenancyManager(Substitute.For<ITenantScopeProvider>(), new[]
{
new SimpleTenantResolver(context =>
{
context.Tenant = fakeTenant;
context.Handled = true;
})
});
var manager = new MultiTenancyManager(
Substitute.For<ITenantScopeProvider>(),
new OptionsWrapper<MultiTenancyOptions>(new MultiTenancyOptions
{
TenantResolvers =
{
new SimpleTenantResolver(context =>
{
context.Tenant = fakeTenant;
context.Handled = true;
})
}
}
)
);
//Assert
@ -48,23 +59,30 @@ namespace Volo.Abp.MultiTenancy
var fakeTenant = new TenantInfo(Guid.NewGuid().ToString(), "acme");
var manager = new MultiTenancyManager(Substitute.For<ITenantScopeProvider>(), new[]
{
new SimpleTenantResolver(context =>
{
context.Tenant = new TenantInfo(Guid.NewGuid().ToString(), "skipped-tenant-1");
}),
new SimpleTenantResolver(context =>
{
context.Tenant = fakeTenant;
context.Handled = true;
}),
new SimpleTenantResolver(context =>
{
context.Tenant = new TenantInfo(Guid.NewGuid().ToString(), "skipped-tenant-2");
context.Handled = true;
})
});
var manager = new MultiTenancyManager(
Substitute.For<ITenantScopeProvider>(),
new OptionsWrapper<MultiTenancyOptions>(new MultiTenancyOptions
{
TenantResolvers =
{
new SimpleTenantResolver(context =>
{
context.Tenant = new TenantInfo(Guid.NewGuid().ToString(), "skipped-tenant-1");
}),
new SimpleTenantResolver(context =>
{
context.Tenant = fakeTenant;
context.Handled = true;
}),
new SimpleTenantResolver(context =>
{
context.Tenant = new TenantInfo(Guid.NewGuid().ToString(), "skipped-tenant-2");
context.Handled = true;
})
}
}
)
);
//Assert
@ -78,14 +96,21 @@ namespace Volo.Abp.MultiTenancy
var oldTenant = new TenantInfo(Guid.NewGuid().ToString(), "old-tenant");
var manager = new MultiTenancyManager(new AsyncLocalTenantScopeProvider(), new[]
{
new SimpleTenantResolver(context =>
{
context.Tenant = oldTenant;
context.Handled = true;
})
});
var manager = new MultiTenancyManager(
new AsyncLocalTenantScopeProvider(),
new OptionsWrapper<MultiTenancyOptions>(
new MultiTenancyOptions
{
TenantResolvers =
{
new SimpleTenantResolver(context =>
{
context.Tenant = oldTenant;
})
}
}
)
);
manager.CurrentTenant.ShouldBe(oldTenant);

Loading…
Cancel
Save