Created unit tests for health check results

This commit is contained in:
AndyButland
2017-06-05 14:37:50 +02:00
parent dd84164ac5
commit 28247add3c
3 changed files with 131 additions and 12 deletions

View File

@@ -210,6 +210,7 @@
<Compile Include="Collections\DeepCloneableListTests.cs" />
<Compile Include="Web\Controllers\BackOfficeControllerUnitTests.cs" />
<Compile Include="DelegateExtensionsTests.cs" />
<Compile Include="Web\HealthChecks\HealthCheckResultsTests.cs" />
<Compile Include="Web\Mvc\RenderIndexActionSelectorAttributeTests.cs" />
<Compile Include="Persistence\Repositories\AuditRepositoryTest.cs" />
<Compile Include="Persistence\Repositories\DomainRepositoryTest.cs" />

View File

@@ -0,0 +1,121 @@
using System;
using System.Collections.Generic;
using Moq;
using NUnit.Framework;
using Umbraco.Core;
using Umbraco.Web.HealthCheck;
namespace Umbraco.Tests.Web.HealthChecks
{
[TestFixture]
public class HealthCheckResultsTests
{
[HealthCheck("CFD6FC34-59C9-4402-B55F-C8BC96B628A1", "Stub check")]
public abstract class StubHealthCheck : HealthCheck
{
private readonly string _message;
private readonly StatusResultType _resultType;
public StubHealthCheck(StatusResultType resultType, string message) : base(null)
{
_resultType = resultType;
_message = message;
}
public override HealthCheckStatus ExecuteAction(HealthCheckAction action)
{
throw new NotImplementedException();
}
public override IEnumerable<HealthCheckStatus> GetStatus()
{
return new List<HealthCheckStatus>
{
new HealthCheckStatus(_message)
{
ResultType = _resultType
}
};
}
}
[HealthCheck("CFD6FC34-59C9-4402-B55F-C8BC96B628A1", "Stub check 1")]
public class StubHealthCheck1 : StubHealthCheck
{
public StubHealthCheck1(StatusResultType resultType, string message) : base(resultType, message)
{
}
}
[HealthCheck("CFD6FC34-59C9-4402-B55F-C8BC96B628A2", "Stub check 2")]
public class StubHealthCheck2 : StubHealthCheck
{
public StubHealthCheck2(StatusResultType resultType, string message) : base(resultType, message)
{
}
}
[HealthCheck("CFD6FC34-59C9-4402-B55F-C8BC96B628A3", "Stub check 3")]
public class StubHealthCheck3 : StubHealthCheck
{
public StubHealthCheck3(StatusResultType resultType, string message) : base(resultType, message)
{
}
public override IEnumerable<HealthCheckStatus> GetStatus()
{
throw new Exception("Check threw exception");
}
}
[Test]
public void HealthCheckResults_WithSuccessfulChecks_ReturnsCorrectResultDescription()
{
var checks = new List<HealthCheck>
{
new StubHealthCheck1(StatusResultType.Success, "First check was successful"),
new StubHealthCheck2(StatusResultType.Success, "Second check was successful"),
};
var results = new HealthCheckResults(checks);
Assert.IsTrue(results.AllChecksSuccessful);
var resultAsMarkdown = results.ResultsAsMarkDown();
Assert.IsTrue(resultAsMarkdown.IndexOf("Checks for 'Stub check 1' all completed succesfully.") > -1);
Assert.IsTrue(resultAsMarkdown.IndexOf("Checks for 'Stub check 2' all completed succesfully.") > -1);
}
[Test]
public void HealthCheckResults_WithFailingChecks_ReturnsCorrectResultDescription()
{
var checks = new List<HealthCheck>
{
new StubHealthCheck1(StatusResultType.Success, "First check was successful"),
new StubHealthCheck2(StatusResultType.Error, "Second check was not successful"),
};
var results = new HealthCheckResults(checks);
Assert.IsFalse(results.AllChecksSuccessful);
var resultAsMarkdown = results.ResultsAsMarkDown();
Assert.IsTrue(resultAsMarkdown.IndexOf("Checks for 'Stub check 1' all completed succesfully.") > -1);
Assert.IsTrue(resultAsMarkdown.IndexOf("Checks for 'Stub check 2' completed with errors.") > -1);
}
[Test]
public void HealthCheckResults_WithErroringCheck_ReturnsCorrectResultDescription()
{
var checks = new List<HealthCheck>
{
new StubHealthCheck1(StatusResultType.Success, "First check was successful"),
new StubHealthCheck3(StatusResultType.Error, "Third check was not successful"),
new StubHealthCheck2(StatusResultType.Error, "Second check was not successful"),
};
var results = new HealthCheckResults(checks);
Assert.IsFalse(results.AllChecksSuccessful);
var resultAsMarkdown = results.ResultsAsMarkDown();
Assert.IsTrue(resultAsMarkdown.IndexOf("Checks for 'Stub check 1' all completed succesfully.") > -1);
Assert.IsTrue(resultAsMarkdown.IndexOf("Checks for 'Stub check 2' completed with errors.") > -1);
Assert.IsTrue(resultAsMarkdown.IndexOf("Checks for 'Stub check 3' completed with errors.") > -1);
}
}
}

View File

@@ -27,8 +27,6 @@ namespace Umbraco.Web.HealthCheck
var message = string.Format("Health check failed with exception: {0}. See logs for details.", ex.Message);
return new List<HealthCheckStatus>
{
new HealthCheckStatus(message)
{
ResultType = StatusResultType.Error
@@ -37,18 +35,17 @@ namespace Umbraco.Web.HealthCheck
}
});
// find out if all checks pass or not
AllChecksSuccessful = true;
foreach (var result in _results)
// find out if all checks pass or not
AllChecksSuccessful = true;
foreach (var result in _results)
{
var checkIsSuccess = result.Value.All(x => x.ResultType == StatusResultType.Success);
if (checkIsSuccess == false)
{
var checkIsSuccess = result.Value.All(x => x.ResultType == StatusResultType.Success);
if (checkIsSuccess == false)
{
AllChecksSuccessful = false;
break;
}
AllChecksSuccessful = false;
break;
}
}
}
internal void LogResults()