Files
Umbraco-CMS/tests/Umbraco.Tests.Integration/Umbraco.Core/Services/UserServiceCrudTests.cs
Kenn Jacobsen 8ad6c36038 Amend user start node handling (#16094)
* Amend user start node handling

* Add "has root access" to current user endpoint

* Add document and media root access to user response model

* Update OpenApi.json

* Applied API suggestions

---------

Co-authored-by: Sven Geusens <sge@umbraco.dk>
2024-05-03 08:47:10 +02:00

90 lines
3.5 KiB
C#

using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using Moq;
using NUnit.Framework;
using Umbraco.Cms.Core;
using Umbraco.Cms.Core.Configuration.Models;
using Umbraco.Cms.Core.Editors;
using Umbraco.Cms.Core.Events;
using Umbraco.Cms.Core.IO;
using Umbraco.Cms.Core.Models.Membership;
using Umbraco.Cms.Core.Persistence.Repositories;
using Umbraco.Cms.Core.Scoping;
using Umbraco.Cms.Core.Security;
using Umbraco.Cms.Core.Services;
using Umbraco.Cms.Core.Services.OperationStatus;
using Umbraco.Cms.Core.Strings;
using Umbraco.Cms.Tests.Common.Testing;
using Umbraco.Cms.Tests.Integration.Testing;
namespace Umbraco.Cms.Tests.Integration.Umbraco.Core.Services;
[TestFixture]
[UmbracoTest(Database = UmbracoTestOptions.Database.NewSchemaPerTest)]
public partial class UserServiceCrudTests : UmbracoIntegrationTestWithContent
{
private IUserGroupService UserGroupService => GetRequiredService<IUserGroupService>();
private IEntityService EntityService => GetRequiredService<IEntityService>();
protected override void ConfigureTestServices(IServiceCollection services)
{
base.ConfigureTestServices(services);
services.RemoveAll<IInviteUriProvider>();
services.AddScoped<IInviteUriProvider, TestUriProvider>();
}
// This is resolved from the service scope, so we have to add it to the service collection.
private class TestUriProvider : IInviteUriProvider
{
public Task<Attempt<Uri, UserOperationStatus>> CreateInviteUriAsync(IUser invitee)
{
var fakePath = "https://localhost:44331/fakeInviteEndpoint";
Attempt<Uri, UserOperationStatus> attempt = Attempt<Uri, UserOperationStatus>.Succeed(UserOperationStatus.Success, new Uri(fakePath));
return Task.FromResult(attempt);
}
}
private IUserService CreateUserService(
SecuritySettings? securitySettings = null,
IUserInviteSender? inviteSender = null,
ILocalLoginSettingProvider? localLoginSettingProvider = null)
{
securitySettings ??= GetRequiredService<IOptions<SecuritySettings>>().Value;
IOptions<SecuritySettings> securityOptions = Options.Create(securitySettings);
if (inviteSender is null)
{
var senderMock = new Mock<IUserInviteSender>();
senderMock.Setup(x => x.CanSendInvites()).Returns(true);
inviteSender = senderMock.Object;
}
localLoginSettingProvider ??= GetRequiredService<ILocalLoginSettingProvider>();
return new UserService(
GetRequiredService<ICoreScopeProvider>(),
GetRequiredService<ILoggerFactory>(),
GetRequiredService<IEventMessagesFactory>(),
GetRequiredService<IUserRepository>(),
GetRequiredService<IUserGroupRepository>(),
GetRequiredService<IOptions<GlobalSettings>>(),
securityOptions,
GetRequiredService<UserEditorAuthorizationHelper>(),
GetRequiredService<IServiceScopeFactory>(),
GetRequiredService<IEntityService>(),
localLoginSettingProvider,
inviteSender,
GetRequiredService<MediaFileManager>(),
GetRequiredService<ITemporaryFileService>(),
GetRequiredService<IShortStringHelper>(),
GetRequiredService<IOptions<ContentSettings>>(),
GetRequiredService<IIsoCodeValidator>(),
GetRequiredService<IUserForgotPasswordSender>());
}
}