Move extension method to actual interface with default implementation
This commit is contained in:
@@ -1,22 +0,0 @@
|
||||
using Umbraco.Cms.Core.Models.ContentEditing;
|
||||
using Umbraco.Cms.Core.Models.Membership;
|
||||
|
||||
namespace Umbraco.Cms.Core.Extensions;
|
||||
|
||||
public static class ReadOnlyUserGroupExtensions
|
||||
{
|
||||
/// <summary>
|
||||
/// Checks if a readonly user group has access to a given language
|
||||
/// </summary>
|
||||
/// <remarks> If allowed languages on the user group is empty, it means that we have access to all languages, and thus have access to the language</remarks>
|
||||
public static bool HasAccessToLanguage(this IReadOnlyUserGroup readOnlyUserGroup, int languageId)
|
||||
{
|
||||
|
||||
if (readOnlyUserGroup.AllowedLanguages.Any() is false || readOnlyUserGroup.AllowedLanguages.Contains(languageId))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -32,4 +32,6 @@ public interface IReadOnlyUserGroup
|
||||
IEnumerable<string> AllowedSections { get; }
|
||||
|
||||
IEnumerable<int> AllowedLanguages => Enumerable.Empty<int>();
|
||||
|
||||
public bool HasAccessToLanguage( int languageId) => AllowedLanguages.Any() is false || AllowedLanguages.Contains(languageId);
|
||||
}
|
||||
|
||||
@@ -1,42 +0,0 @@
|
||||
using NUnit.Framework;
|
||||
using Umbraco.Cms.Core.Extensions;
|
||||
using Umbraco.Cms.Core.Models.Membership;
|
||||
using Umbraco.Cms.Tests.UnitTests.Umbraco.Core.ShortStringHelper;
|
||||
|
||||
namespace Umbraco.Cms.Tests.UnitTests.Umbraco.Core.Extensions;
|
||||
|
||||
[TestFixture]
|
||||
public class ReadOnlyUserGroupExtensions
|
||||
{
|
||||
private static int _swedishLanguageId = 1;
|
||||
private static int _danishLanguageId = 2;
|
||||
private static int _germanLanguageId = 3 ;
|
||||
|
||||
[Test]
|
||||
public void CanCheckIfUserHasAccessToLanguage()
|
||||
{
|
||||
var userGrp = new UserGroup(new MockShortStringHelper());
|
||||
userGrp.AddAllowedLanguage(_swedishLanguageId);
|
||||
userGrp.AddAllowedLanguage(_danishLanguageId);
|
||||
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.IsTrue(userGrp.HasAccessToLanguage(_swedishLanguageId));
|
||||
Assert.IsTrue(userGrp.HasAccessToLanguage(_danishLanguageId));
|
||||
Assert.IsFalse(userGrp.HasAccessToLanguage(_germanLanguageId));
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void CheckIfAllowedLanugagesIsEmptyMeansAccessToAllLanguages()
|
||||
{
|
||||
var userGrp = new UserGroup(new MockShortStringHelper());
|
||||
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.IsTrue(userGrp.HasAccessToLanguage(_swedishLanguageId));
|
||||
Assert.IsTrue(userGrp.HasAccessToLanguage(_danishLanguageId));
|
||||
Assert.IsTrue(userGrp.HasAccessToLanguage(_germanLanguageId));
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -9,12 +9,17 @@ using NUnit.Framework;
|
||||
using Umbraco.Cms.Core.Models.Membership;
|
||||
using Umbraco.Cms.Tests.Common.Builders;
|
||||
using Umbraco.Cms.Tests.Common.Builders.Extensions;
|
||||
using Umbraco.Cms.Tests.UnitTests.Umbraco.Core.ShortStringHelper;
|
||||
|
||||
namespace Umbraco.Cms.Tests.UnitTests.Umbraco.Core.Models;
|
||||
|
||||
[TestFixture]
|
||||
public class UserGroupTests
|
||||
{
|
||||
private static int _swedishLanguageId = 1;
|
||||
private static int _danishLanguageId = 2;
|
||||
private static int _germanLanguageId = 3 ;
|
||||
|
||||
[SetUp]
|
||||
public void SetUp() => _builder = new UserGroupBuilder();
|
||||
|
||||
@@ -51,6 +56,36 @@ public class UserGroupTests
|
||||
Debug.Print(json);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void CanCheckIfUserHasAccessToLanguage()
|
||||
{
|
||||
var userGrp = new UserGroup(new MockShortStringHelper());
|
||||
userGrp.AddAllowedLanguage(_swedishLanguageId);
|
||||
userGrp.AddAllowedLanguage(_danishLanguageId);
|
||||
|
||||
IReadOnlyUserGroup grp = userGrp;
|
||||
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.IsTrue(grp.HasAccessToLanguage(_swedishLanguageId));
|
||||
Assert.IsTrue(grp.HasAccessToLanguage(_danishLanguageId));
|
||||
Assert.IsFalse(grp.HasAccessToLanguage(_germanLanguageId));
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void CheckIfAllowedLanugagesIsEmptyMeansAccessToAllLanguages()
|
||||
{
|
||||
IReadOnlyUserGroup userGrp = new UserGroup(new MockShortStringHelper());
|
||||
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.IsTrue(userGrp.HasAccessToLanguage(_swedishLanguageId));
|
||||
Assert.IsTrue(userGrp.HasAccessToLanguage(_danishLanguageId));
|
||||
Assert.IsTrue(userGrp.HasAccessToLanguage(_germanLanguageId));
|
||||
});
|
||||
}
|
||||
|
||||
private IUserGroup Build() =>
|
||||
_builder
|
||||
.WithId(3)
|
||||
|
||||
Reference in New Issue
Block a user