From 201940290cc6cee89087fcd2b731d76d0d93cffe Mon Sep 17 00:00:00 2001 From: Andy Butland Date: Sat, 5 Dec 2020 09:54:59 +0100 Subject: [PATCH] Adhered to linting rules in hosted services implementations and tests. --- .../HostedServices/HealthCheckNotifier.cs | 33 ++++++-- .../HostedServices/KeepAlive.cs | 28 ++++++- .../HostedServices/LogScrubber.cs | 38 +++++++-- .../RecurringHostedServiceBase.cs | 29 +++++-- .../HostedServices/ScheduledPublishing.cs | 57 +++++++++---- .../InstructionProcessTask.cs | 15 +++- .../ServerRegistration/TouchServerTask.cs | 20 +++-- .../HostedServices/TempFileCleanup.cs | 27 ++++--- .../HealthCheckNotifierTests.cs | 81 +++++++++---------- .../HostedServices/KeepAliveTests.cs | 48 +++++------ .../HostedServices/LogScrubberTests.cs | 42 +++++----- .../ScheduledPublishingTests.cs | 45 +++++------ .../InstructionProcessTaskTests.cs | 24 +++--- .../TouchServerTaskTests.cs | 55 +++++++------ .../HostedServices/TempFileCleanupTests.cs | 26 +++--- 15 files changed, 339 insertions(+), 229 deletions(-) diff --git a/src/Umbraco.Infrastructure/HostedServices/HealthCheckNotifier.cs b/src/Umbraco.Infrastructure/HostedServices/HealthCheckNotifier.cs index 58decb80c4..5c8bd0bc2f 100644 --- a/src/Umbraco.Infrastructure/HostedServices/HealthCheckNotifier.cs +++ b/src/Umbraco.Infrastructure/HostedServices/HealthCheckNotifier.cs @@ -1,4 +1,8 @@ -using System; +// Copyright (c) Umbraco. +// See LICENSE for more details. + +using System; +using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Microsoft.Extensions.Logging; @@ -13,6 +17,7 @@ using Umbraco.Core.Sync; using Umbraco.Infrastructure.Configuration.Extensions; using Umbraco.Infrastructure.HealthCheck; using Umbraco.Web.HealthCheck; +using Umbraco.Web.HealthCheck.NotificationMethods; namespace Umbraco.Infrastructure.HostedServices { @@ -31,6 +36,19 @@ namespace Umbraco.Infrastructure.HostedServices private readonly ILogger _logger; private readonly IProfilingLogger _profilingLogger; + /// + /// Initializes a new instance of the class. + /// + /// The configuration for health check settings. + /// The collection of healthchecks. + /// The collection of healthcheck notification methods. + /// Representation of the state of the Umbraco runtime. + /// Provider of server registrations to the distributed cache. + /// Representation of the main application domain. + /// Provides scopes for database operations. + /// The typed logger. + /// The profiling logger. + /// Parser of crontab expressions. public HealthCheckNotifier( IOptions healthChecksSettings, HealthCheckCollection healthChecks, @@ -42,8 +60,9 @@ namespace Umbraco.Infrastructure.HostedServices ILogger logger, IProfilingLogger profilingLogger, ICronTabParser cronTabParser) - : base(healthChecksSettings.Value.Notification.Period, - healthChecksSettings.Value.GetNotificationDelay(cronTabParser, DateTime.Now, DefaultDelay)) + : base( + healthChecksSettings.Value.Notification.Period, + healthChecksSettings.Value.GetNotificationDelay(cronTabParser, DateTime.Now, DefaultDelay)) { _healthChecksSettings = healthChecksSettings.Value; _healthChecks = healthChecks; @@ -88,25 +107,25 @@ namespace Umbraco.Infrastructure.HostedServices // Ensure we use an explicit scope since we are running on a background thread and plugin health // checks can be making service/database calls so we want to ensure the CallContext/Ambient scope // isn't used since that can be problematic. - using (var scope = _scopeProvider.CreateScope()) + using (IScope scope = _scopeProvider.CreateScope()) using (_profilingLogger.DebugDuration("Health checks executing", "Health checks complete")) { // Don't notify for any checks that are disabled, nor for any disabled just for notifications. - var disabledCheckIds = _healthChecksSettings.Notification.DisabledChecks + Guid[] disabledCheckIds = _healthChecksSettings.Notification.DisabledChecks .Select(x => x.Id) .Union(_healthChecksSettings.DisabledChecks .Select(x => x.Id)) .Distinct() .ToArray(); - var checks = _healthChecks + IEnumerable checks = _healthChecks .Where(x => disabledCheckIds.Contains(x.Id) == false); var results = new HealthCheckResults(checks); results.LogResults(); // Send using registered notification methods that are enabled. - foreach (var notificationMethod in _notifications.Where(x => x.Enabled)) + foreach (IHealthCheckNotificationMethod notificationMethod in _notifications.Where(x => x.Enabled)) { await notificationMethod.SendAsync(results); } diff --git a/src/Umbraco.Infrastructure/HostedServices/KeepAlive.cs b/src/Umbraco.Infrastructure/HostedServices/KeepAlive.cs index 39ac0f3d87..6a56b6f98e 100644 --- a/src/Umbraco.Infrastructure/HostedServices/KeepAlive.cs +++ b/src/Umbraco.Infrastructure/HostedServices/KeepAlive.cs @@ -1,4 +1,7 @@ -using System; +// Copyright (c) Umbraco. +// See LICENSE for more details. + +using System; using System.Net.Http; using System.Threading.Tasks; using Microsoft.Extensions.Logging; @@ -24,7 +27,24 @@ namespace Umbraco.Infrastructure.HostedServices private readonly IServerRegistrar _serverRegistrar; private readonly IHttpClientFactory _httpClientFactory; - public KeepAlive(IRequestAccessor requestAccessor, IMainDom mainDom, IOptions keepAliveSettings, ILogger logger, IProfilingLogger profilingLogger, IServerRegistrar serverRegistrar, IHttpClientFactory httpClientFactory) + /// + /// Initializes a new instance of the class. + /// + /// Accessor for the current request. + /// Representation of the main application domain. + /// The configuration for keep alive settings. + /// The typed logger. + /// The profiling logger. + /// Provider of server registrations to the distributed cache. + /// Factory for instances. + public KeepAlive( + IRequestAccessor requestAccessor, + IMainDom mainDom, + IOptions keepAliveSettings, + ILogger logger, + IProfilingLogger profilingLogger, + IServerRegistrar serverRegistrar, + IHttpClientFactory httpClientFactory) : base(TimeSpan.FromMinutes(5), DefaultDelay) { _requestAccessor = requestAccessor; @@ -79,8 +99,8 @@ namespace Umbraco.Infrastructure.HostedServices } var request = new HttpRequestMessage(HttpMethod.Get, keepAlivePingUrl); - var httpClient = _httpClientFactory.CreateClient(); - await httpClient.SendAsync(request); + HttpClient httpClient = _httpClientFactory.CreateClient(); + _ = await httpClient.SendAsync(request); } catch (Exception ex) { diff --git a/src/Umbraco.Infrastructure/HostedServices/LogScrubber.cs b/src/Umbraco.Infrastructure/HostedServices/LogScrubber.cs index 1cf2da05f9..ca87d3e84e 100644 --- a/src/Umbraco.Infrastructure/HostedServices/LogScrubber.cs +++ b/src/Umbraco.Infrastructure/HostedServices/LogScrubber.cs @@ -1,4 +1,7 @@ -using System; +// Copyright (c) Umbraco. +// See LICENSE for more details. + +using System; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; @@ -27,7 +30,24 @@ namespace Umbraco.Infrastructure.HostedServices private readonly ILogger _logger; private readonly IScopeProvider _scopeProvider; - public LogScrubber(IMainDom mainDom, IServerRegistrar serverRegistrar, IAuditService auditService, IOptions settings, IScopeProvider scopeProvider, ILogger logger, IProfilingLogger profilingLogger) + /// + /// Initializes a new instance of the class. + /// + /// Representation of the main application domain. + /// Provider of server registrations to the distributed cache. + /// Service for handling audit operations. + /// The configuration for logging settings. + /// Provides scopes for database operations. + /// The typed logger. + /// The profiling logger. + public LogScrubber( + IMainDom mainDom, + IServerRegistrar serverRegistrar, + IAuditService auditService, + IOptions settings, + IScopeProvider scopeProvider, + ILogger logger, + IProfilingLogger profilingLogger) : base(TimeSpan.FromHours(4), DefaultDelay) { _mainDom = mainDom; @@ -39,32 +59,34 @@ namespace Umbraco.Infrastructure.HostedServices _profilingLogger = profilingLogger; } - internal override async Task PerformExecuteAsync(object state) + internal override Task PerformExecuteAsync(object state) { switch (_serverRegistrar.GetCurrentServerRole()) { case ServerRole.Replica: _logger.LogDebug("Does not run on replica servers."); - return; + return Task.CompletedTask; case ServerRole.Unknown: _logger.LogDebug("Does not run on servers with unknown role."); - return; + return Task.CompletedTask; } // Ensure we do not run if not main domain, but do NOT lock it if (_mainDom.IsMainDom == false) { _logger.LogDebug("Does not run if not MainDom."); - return; + return Task.CompletedTask; } // Ensure we use an explicit scope since we are running on a background thread. - using (var scope = _scopeProvider.CreateScope()) + using (IScope scope = _scopeProvider.CreateScope()) using (_profilingLogger.DebugDuration("Log scrubbing executing", "Log scrubbing complete")) { _auditService.CleanLogs((int)_settings.MaxLogAge.TotalMinutes); - scope.Complete(); + _ = scope.Complete(); } + + return Task.CompletedTask; } } } diff --git a/src/Umbraco.Infrastructure/HostedServices/RecurringHostedServiceBase.cs b/src/Umbraco.Infrastructure/HostedServices/RecurringHostedServiceBase.cs index ee77326115..7e9354523a 100644 --- a/src/Umbraco.Infrastructure/HostedServices/RecurringHostedServiceBase.cs +++ b/src/Umbraco.Infrastructure/HostedServices/RecurringHostedServiceBase.cs @@ -1,4 +1,7 @@ -using System; +// Copyright (c) Umbraco. +// See LICENSE for more details. + +using System; using System.Threading; using System.Threading.Tasks; using Microsoft.Extensions.Hosting; @@ -13,44 +16,54 @@ namespace Umbraco.Infrastructure.HostedServices /// public abstract class RecurringHostedServiceBase : IHostedService, IDisposable { + /// + /// The default delay to use for recurring tasks for the first run after application start-up if no alternative is configured. + /// protected static readonly TimeSpan DefaultDelay = TimeSpan.FromMinutes(3); private readonly TimeSpan _period; private readonly TimeSpan _delay; private Timer _timer; + /// + /// Initializes a new instance of the class. + /// + /// Timepsan representing how often the task should recur. + /// Timespan represeting the initial delay after application start-up before the first run of the task occurs. protected RecurringHostedServiceBase(TimeSpan period, TimeSpan delay) { _period = period; _delay = delay; } + /// public Task StartAsync(CancellationToken cancellationToken) { _timer = new Timer(ExecuteAsync, null, (int)_delay.TotalMilliseconds, (int)_period.TotalMilliseconds); return Task.CompletedTask; } - public async void ExecuteAsync(object state) - { + /// + /// Executes the task. + /// + /// The task state. + public async void ExecuteAsync(object state) => // Delegate work to method returning a task, that can be called and asserted in a unit test. // Without this there can be behaviour where tests pass, but an error within them causes the test // running process to crash. // Hat-tip: https://stackoverflow.com/a/14207615/489433 await PerformExecuteAsync(state); - } internal abstract Task PerformExecuteAsync(object state); + /// public Task StopAsync(CancellationToken cancellationToken) { _timer?.Change(Timeout.Infinite, 0); return Task.CompletedTask; } - public void Dispose() - { - _timer?.Dispose(); - } + /// + public void Dispose() => _timer?.Dispose(); } } diff --git a/src/Umbraco.Infrastructure/HostedServices/ScheduledPublishing.cs b/src/Umbraco.Infrastructure/HostedServices/ScheduledPublishing.cs index f48e64ad2d..4c235255c2 100644 --- a/src/Umbraco.Infrastructure/HostedServices/ScheduledPublishing.cs +++ b/src/Umbraco.Infrastructure/HostedServices/ScheduledPublishing.cs @@ -1,8 +1,13 @@ -using System; +// Copyright (c) Umbraco. +// See LICENSE for more details. + +using System; +using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using Umbraco.Core; +using Umbraco.Core.Security; using Umbraco.Core.Services; using Umbraco.Core.Sync; using Umbraco.Web; @@ -19,18 +24,35 @@ namespace Umbraco.Infrastructure.HostedServices private readonly IContentService _contentService; private readonly ILogger _logger; private readonly IMainDom _mainDom; - private readonly IRuntimeState _runtime; + private readonly IRuntimeState _runtimeState; private readonly IServerMessenger _serverMessenger; private readonly IBackOfficeSecurityFactory _backofficeSecurityFactory; private readonly IServerRegistrar _serverRegistrar; private readonly IUmbracoContextFactory _umbracoContextFactory; + /// + /// Initializes a new instance of the class. + /// + /// Representation of the state of the Umbraco runtime. + /// Representation of the main application domain. + /// Provider of server registrations to the distributed cache. + /// Service for handling content operations. + /// Service for creating and managing Umbraco context. + /// The typed logger. + /// Service broadcasting cache notifications to registered servers. + /// Creates and manages instances. public ScheduledPublishing( - IRuntimeState runtime, IMainDom mainDom, IServerRegistrar serverRegistrar, IContentService contentService, - IUmbracoContextFactory umbracoContextFactory, ILogger logger, IServerMessenger serverMessenger, IBackOfficeSecurityFactory backofficeSecurityFactory) + IRuntimeState runtimeState, + IMainDom mainDom, + IServerRegistrar serverRegistrar, + IContentService contentService, + IUmbracoContextFactory umbracoContextFactory, + ILogger logger, + IServerMessenger serverMessenger, + IBackOfficeSecurityFactory backofficeSecurityFactory) : base(TimeSpan.FromMinutes(1), DefaultDelay) { - _runtime = runtime; + _runtimeState = runtimeState; _mainDom = mainDom; _serverRegistrar = serverRegistrar; _contentService = contentService; @@ -40,35 +62,35 @@ namespace Umbraco.Infrastructure.HostedServices _backofficeSecurityFactory = backofficeSecurityFactory; } - internal override async Task PerformExecuteAsync(object state) + internal override Task PerformExecuteAsync(object state) { if (Suspendable.ScheduledPublishing.CanRun == false) { - return; + return Task.CompletedTask; } switch (_serverRegistrar.GetCurrentServerRole()) { case ServerRole.Replica: _logger.LogDebug("Does not run on replica servers."); - return; + return Task.CompletedTask; case ServerRole.Unknown: _logger.LogDebug("Does not run on servers with unknown role."); - return; + return Task.CompletedTask; } // Ensure we do not run if not main domain, but do NOT lock it if (_mainDom.IsMainDom == false) { _logger.LogDebug("Does not run if not MainDom."); - return; + return Task.CompletedTask; } // Do NOT run publishing if not properly running - if (_runtime.Level != RuntimeLevel.Run) + if (_runtimeState.Level != RuntimeLevel.Run) { _logger.LogDebug("Does not run if run level is not Run."); - return; + return Task.CompletedTask; } try @@ -85,16 +107,17 @@ namespace Umbraco.Infrastructure.HostedServices // - and we should definitively *not* have to flush it here (should be auto) // _backofficeSecurityFactory.EnsureBackOfficeSecurity(); - using var contextReference = _umbracoContextFactory.EnsureUmbracoContext(); + using UmbracoContextReference contextReference = _umbracoContextFactory.EnsureUmbracoContext(); try { // Run - var result = _contentService.PerformScheduledPublish(DateTime.Now); - foreach (var grouped in result.GroupBy(x => x.Result)) + IEnumerable result = _contentService.PerformScheduledPublish(DateTime.Now); + foreach (IGrouping grouped in result.GroupBy(x => x.Result)) { _logger.LogInformation( "Scheduled publishing result: '{StatusCount}' items with status {Status}", - grouped.Count(), grouped.Key); + grouped.Count(), + grouped.Key); } } finally @@ -112,7 +135,7 @@ namespace Umbraco.Infrastructure.HostedServices _logger.LogError(ex, "Failed."); } - return; + return Task.CompletedTask; } } } diff --git a/src/Umbraco.Infrastructure/HostedServices/ServerRegistration/InstructionProcessTask.cs b/src/Umbraco.Infrastructure/HostedServices/ServerRegistration/InstructionProcessTask.cs index 8d669178b0..3c291f187b 100644 --- a/src/Umbraco.Infrastructure/HostedServices/ServerRegistration/InstructionProcessTask.cs +++ b/src/Umbraco.Infrastructure/HostedServices/ServerRegistration/InstructionProcessTask.cs @@ -1,4 +1,7 @@ -using System; +// Copyright (c) Umbraco. +// See LICENSE for more details. + +using System; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; @@ -20,6 +23,10 @@ namespace Umbraco.Infrastructure.HostedServices.ServerRegistration /// /// Initializes a new instance of the class. /// + /// Representation of the state of the Umbraco runtime. + /// Service broadcasting cache notifications to registered servers. + /// The typed logger. + /// The configuration for global settings. public InstructionProcessTask(IRuntimeState runtimeState, IServerMessenger messenger, ILogger logger, IOptions globalSettings) : base(globalSettings.Value.DatabaseServerMessenger.TimeBetweenSyncOperations, TimeSpan.FromMinutes(1)) { @@ -28,11 +35,11 @@ namespace Umbraco.Infrastructure.HostedServices.ServerRegistration _logger = logger; } - internal override async Task PerformExecuteAsync(object state) + internal override Task PerformExecuteAsync(object state) { if (_runtimeState.Level != RuntimeLevel.Run) { - return; + return Task.CompletedTask; } try @@ -43,6 +50,8 @@ namespace Umbraco.Infrastructure.HostedServices.ServerRegistration { _logger.LogError(e, "Failed (will repeat)."); } + + return Task.CompletedTask; } } } diff --git a/src/Umbraco.Infrastructure/HostedServices/ServerRegistration/TouchServerTask.cs b/src/Umbraco.Infrastructure/HostedServices/ServerRegistration/TouchServerTask.cs index 0384a071c6..25e975582d 100644 --- a/src/Umbraco.Infrastructure/HostedServices/ServerRegistration/TouchServerTask.cs +++ b/src/Umbraco.Infrastructure/HostedServices/ServerRegistration/TouchServerTask.cs @@ -1,4 +1,7 @@ -using System; +// Copyright (c) Umbraco. +// See LICENSE for more details. + +using System; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; @@ -18,11 +21,16 @@ namespace Umbraco.Infrastructure.HostedServices.ServerRegistration private readonly IServerRegistrationService _serverRegistrationService; private readonly IRequestAccessor _requestAccessor; private readonly ILogger _logger; - private GlobalSettings _globalSettings; + private readonly GlobalSettings _globalSettings; /// /// Initializes a new instance of the class. /// + /// Representation of the state of the Umbraco runtime. + /// Services for server registrations. + /// Accessor for the current request. + /// The typed logger. + /// The configuration for global settings. public TouchServerTask(IRuntimeState runtimeState, IServerRegistrationService serverRegistrationService, IRequestAccessor requestAccessor, ILogger logger, IOptions globalSettings) : base(globalSettings.Value.DatabaseServerRegistrar.WaitTimeBetweenCalls, TimeSpan.FromSeconds(15)) { @@ -33,18 +41,18 @@ namespace Umbraco.Infrastructure.HostedServices.ServerRegistration _globalSettings = globalSettings.Value; } - internal override async Task PerformExecuteAsync(object state) + internal override Task PerformExecuteAsync(object state) { if (_runtimeState.Level != RuntimeLevel.Run) { - return; + return Task.CompletedTask; } var serverAddress = _requestAccessor.GetApplicationUrl()?.ToString(); if (serverAddress.IsNullOrWhiteSpace()) { _logger.LogWarning("No umbracoApplicationUrl for service (yet), skip."); - return; + return Task.CompletedTask; } try @@ -57,6 +65,8 @@ namespace Umbraco.Infrastructure.HostedServices.ServerRegistration { _logger.LogError(ex, "Failed to update server record in database."); } + + return Task.CompletedTask; } } } diff --git a/src/Umbraco.Infrastructure/HostedServices/TempFileCleanup.cs b/src/Umbraco.Infrastructure/HostedServices/TempFileCleanup.cs index e27b83c8f6..7e3f70d510 100644 --- a/src/Umbraco.Infrastructure/HostedServices/TempFileCleanup.cs +++ b/src/Umbraco.Infrastructure/HostedServices/TempFileCleanup.cs @@ -1,4 +1,7 @@ -using System; +// Copyright (c) Umbraco. +// See LICENSE for more details. + +using System; using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; @@ -23,6 +26,12 @@ namespace Umbraco.Infrastructure.HostedServices private readonly DirectoryInfo[] _tempFolders; private readonly TimeSpan _age = TimeSpan.FromDays(1); + /// + /// Initializes a new instance of the class. + /// + /// Helper service for IO operations. + /// Representation of the main application domain. + /// The typed logger. public TempFileCleanup(IIOHelper ioHelper, IMainDom mainDom, ILogger logger) : base(TimeSpan.FromMinutes(60), DefaultDelay) { @@ -33,33 +42,33 @@ namespace Umbraco.Infrastructure.HostedServices _tempFolders = _ioHelper.GetTempFolders(); } - internal override async Task PerformExecuteAsync(object state) + internal override Task PerformExecuteAsync(object state) { // Ensure we do not run if not main domain if (_mainDom.IsMainDom == false) { _logger.LogDebug("Does not run if not MainDom."); - return; + return Task.CompletedTask; } - foreach (var folder in _tempFolders) + foreach (DirectoryInfo folder in _tempFolders) { CleanupFolder(folder); } - return; + return Task.CompletedTask; } private void CleanupFolder(DirectoryInfo folder) { - var result = _ioHelper.CleanFolder(folder, _age); + CleanFolderResult result = _ioHelper.CleanFolder(folder, _age); switch (result.Status) { case CleanFolderResultStatus.FailedAsDoesNotExist: _logger.LogDebug("The cleanup folder doesn't exist {Folder}", folder.FullName); break; case CleanFolderResultStatus.FailedWithException: - foreach (var error in result.Errors) + foreach (CleanFolderResult.Error error in result.Errors) { _logger.LogError(error.Exception, "Could not delete temp file {FileName}", error.ErroringFile.FullName); } @@ -74,8 +83,8 @@ namespace Umbraco.Infrastructure.HostedServices return; } - var files = folder.GetFiles("*.*", SearchOption.AllDirectories); - foreach (var file in files) + FileInfo[] files = folder.GetFiles("*.*", SearchOption.AllDirectories); + foreach (FileInfo file in files) { if (DateTime.UtcNow - file.LastWriteTimeUtc > _age) { diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/HealthCheckNotifierTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/HealthCheckNotifierTests.cs index cdb98f7fa5..ffad002928 100644 --- a/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/HealthCheckNotifierTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/HealthCheckNotifierTests.cs @@ -1,4 +1,7 @@ -using System; +// Copyright (c) Umbraco. +// See LICENSE for more details. + +using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; @@ -25,14 +28,14 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.HostedServices { private Mock _mockNotificationMethod; - private const string _check1Id = "00000000-0000-0000-0000-000000000001"; - private const string _check2Id = "00000000-0000-0000-0000-000000000002"; - private const string _check3Id = "00000000-0000-0000-0000-000000000003"; + private const string Check1Id = "00000000-0000-0000-0000-000000000001"; + private const string Check2Id = "00000000-0000-0000-0000-000000000002"; + private const string Check3Id = "00000000-0000-0000-0000-000000000003"; [Test] public async Task Does_Not_Execute_When_Not_Enabled() { - var sut = CreateHealthCheckNotifier(enabled: false); + HealthCheckNotifier sut = CreateHealthCheckNotifier(enabled: false); await sut.PerformExecuteAsync(null); VerifyNotificationsNotSent(); } @@ -44,7 +47,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.HostedServices [TestCase(RuntimeLevel.BootFailed)] public async Task Does_Not_Execute_When_Runtime_State_Is_Not_Run(RuntimeLevel runtimeLevel) { - var sut = CreateHealthCheckNotifier(runtimeLevel: runtimeLevel); + HealthCheckNotifier sut = CreateHealthCheckNotifier(runtimeLevel: runtimeLevel); await sut.PerformExecuteAsync(null); VerifyNotificationsNotSent(); } @@ -52,7 +55,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.HostedServices [Test] public async Task Does_Not_Execute_When_Server_Role_Is_Replica() { - var sut = CreateHealthCheckNotifier(serverRole: ServerRole.Replica); + HealthCheckNotifier sut = CreateHealthCheckNotifier(serverRole: ServerRole.Replica); await sut.PerformExecuteAsync(null); VerifyNotificationsNotSent(); } @@ -60,7 +63,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.HostedServices [Test] public async Task Does_Not_Execute_When_Server_Role_Is_Unknown() { - var sut = CreateHealthCheckNotifier(serverRole: ServerRole.Unknown); + HealthCheckNotifier sut = CreateHealthCheckNotifier(serverRole: ServerRole.Unknown); await sut.PerformExecuteAsync(null); VerifyNotificationsNotSent(); } @@ -68,7 +71,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.HostedServices [Test] public async Task Does_Not_Execute_When_Not_Main_Dom() { - var sut = CreateHealthCheckNotifier(isMainDom: false); + HealthCheckNotifier sut = CreateHealthCheckNotifier(isMainDom: false); await sut.PerformExecuteAsync(null); VerifyNotificationsNotSent(); } @@ -76,7 +79,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.HostedServices [Test] public async Task Does_Not_Execute_With_No_Enabled_Notification_Methods() { - var sut = CreateHealthCheckNotifier(notificationEnabled: false); + HealthCheckNotifier sut = CreateHealthCheckNotifier(notificationEnabled: false); await sut.PerformExecuteAsync(null); VerifyNotificationsNotSent(); } @@ -84,7 +87,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.HostedServices [Test] public async Task Executes_With_Enabled_Notification_Methods() { - var sut = CreateHealthCheckNotifier(); + HealthCheckNotifier sut = CreateHealthCheckNotifier(); await sut.PerformExecuteAsync(null); VerifyNotificationsSent(); } @@ -92,10 +95,11 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.HostedServices [Test] public async Task Executes_Only_Enabled_Checks() { - var sut = CreateHealthCheckNotifier(); + HealthCheckNotifier sut = CreateHealthCheckNotifier(); await sut.PerformExecuteAsync(null); - _mockNotificationMethod.Verify(x => x.SendAsync(It.Is( - y => y.ResultsAsDictionary.Count == 1 && y.ResultsAsDictionary.ContainsKey("Check1"))), Times.Once); + _mockNotificationMethod.Verify( + x => x.SendAsync( + It.Is(y => y.ResultsAsDictionary.Count == 1 && y.ResultsAsDictionary.ContainsKey("Check1"))), Times.Once); } private HealthCheckNotifier CreateHealthCheckNotifier( @@ -112,12 +116,12 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.HostedServices Enabled = enabled, DisabledChecks = new List { - new DisabledHealthCheckSettings { Id = Guid.Parse(_check3Id) } + new DisabledHealthCheckSettings { Id = Guid.Parse(Check3Id) } } }, DisabledChecks = new List { - new DisabledHealthCheckSettings { Id = Guid.Parse(_check2Id) } + new DisabledHealthCheckSettings { Id = Guid.Parse(Check2Id) } } }; var checks = new HealthCheckCollection(new List @@ -144,52 +148,45 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.HostedServices var mockLogger = new Mock>(); var mockProfilingLogger = new Mock(); - return new HealthCheckNotifier(Options.Create(settings), checks, notifications, - mockRunTimeState.Object, mockServerRegistrar.Object, mockMainDom.Object, mockScopeProvider.Object, - mockLogger.Object, mockProfilingLogger.Object, Mock.Of()); + return new HealthCheckNotifier( + Options.Create(settings), + checks, + notifications, + mockRunTimeState.Object, + mockServerRegistrar.Object, + mockMainDom.Object, + mockScopeProvider.Object, + mockLogger.Object, + mockProfilingLogger.Object, + Mock.Of()); } - private void VerifyNotificationsNotSent() - { - VerifyNotificationsSentTimes(Times.Never()); - } + private void VerifyNotificationsNotSent() => VerifyNotificationsSentTimes(Times.Never()); - private void VerifyNotificationsSent() - { - VerifyNotificationsSentTimes(Times.Once()); - } + private void VerifyNotificationsSent() => VerifyNotificationsSentTimes(Times.Once()); - private void VerifyNotificationsSentTimes(Times times) - { - _mockNotificationMethod.Verify(x => x.SendAsync(It.IsAny()), times); - } + private void VerifyNotificationsSentTimes(Times times) => _mockNotificationMethod.Verify(x => x.SendAsync(It.IsAny()), times); - [HealthCheck(_check1Id, "Check1")] + [HealthCheck(Check1Id, "Check1")] private class TestHealthCheck1 : TestHealthCheck { } - [HealthCheck(_check2Id, "Check2")] + [HealthCheck(Check2Id, "Check2")] private class TestHealthCheck2 : TestHealthCheck { } - [HealthCheck(_check3Id, "Check3")] + [HealthCheck(Check3Id, "Check3")] private class TestHealthCheck3 : TestHealthCheck { } private class TestHealthCheck : HealthCheck { - public override HealthCheckStatus ExecuteAction(HealthCheckAction action) - { - return new HealthCheckStatus("Check message"); - } + public override HealthCheckStatus ExecuteAction(HealthCheckAction action) => new HealthCheckStatus("Check message"); - public override IEnumerable GetStatus() - { - return Enumerable.Empty(); - } + public override IEnumerable GetStatus() => Enumerable.Empty(); } } } diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/KeepAliveTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/KeepAliveTests.cs index 9fc1454b6d..98164a7aac 100644 --- a/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/KeepAliveTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/KeepAliveTests.cs @@ -1,4 +1,7 @@ -using System; +// Copyright (c) Umbraco. +// See LICENSE for more details. + +using System; using System.Net; using System.Net.Http; using System.Threading; @@ -23,12 +26,12 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.HostedServices { private Mock _mockHttpMessageHandler; - private const string _applicationUrl = "https://mysite.com"; + private const string ApplicationUrl = "https://mysite.com"; [Test] public async Task Does_Not_Execute_When_Not_Enabled() { - var sut = CreateKeepAlive(enabled: false); + KeepAlive sut = CreateKeepAlive(enabled: false); await sut.PerformExecuteAsync(null); VerifyKeepAliveRequestNotSent(); } @@ -36,7 +39,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.HostedServices [Test] public async Task Does_Not_Execute_When_Server_Role_Is_Replica() { - var sut = CreateKeepAlive(serverRole: ServerRole.Replica); + KeepAlive sut = CreateKeepAlive(serverRole: ServerRole.Replica); await sut.PerformExecuteAsync(null); VerifyKeepAliveRequestNotSent(); } @@ -44,7 +47,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.HostedServices [Test] public async Task Does_Not_Execute_When_Server_Role_Is_Unknown() { - var sut = CreateKeepAlive(serverRole: ServerRole.Unknown); + KeepAlive sut = CreateKeepAlive(serverRole: ServerRole.Unknown); await sut.PerformExecuteAsync(null); VerifyKeepAliveRequestNotSent(); } @@ -52,7 +55,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.HostedServices [Test] public async Task Does_Not_Execute_When_Not_Main_Dom() { - var sut = CreateKeepAlive(isMainDom: false); + KeepAlive sut = CreateKeepAlive(isMainDom: false); await sut.PerformExecuteAsync(null); VerifyKeepAliveRequestNotSent(); } @@ -60,7 +63,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.HostedServices [Test] public async Task Executes_And_Calls_Ping_Url() { - var sut = CreateKeepAlive(); + KeepAlive sut = CreateKeepAlive(); await sut.PerformExecuteAsync(null); VerifyKeepAliveRequestSent(); } @@ -76,7 +79,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.HostedServices }; var mockRequestAccessor = new Mock(); - mockRequestAccessor.Setup(x => x.GetApplicationUrl()).Returns(new Uri(_applicationUrl)); + mockRequestAccessor.Setup(x => x.GetApplicationUrl()).Returns(new Uri(ApplicationUrl)); var mockServerRegistrar = new Mock(); mockServerRegistrar.Setup(x => x.GetCurrentServerRole()).Returns(serverRole); @@ -99,26 +102,25 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.HostedServices var mockHttpClientFactory = new Mock(MockBehavior.Strict); mockHttpClientFactory.Setup(x => x.CreateClient(It.IsAny())).Returns(httpClient); - return new KeepAlive(mockRequestAccessor.Object, mockMainDom.Object, Options.Create(settings), - mockLogger.Object, mockProfilingLogger.Object, mockServerRegistrar.Object, mockHttpClientFactory.Object); + return new KeepAlive( + mockRequestAccessor.Object, + mockMainDom.Object, + Options.Create(settings), + mockLogger.Object, + mockProfilingLogger.Object, + mockServerRegistrar.Object, + mockHttpClientFactory.Object); } - private void VerifyKeepAliveRequestNotSent() - { - VerifyKeepAliveRequestSentTimes(Times.Never()); - } + private void VerifyKeepAliveRequestNotSent() => VerifyKeepAliveRequestSentTimes(Times.Never()); - private void VerifyKeepAliveRequestSent() - { - VerifyKeepAliveRequestSentTimes(Times.Once()); - } + private void VerifyKeepAliveRequestSent() => VerifyKeepAliveRequestSentTimes(Times.Once()); - private void VerifyKeepAliveRequestSentTimes(Times times) - { - _mockHttpMessageHandler.Protected().Verify("SendAsync", + private void VerifyKeepAliveRequestSentTimes(Times times) => _mockHttpMessageHandler.Protected() + .Verify( + "SendAsync", times, - ItExpr.Is(x => x.RequestUri.ToString() == $"{_applicationUrl}/api/keepalive/ping"), + ItExpr.Is(x => x.RequestUri.ToString() == $"{ApplicationUrl}/api/keepalive/ping"), ItExpr.IsAny()); - } } } diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/LogScrubberTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/LogScrubberTests.cs index d30c83c545..564b716f75 100644 --- a/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/LogScrubberTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/LogScrubberTests.cs @@ -1,4 +1,7 @@ -using System; +// Copyright (c) Umbraco. +// See LICENSE for more details. + +using System; using System.Data; using System.Threading.Tasks; using Microsoft.Extensions.Logging; @@ -21,12 +24,12 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.HostedServices { private Mock _mockAuditService; - const int _maxLogAgeInMinutes = 60; + private const int MaxLogAgeInMinutes = 60; [Test] public async Task Does_Not_Execute_When_Server_Role_Is_Replica() { - var sut = CreateLogScrubber(serverRole: ServerRole.Replica); + LogScrubber sut = CreateLogScrubber(serverRole: ServerRole.Replica); await sut.PerformExecuteAsync(null); VerifyLogsNotScrubbed(); } @@ -34,7 +37,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.HostedServices [Test] public async Task Does_Not_Execute_When_Server_Role_Is_Unknown() { - var sut = CreateLogScrubber(serverRole: ServerRole.Unknown); + LogScrubber sut = CreateLogScrubber(serverRole: ServerRole.Unknown); await sut.PerformExecuteAsync(null); VerifyLogsNotScrubbed(); } @@ -42,7 +45,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.HostedServices [Test] public async Task Does_Not_Execute_When_Not_Main_Dom() { - var sut = CreateLogScrubber(isMainDom: false); + LogScrubber sut = CreateLogScrubber(isMainDom: false); await sut.PerformExecuteAsync(null); VerifyLogsNotScrubbed(); } @@ -50,7 +53,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.HostedServices [Test] public async Task Executes_And_Scrubs_Logs() { - var sut = CreateLogScrubber(); + LogScrubber sut = CreateLogScrubber(); await sut.PerformExecuteAsync(null); VerifyLogsScrubbed(); } @@ -61,7 +64,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.HostedServices { var settings = new LoggingSettings { - MaxLogAge = TimeSpan.FromMinutes(_maxLogAgeInMinutes), + MaxLogAge = TimeSpan.FromMinutes(MaxLogAgeInMinutes), }; var mockServerRegistrar = new Mock(); @@ -80,23 +83,20 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.HostedServices _mockAuditService = new Mock(); - return new LogScrubber(mockMainDom.Object, mockServerRegistrar.Object, _mockAuditService.Object, - Options.Create(settings), mockScopeProvider.Object, mockLogger.Object, mockProfilingLogger.Object); + return new LogScrubber( + mockMainDom.Object, + mockServerRegistrar.Object, + _mockAuditService.Object, + Options.Create(settings), + mockScopeProvider.Object, + mockLogger.Object, + mockProfilingLogger.Object); } - private void VerifyLogsNotScrubbed() - { - VerifyLogsScrubbed(Times.Never()); - } + private void VerifyLogsNotScrubbed() => VerifyLogsScrubbed(Times.Never()); - private void VerifyLogsScrubbed() - { - VerifyLogsScrubbed(Times.Once()); - } + private void VerifyLogsScrubbed() => VerifyLogsScrubbed(Times.Once()); - private void VerifyLogsScrubbed(Times times) - { - _mockAuditService.Verify(x => x.CleanLogs(It.Is(y => y == _maxLogAgeInMinutes)), times); - } + private void VerifyLogsScrubbed(Times times) => _mockAuditService.Verify(x => x.CleanLogs(It.Is(y => y == MaxLogAgeInMinutes)), times); } } diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/ScheduledPublishingTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/ScheduledPublishingTests.cs index a7d6925d18..fa3a609ce6 100644 --- a/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/ScheduledPublishingTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/ScheduledPublishingTests.cs @@ -1,15 +1,16 @@ -using System; +// Copyright (c) Umbraco. +// See LICENSE for more details. + +using System; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using Moq; using NUnit.Framework; using Umbraco.Core; -using Umbraco.Core.Logging; using Umbraco.Core.Services; using Umbraco.Core.Sync; using Umbraco.Infrastructure.HostedServices; using Umbraco.Web; -using LogLevel = Microsoft.Extensions.Logging.LogLevel; namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.HostedServices { @@ -22,7 +23,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.HostedServices [Test] public async Task Does_Not_Execute_When_Not_Enabled() { - var sut = CreateScheduledPublishing(enabled: false); + ScheduledPublishing sut = CreateScheduledPublishing(enabled: false); await sut.PerformExecuteAsync(null); VerifyScheduledPublishingNotPerformed(); } @@ -34,7 +35,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.HostedServices [TestCase(RuntimeLevel.BootFailed)] public async Task Does_Not_Execute_When_Runtime_State_Is_Not_Run(RuntimeLevel runtimeLevel) { - var sut = CreateScheduledPublishing(runtimeLevel: runtimeLevel); + ScheduledPublishing sut = CreateScheduledPublishing(runtimeLevel: runtimeLevel); await sut.PerformExecuteAsync(null); VerifyScheduledPublishingNotPerformed(); } @@ -42,7 +43,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.HostedServices [Test] public async Task Does_Not_Execute_When_Server_Role_Is_Replica() { - var sut = CreateScheduledPublishing(serverRole: ServerRole.Replica); + ScheduledPublishing sut = CreateScheduledPublishing(serverRole: ServerRole.Replica); await sut.PerformExecuteAsync(null); VerifyScheduledPublishingNotPerformed(); } @@ -50,7 +51,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.HostedServices [Test] public async Task Does_Not_Execute_When_Server_Role_Is_Unknown() { - var sut = CreateScheduledPublishing(serverRole: ServerRole.Unknown); + ScheduledPublishing sut = CreateScheduledPublishing(serverRole: ServerRole.Unknown); await sut.PerformExecuteAsync(null); VerifyScheduledPublishingNotPerformed(); } @@ -58,7 +59,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.HostedServices [Test] public async Task Does_Not_Execute_When_Not_Main_Dom() { - var sut = CreateScheduledPublishing(isMainDom: false); + ScheduledPublishing sut = CreateScheduledPublishing(isMainDom: false); await sut.PerformExecuteAsync(null); VerifyScheduledPublishingNotPerformed(); } @@ -66,7 +67,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.HostedServices [Test] public async Task Executes_And_Performs_Scheduled_Publishing() { - var sut = CreateScheduledPublishing(); + ScheduledPublishing sut = CreateScheduledPublishing(); await sut.PerformExecuteAsync(null); VerifyScheduledPublishingPerformed(); } @@ -106,23 +107,21 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.HostedServices var mockBackOfficeSecurityFactory = new Mock(); - return new ScheduledPublishing(mockRunTimeState.Object, mockMainDom.Object, mockServerRegistrar.Object, _mockContentService.Object, - mockUmbracoContextFactory.Object, _mockLogger.Object, mockServerMessenger.Object, mockBackOfficeSecurityFactory.Object); + return new ScheduledPublishing( + mockRunTimeState.Object, + mockMainDom.Object, + mockServerRegistrar.Object, + _mockContentService.Object, + mockUmbracoContextFactory.Object, + _mockLogger.Object, + mockServerMessenger.Object, + mockBackOfficeSecurityFactory.Object); } - private void VerifyScheduledPublishingNotPerformed() - { - VerifyScheduledPublishingPerformed(Times.Never()); - } + private void VerifyScheduledPublishingNotPerformed() => VerifyScheduledPublishingPerformed(Times.Never()); - private void VerifyScheduledPublishingPerformed() - { - VerifyScheduledPublishingPerformed(Times.Once()); - } + private void VerifyScheduledPublishingPerformed() => VerifyScheduledPublishingPerformed(Times.Once()); - private void VerifyScheduledPublishingPerformed(Times times) - { - _mockContentService.Verify(x => x.PerformScheduledPublish(It.IsAny()), times); - } + private void VerifyScheduledPublishingPerformed(Times times) => _mockContentService.Verify(x => x.PerformScheduledPublish(It.IsAny()), times); } } diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/ServerRegistration/InstructionProcessTaskTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/ServerRegistration/InstructionProcessTaskTests.cs index 86644afc77..6ea56792e2 100644 --- a/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/ServerRegistration/InstructionProcessTaskTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/ServerRegistration/InstructionProcessTaskTests.cs @@ -1,4 +1,7 @@ -using System.Threading.Tasks; +// Copyright (c) Umbraco. +// See LICENSE for more details. + +using System.Threading.Tasks; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using Moq; @@ -22,7 +25,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.HostedServices.ServerRe [TestCase(RuntimeLevel.BootFailed)] public async Task Does_Not_Execute_When_Runtime_State_Is_Not_Run(RuntimeLevel runtimeLevel) { - var sut = CreateInstructionProcessTask(runtimeLevel: runtimeLevel); + InstructionProcessTask sut = CreateInstructionProcessTask(runtimeLevel: runtimeLevel); await sut.PerformExecuteAsync(null); VerifyMessengerNotSynced(); } @@ -30,7 +33,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.HostedServices.ServerRe [Test] public async Task Executes_And_Touches_Server() { - var sut = CreateInstructionProcessTask(); + InstructionProcessTask sut = CreateInstructionProcessTask(); await sut.PerformExecuteAsync(null); VerifyMessengerSynced(); } @@ -49,19 +52,10 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.HostedServices.ServerRe return new InstructionProcessTask(mockRunTimeState.Object, _mockDatabaseServerMessenger.Object, mockLogger.Object, Options.Create(settings)); } - private void VerifyMessengerNotSynced() - { - VerifyMessengerSyncedTimes(Times.Never()); - } + private void VerifyMessengerNotSynced() => VerifyMessengerSyncedTimes(Times.Never()); - private void VerifyMessengerSynced() - { - VerifyMessengerSyncedTimes(Times.Once()); - } + private void VerifyMessengerSynced() => VerifyMessengerSyncedTimes(Times.Once()); - private void VerifyMessengerSyncedTimes(Times times) - { - _mockDatabaseServerMessenger.Verify(x => x.Sync(), times); - } + private void VerifyMessengerSyncedTimes(Times times) => _mockDatabaseServerMessenger.Verify(x => x.Sync(), times); } } diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/ServerRegistration/TouchServerTaskTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/ServerRegistration/TouchServerTaskTests.cs index 499ff05f04..7f58f39346 100644 --- a/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/ServerRegistration/TouchServerTaskTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/ServerRegistration/TouchServerTaskTests.cs @@ -1,4 +1,7 @@ -using System; +// Copyright (c) Umbraco. +// See LICENSE for more details. + +using System; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; @@ -17,8 +20,8 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.HostedServices.ServerRe { private Mock _mockServerRegistrationService; - private const string _applicationUrl = "https://mysite.com/"; - private const string _serverIdentity = "Test/1"; + private const string ApplicationUrl = "https://mysite.com/"; + private const string ServerIdentity = "Test/1"; private readonly TimeSpan _staleServerTimeout = TimeSpan.FromMinutes(2); [TestCase(RuntimeLevel.Boot)] @@ -28,7 +31,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.HostedServices.ServerRe [TestCase(RuntimeLevel.BootFailed)] public async Task Does_Not_Execute_When_Runtime_State_Is_Not_Run(RuntimeLevel runtimeLevel) { - var sut = CreateTouchServerTask(runtimeLevel: runtimeLevel); + TouchServerTask sut = CreateTouchServerTask(runtimeLevel: runtimeLevel); await sut.PerformExecuteAsync(null); VerifyServerNotTouched(); } @@ -36,7 +39,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.HostedServices.ServerRe [Test] public async Task Does_Not_Execute_When_Application_Url_Is_Not_Available() { - var sut = CreateTouchServerTask(applicationUrl: string.Empty); + TouchServerTask sut = CreateTouchServerTask(applicationUrl: string.Empty); await sut.PerformExecuteAsync(null); VerifyServerNotTouched(); } @@ -44,15 +47,15 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.HostedServices.ServerRe [Test] public async Task Executes_And_Touches_Server() { - var sut = CreateTouchServerTask(); + TouchServerTask sut = CreateTouchServerTask(); await sut.PerformExecuteAsync(null); VerifyServerTouched(); } - private TouchServerTask CreateTouchServerTask(RuntimeLevel runtimeLevel = RuntimeLevel.Run, string applicationUrl = _applicationUrl) + private TouchServerTask CreateTouchServerTask(RuntimeLevel runtimeLevel = RuntimeLevel.Run, string applicationUrl = ApplicationUrl) { var mockRequestAccessor = new Mock(); - mockRequestAccessor.Setup(x => x.GetApplicationUrl()).Returns(!string.IsNullOrEmpty(applicationUrl) ? new Uri(_applicationUrl) : null); + mockRequestAccessor.Setup(x => x.GetApplicationUrl()).Returns(!string.IsNullOrEmpty(applicationUrl) ? new Uri(ApplicationUrl) : null); var mockRunTimeState = new Mock(); mockRunTimeState.SetupGet(x => x.Level).Returns(runtimeLevel); @@ -60,7 +63,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.HostedServices.ServerRe var mockLogger = new Mock>(); _mockServerRegistrationService = new Mock(); - _mockServerRegistrationService.SetupGet(x => x.CurrentServerIdentity).Returns(_serverIdentity); + _mockServerRegistrationService.SetupGet(x => x.CurrentServerIdentity).Returns(ServerIdentity); var settings = new GlobalSettings { @@ -70,28 +73,24 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.HostedServices.ServerRe } }; - return new TouchServerTask(mockRunTimeState.Object, _mockServerRegistrationService.Object, mockRequestAccessor.Object, - mockLogger.Object, Options.Create(settings)); + return new TouchServerTask( + mockRunTimeState.Object, + _mockServerRegistrationService.Object, + mockRequestAccessor.Object, + mockLogger.Object, + Options.Create(settings)); } - private void VerifyServerNotTouched() - { - VerifyServerTouchedTimes(Times.Never()); - } + private void VerifyServerNotTouched() => VerifyServerTouchedTimes(Times.Never()); - private void VerifyServerTouched() - { - VerifyServerTouchedTimes(Times.Once()); - } + private void VerifyServerTouched() => VerifyServerTouchedTimes(Times.Once()); - private void VerifyServerTouchedTimes(Times times) - { - _mockServerRegistrationService - .Verify(x => x.TouchServer( - It.Is(y => y == _applicationUrl), - It.Is(y => y == _serverIdentity), - It.Is(y => y == _staleServerTimeout)), - times); - } + private void VerifyServerTouchedTimes(Times times) => _mockServerRegistrationService + .Verify( + x => x.TouchServer( + It.Is(y => y == ApplicationUrl), + It.Is(y => y == ServerIdentity), + It.Is(y => y == _staleServerTimeout)), + times); } } diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/TempFileCleanupTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/TempFileCleanupTests.cs index 98666ece2f..6024d50ce3 100644 --- a/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/TempFileCleanupTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HostedServices/TempFileCleanupTests.cs @@ -1,4 +1,7 @@ -using System; +// Copyright (c) Umbraco. +// See LICENSE for more details. + +using System; using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; @@ -15,12 +18,12 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.HostedServices public class TempFileCleanupTests { private Mock _mockIOHelper; - private string _testPath = Path.Combine(TestContext.CurrentContext.TestDirectory.Split("bin")[0], "App_Data", "TEMP"); + private readonly string _testPath = Path.Combine(TestContext.CurrentContext.TestDirectory.Split("bin")[0], "App_Data", "TEMP"); [Test] public async Task Does_Not_Execute_When_Not_Main_Dom() { - var sut = CreateTempFileCleanup(isMainDom: false); + TempFileCleanup sut = CreateTempFileCleanup(isMainDom: false); await sut.PerformExecuteAsync(null); VerifyFilesNotCleaned(); } @@ -28,7 +31,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.HostedServices [Test] public async Task Executes_And_Cleans_Files() { - var sut = CreateTempFileCleanup(); + TempFileCleanup sut = CreateTempFileCleanup(); await sut.PerformExecuteAsync(null); VerifyFilesCleaned(); } @@ -50,19 +53,10 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Infrastructure.HostedServices return new TempFileCleanup(_mockIOHelper.Object, mockMainDom.Object, mockLogger.Object); } - private void VerifyFilesNotCleaned() - { - VerifyFilesCleaned(Times.Never()); - } + private void VerifyFilesNotCleaned() => VerifyFilesCleaned(Times.Never()); - private void VerifyFilesCleaned() - { - VerifyFilesCleaned(Times.Once()); - } + private void VerifyFilesCleaned() => VerifyFilesCleaned(Times.Once()); - private void VerifyFilesCleaned(Times times) - { - _mockIOHelper.Verify(x => x.CleanFolder(It.Is(y => y.FullName == _testPath), It.IsAny()), times); - } + private void VerifyFilesCleaned(Times times) => _mockIOHelper.Verify(x => x.CleanFolder(It.Is(y => y.FullName == _testPath), It.IsAny()), times); } }