diff --git a/src/Orchard.Tests.Modules/Roles/Services/RoleServiceTests.cs b/src/Orchard.Tests.Modules/Roles/Services/RoleServiceTests.cs index 4138b2796..55e9aa329 100644 --- a/src/Orchard.Tests.Modules/Roles/Services/RoleServiceTests.cs +++ b/src/Orchard.Tests.Modules/Roles/Services/RoleServiceTests.cs @@ -86,5 +86,20 @@ namespace Orchard.Tests.Modules.Roles.Services { Assert.That(result.Count(), Is.EqualTo(4)); } } + + [Test] + public void ShouldNotCreateARoleTwice() { + var service = _container.Resolve(); + service.CreateRole("one"); + service.CreateRole("two"); + service.CreateRole("one"); + + ClearSession(); + + var roles = service.GetRoles(); + Assert.That(roles.Count(), Is.EqualTo(2)); + Assert.That(roles, Has.Some.Property("Name").EqualTo("one")); + Assert.That(roles, Has.Some.Property("Name").EqualTo("two")); + } } } diff --git a/src/Orchard.Web/Modules/Orchard.Roles/Services/RoleService.cs b/src/Orchard.Web/Modules/Orchard.Roles/Services/RoleService.cs index 7bfa06e5a..f39851411 100644 --- a/src/Orchard.Web/Modules/Orchard.Roles/Services/RoleService.cs +++ b/src/Orchard.Web/Modules/Orchard.Roles/Services/RoleService.cs @@ -56,6 +56,9 @@ namespace Orchard.Roles.Services { } public void CreateRole(string roleName) { + if (GetRoleByName(roleName) != null) + return; + _roleRepository.Create(new RoleRecord { Name = roleName }); TriggerSignal(); }