Browse Source

Added MultiTenancyOptions.

pull/81/head
Halil İbrahim Kalkan 10 years ago
parent
commit
268af45ec5
  1. 12
      src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/MultiTenancyManager.cs
  2. 14
      src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/MultiTenancyOptions.cs
  3. 93
      test/Volo.Abp.MultiTenancy.Tests/Volo/Abp/MultiTenancy/MultiTenantManager_TenantResolver_Tests.cs

12
src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/MultiTenancyManager.cs

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

14
src/Volo.Abp.MultiTenancy/Volo/Abp/MultiTenancy/MultiTenancyOptions.cs

@ -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>();
}
}
}

93
test/Volo.Abp.MultiTenancy.Tests/Volo/Abp/MultiTenancy/MultiTenantManager_TenantResolver_Tests.cs

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

Loading…
Cancel
Save