Merge remote-tracking branch 'origin/netcore/feature/fix-integration-tests' into netcore/feature/fix-integration-tests

This commit is contained in:
Bjarke Berg
2020-07-07 13:26:31 +02:00
9 changed files with 230 additions and 75 deletions

View 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,
};
}
}
}

View 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);
});
}
}
}

View File

@@ -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>();

View File

@@ -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; }

View File

@@ -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">

View File

@@ -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

View File

@@ -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,

View File

@@ -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);
}
}
}

View File

@@ -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" />