mirror of https://github.com/abpframework/abp
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
159 lines
6.2 KiB
159 lines
6.2 KiB
using System;
|
|
using System.Linq;
|
|
using System.Threading.Tasks;
|
|
using Shouldly;
|
|
using Volo.Abp.Features;
|
|
using Volo.Abp.MultiTenancy;
|
|
using Xunit;
|
|
|
|
namespace Volo.Abp.FeatureManagement
|
|
{
|
|
public class FeatureManager_Tests : FeatureManagementDomainTestBase
|
|
{
|
|
private readonly IFeatureManager _featureManager;
|
|
private readonly ICurrentTenant _currentTenant;
|
|
private readonly IFeatureChecker _featureChecker;
|
|
|
|
public FeatureManager_Tests()
|
|
{
|
|
_featureManager = GetRequiredService<IFeatureManager>();
|
|
_featureChecker = GetRequiredService<IFeatureChecker>();
|
|
_currentTenant = GetRequiredService<ICurrentTenant>();
|
|
}
|
|
|
|
[Fact]
|
|
public async Task Should_Get_A_FeatureValue_For_A_Provider()
|
|
{
|
|
//Default values
|
|
|
|
(await _featureManager.GetOrNullDefaultAsync(
|
|
TestFeatureDefinitionProvider.SocialLogins
|
|
)).ShouldBeNull();
|
|
|
|
(await _featureManager.GetOrNullDefaultAsync(
|
|
TestFeatureDefinitionProvider.DailyAnalysis
|
|
)).ShouldBe(false.ToString().ToLowerInvariant());
|
|
|
|
(await _featureManager.GetOrNullDefaultAsync(
|
|
TestFeatureDefinitionProvider.ProjectCount
|
|
)).ShouldBe("1");
|
|
|
|
(await _featureManager.GetOrNullDefaultAsync(
|
|
TestFeatureDefinitionProvider.BackupCount
|
|
)).ShouldBe("0");
|
|
|
|
//"Enterprise" edition values
|
|
|
|
(await _featureManager.GetOrNullForEditionAsync(
|
|
TestFeatureDefinitionProvider.SocialLogins,
|
|
TestEditionIds.Enterprise
|
|
)).ShouldBe(true.ToString().ToLowerInvariant());
|
|
|
|
(await _featureManager.GetOrNullForEditionAsync(
|
|
TestFeatureDefinitionProvider.DailyAnalysis,
|
|
TestEditionIds.Enterprise
|
|
)).ShouldBe(false.ToString().ToLowerInvariant());
|
|
|
|
(await _featureManager.GetOrNullForEditionAsync(
|
|
TestFeatureDefinitionProvider.ProjectCount,
|
|
TestEditionIds.Enterprise
|
|
)).ShouldBe("3");
|
|
|
|
(await _featureManager.GetOrNullForEditionAsync(
|
|
TestFeatureDefinitionProvider.BackupCount,
|
|
TestEditionIds.Enterprise
|
|
)).ShouldBe("5");
|
|
|
|
//"Ultimate" edition values
|
|
|
|
(await _featureManager.GetOrNullForEditionAsync(
|
|
TestFeatureDefinitionProvider.SocialLogins,
|
|
TestEditionIds.Ultimate
|
|
)).ShouldBe(true.ToString().ToLowerInvariant());
|
|
|
|
(await _featureManager.GetOrNullForEditionAsync(
|
|
TestFeatureDefinitionProvider.DailyAnalysis,
|
|
TestEditionIds.Ultimate
|
|
)).ShouldBe(true.ToString().ToLowerInvariant());
|
|
|
|
(await _featureManager.GetOrNullForEditionAsync(
|
|
TestFeatureDefinitionProvider.ProjectCount,
|
|
TestEditionIds.Ultimate
|
|
)).ShouldBe("10");
|
|
|
|
(await _featureManager.GetOrNullForEditionAsync(
|
|
TestFeatureDefinitionProvider.BackupCount,
|
|
TestEditionIds.Ultimate
|
|
)).ShouldBe("10");
|
|
}
|
|
|
|
[Fact]
|
|
public async Task Should_Change_Feature_Value_And_Refresh_Cache()
|
|
{
|
|
var tenantId = Guid.NewGuid();
|
|
|
|
//It is "False" at the beginning
|
|
using (_currentTenant.Change(tenantId))
|
|
{
|
|
(await _featureChecker.IsEnabledAsync(TestFeatureDefinitionProvider.SocialLogins)).ShouldBeFalse();
|
|
}
|
|
|
|
//Set to "True" by host for the tenant
|
|
using (_currentTenant.Change(null))
|
|
{
|
|
(await _featureChecker.IsEnabledAsync(TestFeatureDefinitionProvider.SocialLogins)).ShouldBeFalse();
|
|
await _featureManager.SetForTenantAsync(tenantId, TestFeatureDefinitionProvider.SocialLogins, "True");
|
|
(await _featureManager.GetOrNullForTenantAsync(TestFeatureDefinitionProvider.SocialLogins, tenantId)).ShouldBe("True");
|
|
}
|
|
|
|
//Now, it should be "True"
|
|
using (_currentTenant.Change(tenantId))
|
|
{
|
|
(await _featureChecker.IsEnabledAsync(TestFeatureDefinitionProvider.SocialLogins)).ShouldBeTrue();
|
|
}
|
|
}
|
|
|
|
|
|
[Fact]
|
|
public async Task Should_Get_FeatureValues_With_Provider_For_A_Provider()
|
|
{
|
|
var featureNameValueWithGrantedProviders = await _featureManager.GetAllWithProviderAsync(
|
|
EditionFeatureValueProvider.ProviderName,
|
|
TestEditionIds.Enterprise.ToString()
|
|
);
|
|
|
|
featureNameValueWithGrantedProviders.ShouldContain(x =>
|
|
x.Name == TestFeatureDefinitionProvider.SocialLogins
|
|
&& x.Value == true.ToString().ToLowerInvariant() &&
|
|
x.Provider.Name == EditionFeatureValueProvider.ProviderName);
|
|
|
|
featureNameValueWithGrantedProviders.ShouldContain(x =>
|
|
x.Name == TestFeatureDefinitionProvider.EmailSupport &&
|
|
x.Value == true.ToString().ToLowerInvariant() &&
|
|
x.Provider.Name == EditionFeatureValueProvider.ProviderName);
|
|
|
|
//Default Value
|
|
featureNameValueWithGrantedProviders.ShouldContain(x =>
|
|
x.Name == TestFeatureDefinitionProvider.DailyAnalysis &&
|
|
x.Value == false.ToString().ToLowerInvariant() &&
|
|
x.Provider.Name == DefaultValueFeatureValueProvider.ProviderName);
|
|
|
|
featureNameValueWithGrantedProviders.ShouldContain(x =>
|
|
x.Name == TestFeatureDefinitionProvider.UserCount &&
|
|
x.Value == "20" &&
|
|
x.Provider.Name == EditionFeatureValueProvider.ProviderName);
|
|
|
|
featureNameValueWithGrantedProviders.ShouldContain(x =>
|
|
x.Name == TestFeatureDefinitionProvider.ProjectCount &&
|
|
x.Value == "3" &&
|
|
x.Provider.Name == EditionFeatureValueProvider.ProviderName);
|
|
|
|
featureNameValueWithGrantedProviders.ShouldContain(x =>
|
|
x.Name == TestFeatureDefinitionProvider.BackupCount &&
|
|
x.Value == "5" &&
|
|
x.Provider.Name == EditionFeatureValueProvider.ProviderName);
|
|
}
|
|
|
|
}
|
|
}
|