diff --git a/src/Umbraco.Cms.Api.Management/Controllers/Server/InformationServerController.cs b/src/Umbraco.Cms.Api.Management/Controllers/Server/InformationServerController.cs index 0a6fb65ce2..3b333ce503 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/Server/InformationServerController.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/Server/InformationServerController.cs @@ -10,21 +10,21 @@ namespace Umbraco.Cms.Api.Management.Controllers.Server; [ApiVersion("1.0")] public class InformationServerController : ServerControllerBase { - private readonly ISystemInformationService _systemInformationService; - private readonly IUmbracoMapper _mapper; + private readonly IServerInformationService _serverInformationService; + private readonly IUmbracoMapper _umbracoMapper; - public InformationServerController(ISystemInformationService systemInformationService, IUmbracoMapper mapper) + public InformationServerController(IServerInformationService serverInformationService, IUmbracoMapper umbracoMapper) { - _systemInformationService = systemInformationService; - _mapper = mapper; + _serverInformationService = serverInformationService; + _umbracoMapper = umbracoMapper; } [HttpGet("information")] [MapToApiVersion("1.0")] [ProducesResponseType(typeof(ServerInformationResponseModel), StatusCodes.Status200OK)] - public Task GetServerInformation() + public Task Information() { - ServerInformationResponseModel responseModel = _mapper.Map(_systemInformationService.GetSystemInformation())!; + ServerInformationResponseModel responseModel = _umbracoMapper.Map(_serverInformationService.GetServerInformation())!; return Task.FromResult(Ok(responseModel)); } diff --git a/src/Umbraco.Cms.Api.Management/Controllers/Server/TroubleshootingServerController.cs b/src/Umbraco.Cms.Api.Management/Controllers/Server/TroubleshootingServerController.cs new file mode 100644 index 0000000000..dbcb0f07f3 --- /dev/null +++ b/src/Umbraco.Cms.Api.Management/Controllers/Server/TroubleshootingServerController.cs @@ -0,0 +1,31 @@ +using Asp.Versioning; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Umbraco.Cms.Api.Management.ViewModels.Server; +using Umbraco.Cms.Core.Mapping; +using Umbraco.Cms.Core.Services; + +namespace Umbraco.Cms.Api.Management.Controllers.Server; + +[ApiVersion("1.0")] +public class TroubleshootingServerController : ServerControllerBase +{ + private readonly ISystemTroubleshootingInformationService _systemTroubleshootingInformationService; + private readonly IUmbracoMapper _mapper; + + public TroubleshootingServerController(ISystemTroubleshootingInformationService systemTroubleshootingInformationService, IUmbracoMapper mapper) + { + _systemTroubleshootingInformationService = systemTroubleshootingInformationService; + _mapper = mapper; + } + + [HttpGet("troubleshooting")] + [MapToApiVersion("1.0")] + [ProducesResponseType(typeof(ServerTroubleshootingResponseModel), StatusCodes.Status200OK)] + public Task GetTroubleshooting() + { + ServerTroubleshootingResponseModel responseModel = _mapper.Map(_systemTroubleshootingInformationService.GetTroubleshootingInformation())!; + + return Task.FromResult(Ok(responseModel)); + } +} diff --git a/src/Umbraco.Cms.Api.Management/Controllers/Server/VersionServerController.cs b/src/Umbraco.Cms.Api.Management/Controllers/Server/VersionServerController.cs deleted file mode 100644 index 41efed5a5d..0000000000 --- a/src/Umbraco.Cms.Api.Management/Controllers/Server/VersionServerController.cs +++ /dev/null @@ -1,26 +0,0 @@ -using Asp.Versioning; -using Microsoft.AspNetCore.Http; -using Microsoft.AspNetCore.Mvc; -using Umbraco.Cms.Core.Configuration; -using Umbraco.Cms.Api.Management.ViewModels.Server; -using Umbraco.Extensions; - -namespace Umbraco.Cms.Api.Management.Controllers.Server; - -[ApiVersion("1.0")] -public class VersionServerController : ServerControllerBase -{ - private readonly IUmbracoVersion _umbracoVersion; - - public VersionServerController(IUmbracoVersion umbracoVersion) => _umbracoVersion = umbracoVersion; - - [HttpGet("version")] - [MapToApiVersion("1.0")] - [ProducesResponseType(typeof(ProblemDetails), StatusCodes.Status400BadRequest)] - [ProducesResponseType(typeof(VersionResponseModel), StatusCodes.Status200OK)] - public async Task> Get() => - await Task.FromResult(new VersionResponseModel - { - Version = _umbracoVersion.SemanticVersion.ToSemanticStringWithoutBuild() - }); -} diff --git a/src/Umbraco.Cms.Api.Management/DependencyInjection/ServerBuilderExtensions.cs b/src/Umbraco.Cms.Api.Management/DependencyInjection/ServerBuilderExtensions.cs index abb3257db8..43fa908d67 100644 --- a/src/Umbraco.Cms.Api.Management/DependencyInjection/ServerBuilderExtensions.cs +++ b/src/Umbraco.Cms.Api.Management/DependencyInjection/ServerBuilderExtensions.cs @@ -9,7 +9,7 @@ internal static class ServerBuilderExtensions internal static IUmbracoBuilder AddServer(this IUmbracoBuilder builder) { builder.WithCollectionBuilder() - .Add(); + .Add(); return builder; } diff --git a/src/Umbraco.Cms.Api.Management/Mapping/Server/ServerConfigurationMapDefinition.cs b/src/Umbraco.Cms.Api.Management/Mapping/Server/ServerConfigurationMapDefinition.cs new file mode 100644 index 0000000000..5fd4186576 --- /dev/null +++ b/src/Umbraco.Cms.Api.Management/Mapping/Server/ServerConfigurationMapDefinition.cs @@ -0,0 +1,32 @@ +using Umbraco.Cms.Api.Management.ViewModels.Server; +using Umbraco.Cms.Core.Mapping; +using Umbraco.Cms.Core.Models; +using Umbraco.Extensions; + +namespace Umbraco.Cms.Api.Management.Mapping.Server; + +public class ServerConfigurationMapDefinition : IMapDefinition +{ + public void DefineMaps(IUmbracoMapper mapper) + { + mapper.Define, ServerTroubleshootingResponseModel>((_, _) => new ServerTroubleshootingResponseModel { Items = Array.Empty() }, Map); + mapper.Define((_, _) => new ServerInformationResponseModel() , Map); + } + + // Umbraco.Code.MapAll + private void Map(IDictionary source, ServerTroubleshootingResponseModel target, MapperContext context) + => target.Items = source.Select(kvp => new ServerConfigurationItemResponseModel + { + Name = kvp.Key, + Data = kvp.Value + }); + + // Umbraco.Code.MapAll + private void Map(ServerInformation source, ServerInformationResponseModel target, MapperContext context) + { + target.RuntimeMode = source.RuntimeMode; + target.Version = source.SemVersion.ToSemanticString(); + target.AssemblyVersion = source.SemVersion.ToSemanticStringWithoutBuild(); + target.BaseUtcOffset = source.TimeZoneInfo.BaseUtcOffset.ToString(); + } +} diff --git a/src/Umbraco.Cms.Api.Management/Mapping/Server/ServerInformationMapDefinition.cs b/src/Umbraco.Cms.Api.Management/Mapping/Server/ServerInformationMapDefinition.cs deleted file mode 100644 index 2b37162a84..0000000000 --- a/src/Umbraco.Cms.Api.Management/Mapping/Server/ServerInformationMapDefinition.cs +++ /dev/null @@ -1,20 +0,0 @@ -using Umbraco.Cms.Api.Management.ViewModels.Server; -using Umbraco.Cms.Core.Mapping; - -namespace Umbraco.Cms.Api.Management.Mapping.Server; - -public class ServerInformationMapDefinition : IMapDefinition -{ - public void DefineMaps(IUmbracoMapper mapper) - { - mapper.Define, ServerInformationResponseModel>((_, _) => new ServerInformationResponseModel { Items = Array.Empty() }, Map); - } - - // Umbraco.Code.MapAll - private void Map(IDictionary source, ServerInformationResponseModel target, MapperContext context) - => target.Items = source.Select(kvp => new ServerInformationItemResponseModel - { - Name = kvp.Key, - Data = kvp.Value - }); -} diff --git a/src/Umbraco.Cms.Api.Management/OpenApi.json b/src/Umbraco.Cms.Api.Management/OpenApi.json index d188c75c80..114d0ce46c 100644 --- a/src/Umbraco.Cms.Api.Management/OpenApi.json +++ b/src/Umbraco.Cms.Api.Management/OpenApi.json @@ -13631,33 +13631,13 @@ } } }, - "/umbraco/management/api/v1/server/version": { + "/umbraco/management/api/v1/server/troubleshooting": { "get": { "tags": [ "Server" ], - "operationId": "GetServerVersion", + "operationId": "GetServerTroubleshooting", "responses": { - "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - }, - "text/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - }, - "text/plain": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, "200": { "description": "Success", "content": { @@ -13665,7 +13645,7 @@ "schema": { "oneOf": [ { - "$ref": "#/components/schemas/VersionResponseModel" + "$ref": "#/components/schemas/ServerTroubleshootingResponseModel" } ] } @@ -13674,7 +13654,7 @@ "schema": { "oneOf": [ { - "$ref": "#/components/schemas/VersionResponseModel" + "$ref": "#/components/schemas/ServerTroubleshootingResponseModel" } ] } @@ -13683,7 +13663,7 @@ "schema": { "oneOf": [ { - "$ref": "#/components/schemas/VersionResponseModel" + "$ref": "#/components/schemas/ServerTroubleshootingResponseModel" } ] } @@ -17004,6 +16984,9 @@ }, "401": { "description": "The resource is protected and requires an authentication token" + }, + "403": { + "description": "The authenticated user do not have access to this resource" } }, "security": [ @@ -17085,6 +17068,9 @@ }, "401": { "description": "The resource is protected and requires an authentication token" + }, + "403": { + "description": "The authenticated user do not have access to this resource" } }, "security": [ @@ -23828,6 +23814,14 @@ ], "type": "string" }, + "RuntimeModeModel": { + "enum": [ + "BackofficeDevelopment", + "Development", + "Production" + ], + "type": "string" + }, "SavedLogSearchPresenationBaseModel": { "required": [ "name", @@ -23946,7 +23940,26 @@ }, "additionalProperties": false }, - "ServerInformationItemResponseModel": { + "ServerConfigurationBaseModel": { + "required": [ + "items" + ], + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/ServerConfigurationItemResponseModel" + } + ] + } + } + }, + "additionalProperties": false + }, + "ServerConfigurationItemResponseModel": { "required": [ "data", "name" @@ -23964,19 +23977,24 @@ }, "ServerInformationResponseModel": { "required": [ - "items" + "assemblyVersion", + "baseUtcOffset", + "runtimeMode", + "version" ], "type": "object", "properties": { - "items": { - "type": "array", - "items": { - "oneOf": [ - { - "$ref": "#/components/schemas/ServerInformationItemResponseModel" - } - ] - } + "version": { + "type": "string" + }, + "assemblyVersion": { + "type": "string" + }, + "baseUtcOffset": { + "type": "string" + }, + "runtimeMode": { + "$ref": "#/components/schemas/RuntimeModeModel" } }, "additionalProperties": false @@ -23993,6 +24011,15 @@ }, "additionalProperties": false }, + "ServerTroubleshootingResponseModel": { + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/ServerConfigurationBaseModel" + } + ], + "additionalProperties": false + }, "SetAvatarRequestModel": { "required": [ "fileId" @@ -25676,19 +25703,6 @@ } }, "additionalProperties": false - }, - "VersionResponseModel": { - "required": [ - "version" - ], - "type": "object", - "properties": { - "version": { - "minLength": 1, - "type": "string" - } - }, - "additionalProperties": false } }, "securitySchemes": { @@ -25705,4 +25719,4 @@ } } } -} \ No newline at end of file +} diff --git a/src/Umbraco.Cms.Api.Management/ViewModels/Server/ServerConfigurationBaseModel.cs b/src/Umbraco.Cms.Api.Management/ViewModels/Server/ServerConfigurationBaseModel.cs new file mode 100644 index 0000000000..e9e818146a --- /dev/null +++ b/src/Umbraco.Cms.Api.Management/ViewModels/Server/ServerConfigurationBaseModel.cs @@ -0,0 +1,6 @@ +namespace Umbraco.Cms.Api.Management.ViewModels.Server; + +public class ServerConfigurationBaseModel +{ + public IEnumerable Items { get; set; } = Enumerable.Empty(); +} diff --git a/src/Umbraco.Cms.Api.Management/ViewModels/Server/ServerInformationItemResponseModel.cs b/src/Umbraco.Cms.Api.Management/ViewModels/Server/ServerConfigurationItemResponseModel.cs similarity index 75% rename from src/Umbraco.Cms.Api.Management/ViewModels/Server/ServerInformationItemResponseModel.cs rename to src/Umbraco.Cms.Api.Management/ViewModels/Server/ServerConfigurationItemResponseModel.cs index ac63353188..efdbe8145f 100644 --- a/src/Umbraco.Cms.Api.Management/ViewModels/Server/ServerInformationItemResponseModel.cs +++ b/src/Umbraco.Cms.Api.Management/ViewModels/Server/ServerConfigurationItemResponseModel.cs @@ -1,6 +1,6 @@ namespace Umbraco.Cms.Api.Management.ViewModels.Server; -public class ServerInformationItemResponseModel +public class ServerConfigurationItemResponseModel { public required string Name { get; set; } diff --git a/src/Umbraco.Cms.Api.Management/ViewModels/Server/ServerInformationResponseModel.cs b/src/Umbraco.Cms.Api.Management/ViewModels/Server/ServerInformationResponseModel.cs index 460630ef7f..ecee4d9b89 100644 --- a/src/Umbraco.Cms.Api.Management/ViewModels/Server/ServerInformationResponseModel.cs +++ b/src/Umbraco.Cms.Api.Management/ViewModels/Server/ServerInformationResponseModel.cs @@ -1,6 +1,11 @@ -namespace Umbraco.Cms.Api.Management.ViewModels.Server; +using Umbraco.Cms.Core.Configuration.Models; + +namespace Umbraco.Cms.Api.Management.ViewModels.Server; public class ServerInformationResponseModel { - public required IEnumerable Items { get; set; } + public string Version { get; set; } = string.Empty; + public string AssemblyVersion { get; set; } = string.Empty; + public string BaseUtcOffset { get; set; } = string.Empty; + public RuntimeMode RuntimeMode { get; set; } } diff --git a/src/Umbraco.Cms.Api.Management/ViewModels/Server/ServerTroubleshootingResponseModel.cs b/src/Umbraco.Cms.Api.Management/ViewModels/Server/ServerTroubleshootingResponseModel.cs new file mode 100644 index 0000000000..ae4992b187 --- /dev/null +++ b/src/Umbraco.Cms.Api.Management/ViewModels/Server/ServerTroubleshootingResponseModel.cs @@ -0,0 +1,5 @@ +namespace Umbraco.Cms.Api.Management.ViewModels.Server; + +public class ServerTroubleshootingResponseModel : ServerConfigurationBaseModel +{ +} diff --git a/src/Umbraco.Core/Models/ServerInformation.cs b/src/Umbraco.Core/Models/ServerInformation.cs new file mode 100644 index 0000000000..c916164f0d --- /dev/null +++ b/src/Umbraco.Core/Models/ServerInformation.cs @@ -0,0 +1,11 @@ +using Umbraco.Cms.Core.Configuration.Models; +using Umbraco.Cms.Core.Semver; + +namespace Umbraco.Cms.Core.Models; + +public class ServerInformation(SemVersion semVersion, TimeZoneInfo timeZoneInfo, RuntimeMode runtimeMode) +{ + public SemVersion SemVersion { get; } = semVersion; + public TimeZoneInfo TimeZoneInfo { get; } = timeZoneInfo; + public RuntimeMode RuntimeMode { get; } = runtimeMode; +} diff --git a/src/Umbraco.Core/Services/IServerInformationService.cs b/src/Umbraco.Core/Services/IServerInformationService.cs new file mode 100644 index 0000000000..228b84c3dd --- /dev/null +++ b/src/Umbraco.Core/Services/IServerInformationService.cs @@ -0,0 +1,28 @@ +using Microsoft.Extensions.Options; +using Umbraco.Cms.Core.Configuration; +using Umbraco.Cms.Core.Configuration.Models; +using Umbraco.Cms.Core.Models; + +namespace Umbraco.Cms.Core.Services; + +public interface IServerInformationService +{ + ServerInformation GetServerInformation(); +} + +public class ServerInformationService : IServerInformationService +{ + private readonly IUmbracoVersion _umbracoVersion; + private readonly TimeProvider _timeProvider; + private RuntimeSettings _runtimeSettings; + + public ServerInformationService(IUmbracoVersion umbracoVersion, TimeProvider timeProvider, IOptionsMonitor runtimeSettingsOptionsMonitor) + { + _umbracoVersion = umbracoVersion; + _timeProvider = timeProvider; + _runtimeSettings = runtimeSettingsOptionsMonitor.CurrentValue; + runtimeSettingsOptionsMonitor.OnChange(runtimeSettings => _runtimeSettings = runtimeSettings); + } + + public ServerInformation GetServerInformation() => new(_umbracoVersion.SemanticVersion, _timeProvider.LocalTimeZone, _runtimeSettings.Mode); +} diff --git a/src/Umbraco.Core/Services/ISystemInformationService.cs b/src/Umbraco.Core/Services/ISystemTroubleshootingInformationService.cs similarity index 56% rename from src/Umbraco.Core/Services/ISystemInformationService.cs rename to src/Umbraco.Core/Services/ISystemTroubleshootingInformationService.cs index fb16c65468..697288ccfe 100644 --- a/src/Umbraco.Core/Services/ISystemInformationService.cs +++ b/src/Umbraco.Core/Services/ISystemTroubleshootingInformationService.cs @@ -1,10 +1,13 @@ -namespace Umbraco.Cms.Core.Services; +using Umbraco.Cms.Core.Models; -public interface ISystemInformationService +namespace Umbraco.Cms.Core.Services; + +public interface ISystemTroubleshootingInformationService { /// /// Retrieves various system/server information (i.e. OS and framework version) and Umbraco configuration (i.e. runtime mode and server role). /// /// Key/value pairs of system information - IDictionary GetSystemInformation(); + IDictionary GetTroubleshootingInformation(); } + diff --git a/src/Umbraco.Core/Services/IUserDataService.cs b/src/Umbraco.Core/Services/IUserDataService.cs index c58573b8f9..d0eb9a4df6 100644 --- a/src/Umbraco.Core/Services/IUserDataService.cs +++ b/src/Umbraco.Core/Services/IUserDataService.cs @@ -2,9 +2,9 @@ using Umbraco.Cms.Core.Models; namespace Umbraco.Cms.Core.Services; -[Obsolete($"Use {nameof(ISystemInformationService)} instead. Will be removed in V16.")] +[Obsolete($"Use {nameof(ISystemTroubleshootingInformationService)} instead. Will be removed in V16.")] public interface IUserDataService { - [Obsolete($"Use {nameof(ISystemInformationService)} instead. Will be removed in V16.")] + [Obsolete($"Use {nameof(ISystemTroubleshootingInformationService)} instead. Will be removed in V16.")] IEnumerable GetUserData(); } diff --git a/src/Umbraco.Core/Services/UserDataService.cs b/src/Umbraco.Core/Services/UserDataService.cs index 102385d621..3b6c8092a1 100644 --- a/src/Umbraco.Core/Services/UserDataService.cs +++ b/src/Umbraco.Core/Services/UserDataService.cs @@ -7,23 +7,23 @@ using Umbraco.Cms.Core.Models; namespace Umbraco.Cms.Core.Services; -[Obsolete($"Use {nameof(ISystemInformationService)} instead. Will be removed in V16.")] +[Obsolete($"Use {nameof(ISystemTroubleshootingInformationService)} instead. Will be removed in V16.")] public class UserDataService : IUserDataService { - private readonly ISystemInformationService _systemInformationService; + private readonly ISystemTroubleshootingInformationService _systemTroubleshootingInformationService; - [Obsolete($"Use the constructor that accepts {nameof(ISystemInformationService)}")] + [Obsolete($"Use the constructor that accepts {nameof(ISystemTroubleshootingInformationService)}")] public UserDataService(IUmbracoVersion version, ILocalizationService localizationService) - : this(version, localizationService, StaticServiceProvider.Instance.GetRequiredService()) + : this(version, localizationService, StaticServiceProvider.Instance.GetRequiredService()) { } - public UserDataService(IUmbracoVersion version, ILocalizationService localizationService, ISystemInformationService systemInformationService) - => _systemInformationService = systemInformationService; + public UserDataService(IUmbracoVersion version, ILocalizationService localizationService, ISystemTroubleshootingInformationService systemTroubleshootingInformationService) + => _systemTroubleshootingInformationService = systemTroubleshootingInformationService; - [Obsolete($"Use {nameof(ISystemInformationService)} instead. Will be removed in V16.")] + [Obsolete($"Use {nameof(ISystemTroubleshootingInformationService)} instead. Will be removed in V16.")] public IEnumerable GetUserData() => - _systemInformationService.GetSystemInformation().Select(kvp => new UserData(kvp.Key, kvp.Value)).ToArray(); + _systemTroubleshootingInformationService.GetTroubleshootingInformation().Select(kvp => new UserData(kvp.Key, kvp.Value)).ToArray(); public bool IsRunningInProcessIIS() { diff --git a/src/Umbraco.Infrastructure/DependencyInjection/UmbracoBuilder.Services.cs b/src/Umbraco.Infrastructure/DependencyInjection/UmbracoBuilder.Services.cs index 3a0356cf8a..e22d06ae68 100644 --- a/src/Umbraco.Infrastructure/DependencyInjection/UmbracoBuilder.Services.cs +++ b/src/Umbraco.Infrastructure/DependencyInjection/UmbracoBuilder.Services.cs @@ -48,6 +48,7 @@ public static partial class UmbracoBuilderExtensions builder.Services.AddUnique(); builder.Services.AddUnique(); builder.Services.AddUnique(); + builder.Services.AddUnique(); builder.Services.AddUnique(); builder.Services.AddUnique(); builder.Services.AddTransient(CreateLocalizedTextServiceFileSourcesFactory); @@ -58,7 +59,7 @@ public static partial class UmbracoBuilderExtensions builder.Services.AddUnique(); builder.Services.AddTransient(); builder.Services.AddUnique(); - builder.Services.AddUnique(); + builder.Services.AddUnique(); builder.Services.AddTransient(); builder.Services.AddSingleton(); builder.Services.AddTransient(); diff --git a/src/Umbraco.Infrastructure/DependencyInjection/UmbracoBuilder.TelemetryProviders.cs b/src/Umbraco.Infrastructure/DependencyInjection/UmbracoBuilder.TelemetryProviders.cs index 0a89c20d2f..f3fa362871 100644 --- a/src/Umbraco.Infrastructure/DependencyInjection/UmbracoBuilder.TelemetryProviders.cs +++ b/src/Umbraco.Infrastructure/DependencyInjection/UmbracoBuilder.TelemetryProviders.cs @@ -18,7 +18,7 @@ public static class UmbracoBuilder_TelemetryProviders builder.Services.AddTransient(); builder.Services.AddTransient(); builder.Services.AddTransient(); - builder.Services.AddTransient(); + builder.Services.AddTransient(); builder.Services.AddTransient(); return builder; } diff --git a/src/Umbraco.Infrastructure/Telemetry/Providers/SystemInformationTelemetryProvider.cs b/src/Umbraco.Infrastructure/Telemetry/Providers/SystemTroubleshootingInformationTelemetryProvider.cs similarity index 94% rename from src/Umbraco.Infrastructure/Telemetry/Providers/SystemInformationTelemetryProvider.cs rename to src/Umbraco.Infrastructure/Telemetry/Providers/SystemTroubleshootingInformationTelemetryProvider.cs index 694f1420bf..31944cdf17 100644 --- a/src/Umbraco.Infrastructure/Telemetry/Providers/SystemInformationTelemetryProvider.cs +++ b/src/Umbraco.Infrastructure/Telemetry/Providers/SystemTroubleshootingInformationTelemetryProvider.cs @@ -14,7 +14,7 @@ using Umbraco.Extensions; namespace Umbraco.Cms.Infrastructure.Telemetry.Providers; -internal class SystemInformationTelemetryProvider : IDetailedTelemetryProvider, ISystemInformationService +internal class SystemTroubleshootingInformationTelemetryProvider : IDetailedTelemetryProvider, ISystemTroubleshootingInformationService { private readonly IHostEnvironment _hostEnvironment; private readonly HostingSettings _hostingSettings; @@ -26,7 +26,7 @@ internal class SystemInformationTelemetryProvider : IDetailedTelemetryProvider, private readonly RuntimeSettings _runtimeSettings; [Obsolete($"Use the constructor that does not take an IOptionsMonitor parameter, scheduled for removal in V12")] - public SystemInformationTelemetryProvider( + public SystemTroubleshootingInformationTelemetryProvider( IUmbracoVersion version, ILocalizationService localizationService, IOptionsMonitor modelsBuilderSettings, @@ -40,7 +40,7 @@ internal class SystemInformationTelemetryProvider : IDetailedTelemetryProvider, { } - public SystemInformationTelemetryProvider( + public SystemTroubleshootingInformationTelemetryProvider( IUmbracoVersion version, ILocalizationService localizationService, IOptionsMonitor modelsBuilderSettings, @@ -94,7 +94,7 @@ internal class SystemInformationTelemetryProvider : IDetailedTelemetryProvider, }; /// - public IDictionary GetSystemInformation() => + public IDictionary GetTroubleshootingInformation() => new Dictionary { { "Server OS", ServerOs }, diff --git a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Services/SystemInformationServiceTests.cs b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Services/SystemInformationServiceTests.cs index b1d2d0f08d..628f33b5ab 100644 --- a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Services/SystemInformationServiceTests.cs +++ b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Services/SystemInformationServiceTests.cs @@ -30,7 +30,7 @@ public class SystemInformationServiceTests public void GetCorrectDefaultLanguageTest(string culture) { var userDataService = CreateSystemInformationService(culture); - var defaultLanguage = userDataService.GetSystemInformation().FirstOrDefault(x => x.Key == "Default Language"); + var defaultLanguage = userDataService.GetTroubleshootingInformation().FirstOrDefault(x => x.Key == "Default Language"); Assert.Multiple(() => { Assert.IsNotNull(defaultLanguage); @@ -47,7 +47,7 @@ public class SystemInformationServiceTests { Thread.CurrentThread.CurrentCulture = new CultureInfo(culture); var userDataService = CreateSystemInformationService(culture); - var currentCulture = userDataService.GetSystemInformation().FirstOrDefault(x => x.Key == "Current Culture"); + var currentCulture = userDataService.GetTroubleshootingInformation().FirstOrDefault(x => x.Key == "Current Culture"); Assert.Multiple(() => { Assert.IsNotNull(currentCulture); @@ -64,7 +64,7 @@ public class SystemInformationServiceTests { Thread.CurrentThread.CurrentUICulture = new CultureInfo(culture); var userDataService = CreateSystemInformationService(culture); - var currentCulture = userDataService.GetSystemInformation().FirstOrDefault(x => x.Key == "Current UI Culture"); + var currentCulture = userDataService.GetTroubleshootingInformation().FirstOrDefault(x => x.Key == "Current UI Culture"); Assert.Multiple(() => { Assert.IsNotNull(currentCulture); @@ -80,7 +80,7 @@ public class SystemInformationServiceTests public void RunTimeInformationNotNullTest(string culture) { var userDataService = CreateSystemInformationService(culture); - var userData = userDataService.GetSystemInformation().ToList(); + var userData = userDataService.GetTroubleshootingInformation().ToList(); Assert.Multiple(() => { Assert.IsNotNull(userData.Select(x => x.Key == "Server OS")); @@ -97,7 +97,7 @@ public class SystemInformationServiceTests public void ReportsModelsModeCorrectly(ModelsMode modelsMode) { var userDataService = CreateSystemInformationService(modelsMode: modelsMode); - var userData = userDataService.GetSystemInformation().ToArray(); + var userData = userDataService.GetTroubleshootingInformation().ToArray(); var actual = userData.FirstOrDefault(x => x.Key == "Models Builder Mode"); Assert.IsNotNull(actual.Value); @@ -111,7 +111,7 @@ public class SystemInformationServiceTests public void ReportsRuntimeModeCorrectly(RuntimeMode runtimeMode) { var userDataService = CreateSystemInformationService(runtimeMode: runtimeMode); - var userData = userDataService.GetSystemInformation().ToArray(); + var userData = userDataService.GetTroubleshootingInformation().ToArray(); var actual = userData.FirstOrDefault(x => x.Key == "Runtime Mode"); Assert.IsNotNull(actual.Value); @@ -124,14 +124,14 @@ public class SystemInformationServiceTests public void ReportsDebugModeCorrectly(bool isDebug) { var userDataService = CreateSystemInformationService(isDebug: isDebug); - var userData = userDataService.GetSystemInformation().ToArray(); + var userData = userDataService.GetTroubleshootingInformation().ToArray(); var actual = userData.FirstOrDefault(x => x.Key == "Debug Mode"); Assert.IsNotNull(actual.Value); Assert.AreEqual(isDebug.ToString(), actual.Value); } - private ISystemInformationService CreateSystemInformationService( + private ISystemTroubleshootingInformationService CreateSystemInformationService( string culture = "", ModelsMode modelsMode = ModelsMode.InMemoryAuto, bool isDebug = true, @@ -142,7 +142,7 @@ public class SystemInformationServiceTests var databaseMock = new Mock(); databaseMock.Setup(x => x.DatabaseType.GetProviderName()).Returns("SQL"); - return new SystemInformationTelemetryProvider( + return new SystemTroubleshootingInformationTelemetryProvider( _umbracoVersion, localizationService, Mock.Of>(x => x.CurrentValue == new ModelsBuilderSettings { ModelsMode = modelsMode }), diff --git a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Telemetry/SystemInformationTelemetryProviderTests.cs b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Telemetry/SystemTroubleshootingInformationTelemetryProviderTests.cs similarity index 95% rename from tests/Umbraco.Tests.UnitTests/Umbraco.Core/Telemetry/SystemInformationTelemetryProviderTests.cs rename to tests/Umbraco.Tests.UnitTests/Umbraco.Core/Telemetry/SystemTroubleshootingInformationTelemetryProviderTests.cs index 2201f3df43..f4fedcbc5c 100644 --- a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Telemetry/SystemInformationTelemetryProviderTests.cs +++ b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Telemetry/SystemTroubleshootingInformationTelemetryProviderTests.cs @@ -15,7 +15,7 @@ using Umbraco.Cms.Infrastructure.Telemetry.Providers; namespace Umbraco.Cms.Tests.UnitTests.Umbraco.Core.Telemetry; [TestFixture] -public class SystemInformationTelemetryProviderTests +public class SystemTroubleshootingInformationTelemetryProviderTests { [Test] [TestCase(ModelsMode.Nothing)] @@ -92,7 +92,7 @@ public class SystemInformationTelemetryProviderTests Assert.AreEqual(environment, actual.Data); } - private SystemInformationTelemetryProvider CreateProvider( + private SystemTroubleshootingInformationTelemetryProvider CreateProvider( ModelsMode modelsMode = ModelsMode.InMemoryAuto, bool isDebug = true, string environment = "", @@ -104,7 +104,7 @@ public class SystemInformationTelemetryProviderTests var databaseMock = new Mock(); databaseMock.Setup(x => x.DatabaseType.GetProviderName()).Returns("SQL"); - return new SystemInformationTelemetryProvider( + return new SystemTroubleshootingInformationTelemetryProvider( Mock.Of(), Mock.Of(), Mock.Of>(x => x.CurrentValue == new ModelsBuilderSettings { ModelsMode = modelsMode }),