Clean up + migrated AuditServiceTests
This commit is contained in:
107
src/Umbraco.Tests.Common/Builders/AuditEntryBuilder.cs
Normal file
107
src/Umbraco.Tests.Common/Builders/AuditEntryBuilder.cs
Normal file
@@ -0,0 +1,107 @@
|
||||
using System;
|
||||
using System.Globalization;
|
||||
using Umbraco.Core.Models;
|
||||
using Umbraco.Tests.Common.Builders.Interfaces;
|
||||
|
||||
namespace Umbraco.Tests.Common.Builders
|
||||
{
|
||||
public class AuditEntryBuilder : AuditEntryBuilder<object>
|
||||
{
|
||||
public AuditEntryBuilder() : base(null)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
public class AuditEntryBuilder<TParent>
|
||||
: ChildBuilderBase<TParent, IAuditEntry>,
|
||||
IWithIdBuilder,
|
||||
IWithKeyBuilder,
|
||||
IWithCreateDateBuilder,
|
||||
IWithUpdateDateBuilder,
|
||||
IWithDeleteDateBuilder
|
||||
{
|
||||
private DateTime? _createDate;
|
||||
private DateTime? _deleteDate;
|
||||
private int? _id;
|
||||
private Guid? _key;
|
||||
private DateTime? _updateDate;
|
||||
private string _affectedDetails;
|
||||
private int? _affectedUserId;
|
||||
private string _eventDetails;
|
||||
private string _eventType;
|
||||
private string _performingDetails;
|
||||
private string _performingIp;
|
||||
private DateTime? _eventDateUtc;
|
||||
private int? _performingUserId;
|
||||
|
||||
public AuditEntryBuilder(TParent parentBuilder) : base(parentBuilder)
|
||||
{
|
||||
}
|
||||
|
||||
DateTime? IWithCreateDateBuilder.CreateDate
|
||||
{
|
||||
get => _createDate;
|
||||
set => _createDate = value;
|
||||
}
|
||||
|
||||
DateTime? IWithDeleteDateBuilder.DeleteDate
|
||||
{
|
||||
get => _deleteDate;
|
||||
set => _deleteDate = value;
|
||||
}
|
||||
|
||||
int? IWithIdBuilder.Id
|
||||
{
|
||||
get => _id;
|
||||
set => _id = value;
|
||||
}
|
||||
|
||||
Guid? IWithKeyBuilder.Key
|
||||
{
|
||||
get => _key;
|
||||
set => _key = value;
|
||||
}
|
||||
|
||||
DateTime? IWithUpdateDateBuilder.UpdateDate
|
||||
{
|
||||
get => _updateDate;
|
||||
set => _updateDate = value;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public override IAuditEntry Build()
|
||||
{
|
||||
var id = _id ?? 0;
|
||||
var key = _key ?? Guid.NewGuid();
|
||||
var createDate = _createDate ?? DateTime.Now;
|
||||
var updateDate = _updateDate ?? DateTime.Now;
|
||||
var deleteDate = _deleteDate ?? null;
|
||||
var affectedDetails = _affectedDetails ?? Guid.NewGuid().ToString();
|
||||
var affectedUserId = _affectedUserId ?? -1;
|
||||
var eventDetails = _eventDetails ?? Guid.NewGuid().ToString();
|
||||
var eventType = _eventType ?? "umbraco/user";
|
||||
var performingDetails = _performingDetails ?? Guid.NewGuid().ToString();
|
||||
var performingIp = _performingIp ?? "127.0.0.1";
|
||||
var eventDateUtc = _eventDateUtc ?? DateTime.UtcNow;
|
||||
var performingUserId = _performingUserId ?? -1;
|
||||
|
||||
return new AuditEntry
|
||||
{
|
||||
Id = id,
|
||||
Key = key,
|
||||
CreateDate = createDate,
|
||||
UpdateDate = updateDate,
|
||||
DeleteDate = deleteDate,
|
||||
AffectedDetails = affectedDetails,
|
||||
AffectedUserId = affectedUserId,
|
||||
EventDetails = eventDetails,
|
||||
EventType = eventType,
|
||||
PerformingDetails = performingDetails,
|
||||
PerformingIp = performingIp,
|
||||
EventDateUtc = eventDateUtc,
|
||||
PerformingUserId = performingUserId,
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
108
src/Umbraco.Tests.Integration/Services/AuditServiceTests.cs
Normal file
108
src/Umbraco.Tests.Integration/Services/AuditServiceTests.cs
Normal file
@@ -0,0 +1,108 @@
|
||||
using System;
|
||||
using System.Linq;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using NUnit.Framework;
|
||||
using Umbraco.Core.Models;
|
||||
using Umbraco.Core.Services;
|
||||
using Umbraco.Core.Services.Implement;
|
||||
using Umbraco.Tests.Common.Builders;
|
||||
using Umbraco.Tests.Integration.Testing;
|
||||
using Umbraco.Tests.Testing;
|
||||
|
||||
namespace Umbraco.Tests.Services
|
||||
{
|
||||
[TestFixture]
|
||||
[UmbracoTest(Database = UmbracoTestOptions.Database.NewSchemaPerTest)]
|
||||
public class AuditServiceTests : UmbracoIntegrationTest
|
||||
{
|
||||
[Test]
|
||||
public void GetPage()
|
||||
{
|
||||
var sut = (AuditService) GetRequiredService<IAuditService>();
|
||||
var expected = new AuditEntryBuilder().Build();
|
||||
|
||||
|
||||
for (var i = 0; i < 10; i++)
|
||||
{
|
||||
sut.Write(
|
||||
expected.PerformingUserId + i,
|
||||
expected.PerformingDetails,
|
||||
expected.PerformingIp,
|
||||
expected.EventDateUtc.AddMinutes(i),
|
||||
expected.AffectedUserId+ i,
|
||||
expected.AffectedDetails,
|
||||
expected.EventType,
|
||||
expected.EventDetails);
|
||||
}
|
||||
|
||||
var entries = sut.GetPage(2, 2, out var count).ToArray();
|
||||
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.AreEqual(2, entries.Length);
|
||||
Assert.AreEqual(expected.PerformingUserId + 5, entries[0].PerformingUserId);
|
||||
Assert.AreEqual(expected.PerformingUserId + 4, entries[1].PerformingUserId);
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void GetUserLogs()
|
||||
{
|
||||
var sut = (AuditService) Services.GetRequiredService<IAuditService>();
|
||||
|
||||
var eventDateUtc = DateTime.UtcNow.AddDays(-1);
|
||||
|
||||
var numberOfEntries = 10;
|
||||
for (var i = 0; i < numberOfEntries; i++)
|
||||
{
|
||||
eventDateUtc = eventDateUtc.AddMinutes(1);
|
||||
sut.Add(AuditType.Unpublish, -1, 33, "", "blah");
|
||||
}
|
||||
|
||||
sut.Add(AuditType.Publish, -1, 33, "", "blah");
|
||||
|
||||
var logs = sut.GetUserLogs(-1, AuditType.Unpublish).ToArray();
|
||||
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.IsNotNull(logs);
|
||||
CollectionAssert.AllItemsAreNotNull(logs);
|
||||
Assert.AreEqual(numberOfEntries, logs.Length);
|
||||
Assert.AreEqual(numberOfEntries, logs.Count(x => x.AuditType == AuditType.Unpublish));
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Write_and_GetAll()
|
||||
{
|
||||
var sut = (AuditService) Services.GetRequiredService<IAuditService>();
|
||||
var expected = new AuditEntryBuilder().Build();
|
||||
|
||||
var actual = sut.Write(
|
||||
expected.PerformingUserId,
|
||||
expected.PerformingDetails,
|
||||
expected.PerformingIp,
|
||||
expected.EventDateUtc,
|
||||
expected.AffectedUserId,
|
||||
expected.AffectedDetails,
|
||||
expected.EventType,
|
||||
expected.EventDetails);
|
||||
|
||||
var entries = sut.GetAll().ToArray();
|
||||
|
||||
Assert.Multiple(() =>
|
||||
{
|
||||
Assert.AreEqual(expected.PerformingUserId, actual.PerformingUserId);
|
||||
Assert.AreEqual(expected.PerformingDetails, actual.PerformingDetails);
|
||||
Assert.AreEqual(expected.EventDateUtc, actual.EventDateUtc);
|
||||
Assert.AreEqual(expected.AffectedUserId, actual.AffectedUserId);
|
||||
Assert.AreEqual(expected.AffectedDetails, actual.AffectedDetails);
|
||||
Assert.AreEqual(expected.EventType, actual.EventType);
|
||||
Assert.AreEqual(expected.EventDetails, actual.EventDetails);
|
||||
Assert.IsNotNull(entries);
|
||||
Assert.AreEqual(1, entries.Length);
|
||||
Assert.AreEqual(expected.PerformingUserId, entries[0].PerformingUserId);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -180,7 +180,7 @@ namespace Umbraco.Tests.Integration.TestServerTest.Controllers
|
||||
|
||||
var user = new UserBuilder()
|
||||
.AddUserGroup()
|
||||
.WithAlias("writer") // Needs to be an existing alias
|
||||
.WithAlias("writer") // Needs to be an existing alias
|
||||
.Done()
|
||||
.WithIsLockedOut(true, DateTime.UtcNow)
|
||||
.Build();
|
||||
@@ -208,6 +208,14 @@ namespace Umbraco.Tests.Integration.TestServerTest.Controllers
|
||||
[Test]
|
||||
public async Task PostUnlockUsers_When_Multiple_UserIds_Supplied_Expect_User_Locked_Out_With_Correct_Response_Message()
|
||||
{
|
||||
|
||||
var xxx = new UserBuilder()
|
||||
.WithUsername("Admin")
|
||||
.AddUserGroup()
|
||||
.WithAlias("writer")
|
||||
.Done()
|
||||
.Build();
|
||||
|
||||
var numberOfUsers = 3;
|
||||
var userService = GetRequiredService<IUserService>();
|
||||
|
||||
|
||||
@@ -144,6 +144,8 @@ namespace Umbraco.Tests.Integration.Testing
|
||||
|
||||
}
|
||||
|
||||
protected T GetRequiredService<T>() => Services.GetRequiredService<T>();
|
||||
|
||||
#region Common services
|
||||
|
||||
protected string TestDBConnectionString { get; private set; }
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
<PackageReference Include="LightInject.Microsoft.DependencyInjection" Version="3.3.0" />
|
||||
<PackageReference Include="Microsoft.AspNet.WebApi.Client" Version="5.2.7" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Mvc.Testing" Version="3.1.4" />
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.5.0" />
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.6.1" />
|
||||
<PackageReference Include="Moq" Version="4.13.1" />
|
||||
<PackageReference Include="nunit" Version="3.12.0" />
|
||||
<PackageReference Include="NUnit3TestAdapter" Version="3.16.1">
|
||||
|
||||
@@ -4,13 +4,12 @@ using AutoFixture.AutoMoq;
|
||||
using AutoFixture.Kernel;
|
||||
using AutoFixture.NUnit3;
|
||||
using Microsoft.AspNetCore.Identity;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Moq;
|
||||
using Umbraco.Core.BackOffice;
|
||||
using Umbraco.Core.Configuration;
|
||||
using Umbraco.Web.BackOffice.Controllers;
|
||||
|
||||
namespace Umbraco.Tests.Common.AutoFixture
|
||||
namespace Umbraco.Tests.UnitTests.AutoFixture
|
||||
{
|
||||
[AttributeUsage(AttributeTargets.Method | AttributeTargets.Constructor)]
|
||||
public class AutoMoqDataAttribute : AutoDataAttribute
|
||||
|
||||
@@ -1,11 +1,10 @@
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using AutoFixture.NUnit3;
|
||||
using Microsoft.AspNetCore.Identity;
|
||||
using Moq;
|
||||
using NUnit.Framework;
|
||||
using Umbraco.Core.BackOffice;
|
||||
using Umbraco.Tests.Common.AutoFixture;
|
||||
using Umbraco.Tests.UnitTests.AutoFixture;
|
||||
using Umbraco.Web.BackOffice.Controllers;
|
||||
using Umbraco.Web.Common.Exceptions;
|
||||
|
||||
@@ -15,7 +14,7 @@ namespace Umbraco.Tests.Web.Controllers
|
||||
public class UsersControllerUnitTests
|
||||
{
|
||||
[Test,AutoMoqData]
|
||||
public async Task PostUnlockUsers_When_User_Lockout_Update_Fails_Expect_Failure_Response(
|
||||
public void PostUnlockUsers_When_User_Lockout_Update_Fails_Expect_Failure_Response(
|
||||
[Frozen] IUserStore<BackOfficeIdentityUser> userStore,
|
||||
UsersController sut,
|
||||
BackOfficeIdentityUser user,
|
||||
|
||||
@@ -1,67 +0,0 @@
|
||||
using System;
|
||||
using System.Linq;
|
||||
using NUnit.Framework;
|
||||
using Umbraco.Core.Services.Implement;
|
||||
using Umbraco.Tests.TestHelpers;
|
||||
using Umbraco.Tests.Testing;
|
||||
using Umbraco.Core.Models;
|
||||
|
||||
namespace Umbraco.Tests.Services
|
||||
{
|
||||
[TestFixture]
|
||||
[UmbracoTest(Database = UmbracoTestOptions.Database.NewSchemaPerFixture)]
|
||||
public class AuditServiceTests : TestWithDatabaseBase
|
||||
{
|
||||
[Test]
|
||||
public void CanCrudAuditEntry()
|
||||
{
|
||||
var yesterday = DateTime.UtcNow.AddDays(-1);
|
||||
var entry = ServiceContext.AuditService.Write(123, "user 123, bob@example.com", null, yesterday, 456, "user 456, alice@example.com", "umbraco/user", "change property whatever value");
|
||||
Assert.AreEqual(123, entry.PerformingUserId);
|
||||
Assert.AreEqual("user 123, bob@example.com", entry.PerformingDetails);
|
||||
Assert.AreEqual(yesterday, entry.EventDateUtc);
|
||||
Assert.AreEqual(456, entry.AffectedUserId);
|
||||
Assert.AreEqual("user 456, alice@example.com", entry.AffectedDetails);
|
||||
Assert.AreEqual("umbraco/user", entry.EventType);
|
||||
Assert.AreEqual("change property whatever value", entry.EventDetails);
|
||||
|
||||
var entries = ((AuditService)ServiceContext.AuditService).GetAll().ToArray();
|
||||
Assert.IsNotNull(entries);
|
||||
Assert.AreEqual(1, entries.Length);
|
||||
Assert.AreEqual(123, entries[0].PerformingUserId);
|
||||
|
||||
for (var i = 0; i < 10; i++)
|
||||
{
|
||||
yesterday = yesterday.AddMinutes(1);
|
||||
entry = ServiceContext.AuditService.Write(123 + i, "user 123, bob@example.com", null, yesterday, 456 + i, "user 456, alice@example.com", "umbraco/user", "change property whatever value");
|
||||
}
|
||||
|
||||
//
|
||||
// page 0 contains 123+9, 123+8
|
||||
// page 1 contains 123+7, 123+6
|
||||
// page 2 contains 123+5, 123+4
|
||||
// ...
|
||||
|
||||
entries = ((AuditService)ServiceContext.AuditService).GetPage(2, 2, out var count).ToArray();
|
||||
|
||||
Assert.AreEqual(2, entries.Length);
|
||||
|
||||
Assert.AreEqual(123 + 5, entries[0].PerformingUserId);
|
||||
Assert.AreEqual(123 + 4, entries[1].PerformingUserId);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void CanReadEntries()
|
||||
{
|
||||
var yesterday = DateTime.UtcNow.AddDays(-1);
|
||||
|
||||
for (var i = 0; i < 10; i++)
|
||||
{
|
||||
yesterday = yesterday.AddMinutes(1);
|
||||
ServiceContext.AuditService.Add(AuditType.Unpublish, -1, 33, "", "blah");
|
||||
}
|
||||
|
||||
var logs = ServiceContext.AuditService.GetUserLogs(-1, AuditType.Unpublish);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -207,7 +207,6 @@
|
||||
<Compile Include="Scoping\ScopeFileSystemsTests.cs" />
|
||||
<Compile Include="Scoping\ScopedNuCacheTests.cs" />
|
||||
<Compile Include="Scoping\ScopeTests.cs" />
|
||||
<Compile Include="Services\AuditServiceTests.cs" />
|
||||
<Compile Include="Services\CachedDataTypeServiceTests.cs" />
|
||||
<Compile Include="Services\ConsentServiceTests.cs" />
|
||||
<Compile Include="Services\SectionServiceTests.cs" />
|
||||
|
||||
Reference in New Issue
Block a user