diff --git a/src/Squidex.Domain.Apps.Entities/Apps/InviteCommandMiddleware.cs b/src/Squidex.Domain.Apps.Entities/Apps/InviteUserCommandMiddleware.cs similarity index 91% rename from src/Squidex.Domain.Apps.Entities/Apps/InviteCommandMiddleware.cs rename to src/Squidex.Domain.Apps.Entities/Apps/InviteUserCommandMiddleware.cs index a648ec8da..9372b80b5 100644 --- a/src/Squidex.Domain.Apps.Entities/Apps/InviteCommandMiddleware.cs +++ b/src/Squidex.Domain.Apps.Entities/Apps/InviteUserCommandMiddleware.cs @@ -14,11 +14,11 @@ using Squidex.Shared.Users; namespace Squidex.Domain.Apps.Entities.Apps { - public sealed class InviteCommandMiddleware : ICommandMiddleware + public sealed class InviteUserCommandMiddleware : ICommandMiddleware { private readonly IUserResolver userResolver; - public InviteCommandMiddleware(IUserResolver userResolver) + public InviteUserCommandMiddleware(IUserResolver userResolver) { Guard.NotNull(userResolver, nameof(userResolver)); diff --git a/src/Squidex/Config/Domain/EntitiesServices.cs b/src/Squidex/Config/Domain/EntitiesServices.cs index 287ea109c..c1596553d 100644 --- a/src/Squidex/Config/Domain/EntitiesServices.cs +++ b/src/Squidex/Config/Domain/EntitiesServices.cs @@ -160,7 +160,7 @@ namespace Squidex.Config.Domain services.AddSingletonAs() .As(); - services.AddSingletonAs() + services.AddSingletonAs() .As(); services.AddSingletonAs() diff --git a/tests/Squidex.Domain.Apps.Entities.Tests/Apps/InviteUserCommandMiddlewareTests.cs b/tests/Squidex.Domain.Apps.Entities.Tests/Apps/InviteUserCommandMiddlewareTests.cs new file mode 100644 index 000000000..9db5dca19 --- /dev/null +++ b/tests/Squidex.Domain.Apps.Entities.Tests/Apps/InviteUserCommandMiddlewareTests.cs @@ -0,0 +1,82 @@ +// ========================================================================== +// Squidex Headless CMS +// ========================================================================== +// Copyright (c) Squidex UG (haftungsbeschraenkt) +// All rights reserved. Licensed under the MIT license. +// ========================================================================== + +using System.Threading.Tasks; +using FakeItEasy; +using Squidex.Domain.Apps.Entities.Apps.Commands; +using Squidex.Infrastructure.Commands; +using Squidex.Shared.Users; +using Xunit; + +namespace Squidex.Domain.Apps.Entities.Apps +{ + public class InviteUserCommandMiddlewareTests + { + private readonly IUserResolver userResolver = A.Fake(); + private readonly ICommandBus commandBus = A.Fake(); + private readonly InviteUserCommandMiddleware sut; + + public InviteUserCommandMiddlewareTests() + { + sut = new InviteUserCommandMiddleware(userResolver); + } + + [Fact] + public async Task Should_invite_user_and_change_result() + { + var command = new AssignContributor { ContributorId = "me@email.com", IsInviting = true }; + var context = new CommandContext(command, commandBus); + + A.CallTo(() => userResolver.CreateUserIfNotExists("me@email.com")) + .Returns(true); + + var result = EntityCreatedResult.Create("13", 13L); + + context.Complete(result); + + await sut.HandleAsync(context); + + Assert.Same(context.Result().Id, result); + + A.CallTo(() => userResolver.CreateUserIfNotExists("me@email.com")) + .MustHaveHappened(); + } + + [Fact] + public async Task Should_invite_user_and_not_change_result_if_not_added() + { + var command = new AssignContributor { ContributorId = "me@email.com", IsInviting = true }; + var context = new CommandContext(command, commandBus); + + A.CallTo(() => userResolver.CreateUserIfNotExists("me@email.com")) + .Returns(false); + + var result = EntityCreatedResult.Create("13", 13L); + + context.Complete(result); + + await sut.HandleAsync(context); + + Assert.Same(context.Result>(), result); + + A.CallTo(() => userResolver.CreateUserIfNotExists("me@email.com")) + .MustHaveHappened(); + } + + [Fact] + public async Task Should_not_calls_user_resolver_if_not_email() + { + var command = new AssignContributor { ContributorId = "123", IsInviting = true }; + var context = new CommandContext(command, commandBus); + + await sut.HandleAsync(context); + + A.CallTo(() => userResolver.CreateUserIfNotExists(A.Ignored)) + .MustNotHaveHappened(); + } + } +} diff --git a/tests/Squidex.Infrastructure.Tests/GravatarHelperTests.cs b/tests/Squidex.Infrastructure.Tests/GravatarHelperTests.cs index 65cff970b..7f13d73a8 100644 --- a/tests/Squidex.Infrastructure.Tests/GravatarHelperTests.cs +++ b/tests/Squidex.Infrastructure.Tests/GravatarHelperTests.cs @@ -12,25 +12,25 @@ namespace Squidex.Infrastructure public class GravatarHelperTests { [Theory] - [InlineData("MyEmailAddress@example.com ")] - [InlineData("MyEmailAddress@example.com")] - [InlineData("myemailaddress@example.com")] + [InlineData("me@email.com ")] + [InlineData("me@email.com")] + [InlineData("ME@email.com")] public void Should_generate_picture_url(string email) { var url = GravatarHelper.CreatePictureUrl(email); - Assert.Equal("https://www.gravatar.com/avatar/0bc83cb571cd1c50ba6f3e8a78ef1346", url); + Assert.Equal("https://www.gravatar.com/avatar/8f9dc04e6abdcc9fea53e81945c7294b", url); } [Theory] - [InlineData("MyEmailAddress@example.com ")] - [InlineData("MyEmailAddress@example.com")] - [InlineData("myemailaddress@example.com")] + [InlineData("me@email.com ")] + [InlineData("me@email.com")] + [InlineData("ME@email.com")] public void Should_generate_profile_url(string email) { var url = GravatarHelper.CreateProfileUrl(email); - Assert.Equal("https://www.gravatar.com/0bc83cb571cd1c50ba6f3e8a78ef1346", url); + Assert.Equal("https://www.gravatar.com/8f9dc04e6abdcc9fea53e81945c7294b", url); } } } \ No newline at end of file diff --git a/tests/Squidex.Infrastructure.Tests/Json/ClaimsPrincipalConverterTests.cs b/tests/Squidex.Infrastructure.Tests/Json/ClaimsPrincipalConverterTests.cs index 76e65659e..65005939e 100644 --- a/tests/Squidex.Infrastructure.Tests/Json/ClaimsPrincipalConverterTests.cs +++ b/tests/Squidex.Infrastructure.Tests/Json/ClaimsPrincipalConverterTests.cs @@ -23,8 +23,8 @@ namespace Squidex.Infrastructure.Json new ClaimsIdentity( new[] { - new Claim("email", "me@email.de"), - new Claim("username", "me@email.de") + new Claim("email", "me@email.com"), + new Claim("username", "me@email.com") }, "Cookie"), new ClaimsIdentity( diff --git a/tests/Squidex.Infrastructure.Tests/StringExtensionsTests.cs b/tests/Squidex.Infrastructure.Tests/StringExtensionsTests.cs index 23402f29b..6a923a5f1 100644 --- a/tests/Squidex.Infrastructure.Tests/StringExtensionsTests.cs +++ b/tests/Squidex.Infrastructure.Tests/StringExtensionsTests.cs @@ -15,9 +15,9 @@ namespace Squidex.Infrastructure [Theory] [InlineData(null, false)] [InlineData("", false)] - [InlineData("name", false)] - [InlineData("name@@web.de", false)] - [InlineData("name@web.de", true)] + [InlineData("me", false)] + [InlineData("me@@web.com", false)] + [InlineData("me@web.com", true)] public void Should_check_email(string email, bool isEmail) { Assert.Equal(isEmail, email.IsEmail());