From 41ebce7cae0d1f261353dd2aa5c7487a66acbf42 Mon Sep 17 00:00:00 2001 From: Jamie Rees Date: Tue, 9 Apr 2019 13:52:50 +0100 Subject: [PATCH] Fixed all the unit tests --- .../Engine/CalendarEngineTests.cs | 2 +- src/Ombi.Core.Tests/Ombi.Core.Tests.csproj | 2 + .../Rule/Request/AutoApproveRuleTests.cs | 47 ++++++++++++-- .../Rule/Request/CanRequestRuleTests.cs | 28 ++++++-- .../Rule/Search/EmbyAvailabilityRuleTests.cs | 65 ++++++++++++++++++- .../Rule/Search/ExistingRequestRuleTests.cs | 14 ++-- .../Rule/Rules/Search/EmbyAvailabilityRule.cs | 17 +++-- .../Rule/Rules/Search/ExistingRule.cs | 1 - src/Ombi.Schedule.Tests/IssuesPurgeTests.cs | 32 ++++++++- .../Jobs/Ombi/Interfaces/IssuesPurge.cs | 5 +- .../Settings/Models/CustomizationSettings.cs | 2 +- src/Ombi.Test.Common/MockHelper.cs | 32 +++++++++ src/Ombi.Test.Common/Ombi.Test.Common.csproj | 17 +++++ src/Ombi.sln | 13 +++- 14 files changed, 238 insertions(+), 39 deletions(-) create mode 100644 src/Ombi.Test.Common/MockHelper.cs create mode 100644 src/Ombi.Test.Common/Ombi.Test.Common.csproj diff --git a/src/Ombi.Core.Tests/Engine/CalendarEngineTests.cs b/src/Ombi.Core.Tests/Engine/CalendarEngineTests.cs index 190c6c758..b922a21c0 100644 --- a/src/Ombi.Core.Tests/Engine/CalendarEngineTests.cs +++ b/src/Ombi.Core.Tests/Engine/CalendarEngineTests.cs @@ -181,7 +181,7 @@ namespace Ombi.Core.Tests.Engine yield return new TestCaseData(new AvailabilityTestModel { Approved = true - }).Returns("teal").SetName("Calendar_ApprovedRequest"); + }).Returns("blue").SetName("Calendar_ApprovedRequest"); } } } diff --git a/src/Ombi.Core.Tests/Ombi.Core.Tests.csproj b/src/Ombi.Core.Tests/Ombi.Core.Tests.csproj index f4cc672c2..ed43d4991 100644 --- a/src/Ombi.Core.Tests/Ombi.Core.Tests.csproj +++ b/src/Ombi.Core.Tests/Ombi.Core.Tests.csproj @@ -10,11 +10,13 @@ + + diff --git a/src/Ombi.Core.Tests/Rule/Request/AutoApproveRuleTests.cs b/src/Ombi.Core.Tests/Rule/Request/AutoApproveRuleTests.cs index 34c21e008..b4d41cb4b 100644 --- a/src/Ombi.Core.Tests/Rule/Request/AutoApproveRuleTests.cs +++ b/src/Ombi.Core.Tests/Rule/Request/AutoApproveRuleTests.cs @@ -6,28 +6,41 @@ using Ombi.Store.Entities.Requests; using NUnit.Framework; using Ombi.Core.Authentication; using Ombi.Helpers; +using Ombi.Test.Common; +using System.Collections.Generic; +using Ombi.Store.Entities; +using System; namespace Ombi.Core.Tests.Rule.Request { [TestFixture] public class AutoApproveRuleTests { + private List _users = new List + { + new OmbiUser { Id = Guid.NewGuid().ToString("N"), UserName="abc" } + }; + [SetUp] public void Setup() { PrincipalMock = new Mock(); - Rule = new AutoApproveRule(PrincipalMock.Object, null); + PrincipalMock.Setup(x => x.Identity.Name).Returns("abc"); + + UserManager = MockHelper.MockUserManager(_users); + Rule = new AutoApproveRule(PrincipalMock.Object, UserManager.Object); } private AutoApproveRule Rule { get; set; } private Mock PrincipalMock { get; set; } + private Mock UserManager { get; set; } [Test] public async Task Should_ReturnSuccess_WhenAdminAndRequestMovie() { - PrincipalMock.Setup(x => x.IsInRole(OmbiRoles.Admin)).Returns(true); + UserManager.Setup(x => x.IsInRoleAsync(It.IsAny(), OmbiRoles.Admin)).ReturnsAsync(true); var request = new BaseRequest() { RequestType = Store.Entities.RequestType.Movie }; var result = await Rule.Execute(request); @@ -38,7 +51,7 @@ namespace Ombi.Core.Tests.Rule.Request [Test] public async Task Should_ReturnSuccess_WhenAdminAndRequestTV() { - PrincipalMock.Setup(x => x.IsInRole(OmbiRoles.Admin)).Returns(true); + UserManager.Setup(x => x.IsInRoleAsync(It.IsAny(), OmbiRoles.Admin)).ReturnsAsync(true); var request = new BaseRequest() { RequestType = Store.Entities.RequestType.TvShow }; var result = await Rule.Execute(request); @@ -49,7 +62,7 @@ namespace Ombi.Core.Tests.Rule.Request [Test] public async Task Should_ReturnSuccess_WhenAutoApproveMovieAndRequestMovie() { - PrincipalMock.Setup(x => x.IsInRole(OmbiRoles.AutoApproveMovie)).Returns(true); + UserManager.Setup(x => x.IsInRoleAsync(It.IsAny(), OmbiRoles.AutoApproveMovie)).ReturnsAsync(true); var request = new BaseRequest() { RequestType = Store.Entities.RequestType.Movie }; var result = await Rule.Execute(request); @@ -57,10 +70,21 @@ namespace Ombi.Core.Tests.Rule.Request Assert.True(request.Approved); } + [Test] + public async Task Should_ReturnFail_WhenAutoApproveMovie_And_RequestTV() + { + UserManager.Setup(x => x.IsInRoleAsync(It.IsAny(), OmbiRoles.AutoApproveMovie)).ReturnsAsync(true); + var request = new BaseRequest() { RequestType = Store.Entities.RequestType.TvShow }; + var result = await Rule.Execute(request); + + Assert.True(result.Success); + Assert.False(request.Approved); + } + [Test] public async Task Should_ReturnSuccess_WhenAutoApproveTVAndRequestTV() { - PrincipalMock.Setup(x => x.IsInRole(OmbiRoles.AutoApproveTv)).Returns(true); + UserManager.Setup(x => x.IsInRoleAsync(It.IsAny(), OmbiRoles.AutoApproveTv)).ReturnsAsync(true); var request = new BaseRequest() { RequestType = Store.Entities.RequestType.TvShow }; var result = await Rule.Execute(request); @@ -68,9 +92,21 @@ namespace Ombi.Core.Tests.Rule.Request Assert.True(request.Approved); } + [Test] + public async Task Should_ReturnFail_WhenAutoApproveTV_And_RequestMovie() + { + UserManager.Setup(x => x.IsInRoleAsync(It.IsAny(), OmbiRoles.AutoApproveTv)).ReturnsAsync(true); + var request = new BaseRequest() { RequestType = Store.Entities.RequestType.Movie }; + var result = await Rule.Execute(request); + + Assert.True(result.Success); + Assert.False(request.Approved); + } + [Test] public async Task Should_ReturnFail_WhenNoClaimsAndRequestMovie() { + UserManager.Setup(x => x.IsInRoleAsync(It.IsAny(), It.IsAny())).ReturnsAsync(false); var request = new BaseRequest() { RequestType = Store.Entities.RequestType.Movie }; var result = await Rule.Execute(request); @@ -81,6 +117,7 @@ namespace Ombi.Core.Tests.Rule.Request [Test] public async Task Should_ReturnFail_WhenNoClaimsAndRequestTV() { + UserManager.Setup(x => x.IsInRoleAsync(It.IsAny(), It.IsAny())).ReturnsAsync(false); var request = new BaseRequest() { RequestType = Store.Entities.RequestType.TvShow }; var result = await Rule.Execute(request); diff --git a/src/Ombi.Core.Tests/Rule/Request/CanRequestRuleTests.cs b/src/Ombi.Core.Tests/Rule/Request/CanRequestRuleTests.cs index f2781c8d2..a1630af92 100644 --- a/src/Ombi.Core.Tests/Rule/Request/CanRequestRuleTests.cs +++ b/src/Ombi.Core.Tests/Rule/Request/CanRequestRuleTests.cs @@ -1,32 +1,46 @@ +using System; +using System.Collections.Generic; using System.Security.Principal; using System.Threading.Tasks; using Moq; using NUnit.Framework; +using Ombi.Core.Authentication; using Ombi.Core.Rule.Rules; using Ombi.Core.Rule.Rules.Request; using Ombi.Helpers; +using Ombi.Store.Entities; using Ombi.Store.Entities.Requests; +using Ombi.Test.Common; namespace Ombi.Core.Tests.Rule.Request { public class CanRequestRuleTests { + private List _users = new List + { + new OmbiUser { Id = Guid.NewGuid().ToString("N"), UserName="abc" } + }; + [SetUp] public void Setup() { PrincipalMock = new Mock(); - Rule = new CanRequestRule(PrincipalMock.Object, null); + PrincipalMock.Setup(x => x.Identity.Name).Returns("abc"); + + UserManager = MockHelper.MockUserManager(_users); + Rule = new CanRequestRule(PrincipalMock.Object, UserManager.Object); } private CanRequestRule Rule { get; set; } private Mock PrincipalMock { get; set; } + private Mock UserManager { get; set; } [Test] public async Task Should_ReturnSuccess_WhenRequestingMovieWithMovieRole() { - PrincipalMock.Setup(x => x.IsInRole(OmbiRoles.RequestMovie)).Returns(true); + UserManager.Setup(x => x.IsInRoleAsync(It.IsAny(), OmbiRoles.RequestMovie)).ReturnsAsync(true); var request = new BaseRequest() { RequestType = Store.Entities.RequestType.Movie }; var result = await Rule.Execute(request); @@ -36,7 +50,7 @@ namespace Ombi.Core.Tests.Rule.Request [Test] public async Task Should_ReturnFail_WhenRequestingMovieWithoutMovieRole() { - PrincipalMock.Setup(x => x.IsInRole(OmbiRoles.RequestMovie)).Returns(false); + UserManager.Setup(x => x.IsInRoleAsync(It.IsAny(), OmbiRoles.RequestMovie)).ReturnsAsync(false); var request = new BaseRequest() { RequestType = Store.Entities.RequestType.Movie }; var result = await Rule.Execute(request); @@ -47,7 +61,7 @@ namespace Ombi.Core.Tests.Rule.Request [Test] public async Task Should_ReturnSuccess_WhenRequestingMovieWithAdminRole() { - PrincipalMock.Setup(x => x.IsInRole(OmbiRoles.Admin)).Returns(true); + UserManager.Setup(x => x.IsInRoleAsync(It.IsAny(), OmbiRoles.Admin)).ReturnsAsync(true); var request = new BaseRequest() { RequestType = Store.Entities.RequestType.Movie }; var result = await Rule.Execute(request); @@ -57,7 +71,7 @@ namespace Ombi.Core.Tests.Rule.Request [Test] public async Task Should_ReturnSuccess_WhenRequestingTVWithAdminRole() { - PrincipalMock.Setup(x => x.IsInRole(OmbiRoles.Admin)).Returns(true); + UserManager.Setup(x => x.IsInRoleAsync(It.IsAny(), OmbiRoles.Admin)).ReturnsAsync(true); var request = new BaseRequest() { RequestType = Store.Entities.RequestType.TvShow }; var result = await Rule.Execute(request); @@ -67,7 +81,7 @@ namespace Ombi.Core.Tests.Rule.Request [Test] public async Task Should_ReturnSuccess_WhenRequestingTVWithTVRole() { - PrincipalMock.Setup(x => x.IsInRole(OmbiRoles.RequestTv)).Returns(true); + UserManager.Setup(x => x.IsInRoleAsync(It.IsAny(), OmbiRoles.RequestTv)).ReturnsAsync(true); var request = new BaseRequest() { RequestType = Store.Entities.RequestType.TvShow }; var result = await Rule.Execute(request); @@ -77,7 +91,7 @@ namespace Ombi.Core.Tests.Rule.Request [Test] public async Task Should_ReturnFail_WhenRequestingTVWithoutTVRole() { - PrincipalMock.Setup(x => x.IsInRole(OmbiRoles.RequestTv)).Returns(false); + UserManager.Setup(x => x.IsInRoleAsync(It.IsAny(), OmbiRoles.RequestTv)).ReturnsAsync(false); var request = new BaseRequest() { RequestType = Store.Entities.RequestType.TvShow }; var result = await Rule.Execute(request); diff --git a/src/Ombi.Core.Tests/Rule/Search/EmbyAvailabilityRuleTests.cs b/src/Ombi.Core.Tests/Rule/Search/EmbyAvailabilityRuleTests.cs index 0171e37a1..8aac99464 100644 --- a/src/Ombi.Core.Tests/Rule/Search/EmbyAvailabilityRuleTests.cs +++ b/src/Ombi.Core.Tests/Rule/Search/EmbyAvailabilityRuleTests.cs @@ -4,6 +4,8 @@ using Moq; using NUnit.Framework; using Ombi.Core.Models.Search; using Ombi.Core.Rule.Rules.Search; +using Ombi.Core.Settings; +using Ombi.Core.Settings.Models.External; using Ombi.Store.Entities; using Ombi.Store.Repository; using Ombi.Store.Repository.Requests; @@ -16,15 +18,18 @@ namespace Ombi.Core.Tests.Rule.Search public void Setup() { ContextMock = new Mock(); - Rule = new EmbyAvailabilityRule(ContextMock.Object, null); + SettingsMock = new Mock>(); + Rule = new EmbyAvailabilityRule(ContextMock.Object, SettingsMock.Object); } private EmbyAvailabilityRule Rule { get; set; } private Mock ContextMock { get; set; } + private Mock> SettingsMock { get; set; } [Test] public async Task Movie_ShouldBe_Available_WhenFoundInEmby() { + SettingsMock.Setup(x => x.GetSettingsAsync()).ReturnsAsync(new EmbySettings()); ContextMock.Setup(x => x.GetByTheMovieDbId(It.IsAny())).ReturnsAsync(new EmbyContent { ProviderId = "123" @@ -39,6 +44,64 @@ namespace Ombi.Core.Tests.Rule.Search Assert.True(search.Available); } + [Test] + public async Task Movie_Has_Custom_Url_When_Specified_In_Settings() + { + SettingsMock.Setup(x => x.GetSettingsAsync()).ReturnsAsync(new EmbySettings + { + Enable = true, + Servers = new List + { + new EmbyServers + { + ServerHostname = "http://test.com/" + } + } + }); + ContextMock.Setup(x => x.GetByTheMovieDbId(It.IsAny())).ReturnsAsync(new EmbyContent + { + ProviderId = "123", + EmbyId = 1.ToString() + }); + var search = new SearchMovieViewModel() + { + TheMovieDbId = "123", + }; + var result = await Rule.Execute(search); + + Assert.True(result.Success); + Assert.That(search.EmbyUrl, Is.EqualTo("http://test.com/#!/itemdetails.html?id=1")); + } + + [Test] + public async Task Movie_Uses_Default_Url_When() + { + SettingsMock.Setup(x => x.GetSettingsAsync()).ReturnsAsync(new EmbySettings + { + Enable = true, + Servers = new List + { + new EmbyServers + { + ServerHostname = string.Empty + } + } + }); + ContextMock.Setup(x => x.GetByTheMovieDbId(It.IsAny())).ReturnsAsync(new EmbyContent + { + ProviderId = "123", + EmbyId = 1.ToString() + }); + var search = new SearchMovieViewModel() + { + TheMovieDbId = "123", + }; + var result = await Rule.Execute(search); + + Assert.True(result.Success); + Assert.That(search.EmbyUrl, Is.EqualTo("https://app.emby.media/#!/itemdetails.html?id=1")); + } + [Test] public async Task Movie_ShouldBe_NotAvailable_WhenNotFoundInEmby() { diff --git a/src/Ombi.Core.Tests/Rule/Search/ExistingRequestRuleTests.cs b/src/Ombi.Core.Tests/Rule/Search/ExistingRequestRuleTests.cs index e32c8e996..ea9208cf7 100644 --- a/src/Ombi.Core.Tests/Rule/Search/ExistingRequestRuleTests.cs +++ b/src/Ombi.Core.Tests/Rule/Search/ExistingRequestRuleTests.cs @@ -11,7 +11,7 @@ using Ombi.Store.Repository.Requests; namespace Ombi.Core.Tests.Rule.Search { - public class ExistignRequestRuleTests + public class ExistingRequestRuleTests { [SetUp] public void Setup() @@ -39,18 +39,16 @@ namespace Ombi.Core.Tests.Rule.Search RequestType = RequestType.Movie }; - MovieMock.Setup(x => x.GetRequest(123)).Returns(list); + MovieMock.Setup(x => x.GetRequestAsync(123)).ReturnsAsync(list); var search = new SearchMovieViewModel { Id = 123, - - }; var result = await Rule.Execute(search); - Assert.True(result.Success); - Assert.True(search.Approved); - Assert.True(search.Requested); + Assert.That(result.Success, Is.True); + Assert.That(search.Approved, Is.True); + Assert.That(search.Requested, Is.True); } [Test] @@ -62,7 +60,7 @@ namespace Ombi.Core.Tests.Rule.Search Approved = true }; - MovieMock.Setup(x => x.GetRequest(123)).Returns(list); + MovieMock.Setup(x => x.GetRequestAsync(123)).ReturnsAsync(list); var search = new SearchMovieViewModel { Id = 999, diff --git a/src/Ombi.Core/Rule/Rules/Search/EmbyAvailabilityRule.cs b/src/Ombi.Core/Rule/Rules/Search/EmbyAvailabilityRule.cs index f80bded7a..8fcc92c1f 100644 --- a/src/Ombi.Core/Rule/Rules/Search/EmbyAvailabilityRule.cs +++ b/src/Ombi.Core/Rule/Rules/Search/EmbyAvailabilityRule.cs @@ -65,14 +65,17 @@ namespace Ombi.Core.Rule.Rules.Search { obj.Available = true; var s = await EmbySettings.GetSettingsAsync(); - var server = s.Servers.FirstOrDefault(x => x.ServerHostname != null); - if ((server?.ServerHostname ?? string.Empty).HasValue()) + if (s.Enable) { - obj.EmbyUrl = $"{server.ServerHostname}#!/itemdetails.html?id={item.EmbyId}"; - } - else - { - obj.EmbyUrl = $"https://app.emby.media/#!/itemdetails.html?id={item.EmbyId}"; + var server = s.Servers.FirstOrDefault(x => x.ServerHostname != null); + if ((server?.ServerHostname ?? string.Empty).HasValue()) + { + obj.EmbyUrl = $"{server.ServerHostname}#!/itemdetails.html?id={item.EmbyId}"; + } + else + { + obj.EmbyUrl = $"https://app.emby.media/#!/itemdetails.html?id={item.EmbyId}"; + } } if (obj.Type == RequestType.TvShow) diff --git a/src/Ombi.Core/Rule/Rules/Search/ExistingRule.cs b/src/Ombi.Core/Rule/Rules/Search/ExistingRule.cs index f2358a5f6..d56de74ac 100644 --- a/src/Ombi.Core/Rule/Rules/Search/ExistingRule.cs +++ b/src/Ombi.Core/Rule/Rules/Search/ExistingRule.cs @@ -30,7 +30,6 @@ namespace Ombi.Core.Rule.Rules.Search var movieRequests = await Movie.GetRequestAsync(obj.Id); if (movieRequests != null) // Do we already have a request for this? { - obj.Requested = true; obj.RequestId = movieRequests.Id; obj.Approved = movieRequests.Approved; diff --git a/src/Ombi.Schedule.Tests/IssuesPurgeTests.cs b/src/Ombi.Schedule.Tests/IssuesPurgeTests.cs index 932022cd8..1ddafb55b 100644 --- a/src/Ombi.Schedule.Tests/IssuesPurgeTests.cs +++ b/src/Ombi.Schedule.Tests/IssuesPurgeTests.cs @@ -44,12 +44,12 @@ namespace Ombi.Schedule.Tests new Issues { Status = IssueStatus.Resolved, - ResovledDate = DateTime.Now.AddDays(-5).AddHours(-1) + ResovledDate = DateTime.UtcNow.AddDays(-5).AddHours(-8) } }; Settings.Setup(x => x.GetSettingsAsync()).ReturnsAsync(new IssueSettings { DeleteIssues = true, DaysAfterResolvedToDelete = 5 }); - Repo.Setup(x => x.GetAll()).Returns(new EnumerableQuery(issues)); + Repo.Setup(x => x.GetAll()).Returns(issues.AsQueryable()); await Job.Start(); Assert.That(issues.First().Status, Is.EqualTo(IssueStatus.Deleted)); @@ -57,7 +57,7 @@ namespace Ombi.Schedule.Tests } [Test] - public async Task DoesNot_Delete_AnyIssues() + public async Task DoesNot_Delete_AllIssues() { var issues = new List() { @@ -81,5 +81,31 @@ namespace Ombi.Schedule.Tests Assert.That(issues[1].Status, Is.EqualTo(IssueStatus.Deleted)); Repo.Verify(x => x.SaveChangesAsync(), Times.Once); } + + [Test] + public async Task DoesNot_Delete_AnyIssues() + { + var issues = new List() + { + new Issues + { + Status = IssueStatus.Resolved, + ResovledDate = DateTime.Now.AddDays(-2) + }, + new Issues + { + Status = IssueStatus.Resolved, + ResovledDate = DateTime.Now.AddDays(-4) + } + }; + + Settings.Setup(x => x.GetSettingsAsync()).ReturnsAsync(new IssueSettings { DeleteIssues = true, DaysAfterResolvedToDelete = 5 }); + Repo.Setup(x => x.GetAll()).Returns(new EnumerableQuery(issues)); + await Job.Start(); + + Assert.That(issues[0].Status, Is.Not.EqualTo(IssueStatus.Deleted)); + Assert.That(issues[1].Status, Is.Not.EqualTo(IssueStatus.Deleted)); + Repo.Verify(x => x.SaveChangesAsync(), Times.Once); + } } } \ No newline at end of file diff --git a/src/Ombi.Schedule/Jobs/Ombi/Interfaces/IssuesPurge.cs b/src/Ombi.Schedule/Jobs/Ombi/Interfaces/IssuesPurge.cs index 5af4b565d..b25bc49ed 100644 --- a/src/Ombi.Schedule/Jobs/Ombi/Interfaces/IssuesPurge.cs +++ b/src/Ombi.Schedule/Jobs/Ombi/Interfaces/IssuesPurge.cs @@ -28,9 +28,10 @@ namespace Ombi.Schedule.Jobs.Ombi return; } - var deletionDate = DateTime.Now.AddDays(settings.DaysAfterResolvedToDelete).Date; + var today = DateTime.UtcNow.Date; + var resolved = _issuesRepository.GetAll().Where(x => x.Status == IssueStatus.Resolved); - var toDelete = resolved.Where(x => x.ResovledDate.HasValue && x.ResovledDate.Value.Date >= deletionDate); + var toDelete = resolved.Where(x => x.ResovledDate.HasValue && (today - x.ResovledDate.Value.Date).TotalDays >= settings.DaysAfterResolvedToDelete); foreach (var d in toDelete) { diff --git a/src/Ombi.Settings/Settings/Models/CustomizationSettings.cs b/src/Ombi.Settings/Settings/Models/CustomizationSettings.cs index 5f0287fc4..a9fcf8f83 100644 --- a/src/Ombi.Settings/Settings/Models/CustomizationSettings.cs +++ b/src/Ombi.Settings/Settings/Models/CustomizationSettings.cs @@ -21,7 +21,7 @@ if (ApplicationUrl.EndsWith("/")) { - ApplicationUrl.Remove(ApplicationUrl.Length - 1); + ApplicationUrl = ApplicationUrl.Remove(ApplicationUrl.Length - 1); } if (!part.StartsWith("/")) { diff --git a/src/Ombi.Test.Common/MockHelper.cs b/src/Ombi.Test.Common/MockHelper.cs new file mode 100644 index 000000000..3e871c48f --- /dev/null +++ b/src/Ombi.Test.Common/MockHelper.cs @@ -0,0 +1,32 @@ +using Microsoft.AspNetCore.Identity; +using MockQueryable.Moq; +using Moq; +using Ombi.Core.Authentication; +using Ombi.Store.Entities; +using System; +using System.Collections.Generic; +using System.Linq; + +namespace Ombi.Test.Common +{ + public static class MockHelper + { + public static Mock MockUserManager(List ls) + { + var store = new Mock>(); + //var u = new OmbiUserManager(store.Object, null, null, null, null, null, null, null, null,null,null,null,null) + var mgr = new Mock(store.Object, null, null, null, null, null, null, null, null, null, null, null, null); + mgr.Object.UserValidators.Add(new UserValidator()); + mgr.Object.PasswordValidators.Add(new PasswordValidator()); + + var userMock = ls.AsQueryable().BuildMock(); + + mgr.Setup(x => x.Users).Returns(userMock.Object); + mgr.Setup(x => x.DeleteAsync(It.IsAny())).ReturnsAsync(IdentityResult.Success); + mgr.Setup(x => x.CreateAsync(It.IsAny(), It.IsAny())).ReturnsAsync(IdentityResult.Success).Callback((x, y) => ls.Add(x)); + mgr.Setup(x => x.UpdateAsync(It.IsAny())).ReturnsAsync(IdentityResult.Success); + + return mgr; + } + } +} diff --git a/src/Ombi.Test.Common/Ombi.Test.Common.csproj b/src/Ombi.Test.Common/Ombi.Test.Common.csproj new file mode 100644 index 000000000..cd028e602 --- /dev/null +++ b/src/Ombi.Test.Common/Ombi.Test.Common.csproj @@ -0,0 +1,17 @@ + + + + netstandard2.0 + + + + + + + + + + + + + diff --git a/src/Ombi.sln b/src/Ombi.sln index 6b1d5ef6f..17a4ea32c 100644 --- a/src/Ombi.sln +++ b/src/Ombi.sln @@ -1,7 +1,7 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 -VisualStudioVersion = 15.0.27130.2027 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.28729.10 MinimumVisualStudioVersion = 10.0.40219.1 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ombi", "Ombi\Ombi.csproj", "{C987AA67-AFE1-468F-ACD3-EAD5A48E1F6A}" EndProject @@ -100,7 +100,9 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ombi.Helpers.Tests", "Ombi. EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ombi.Api.Gotify", "Ombi.Api.Gotify\Ombi.Api.Gotify.csproj", "{105EA346-766E-45B8-928B-DE6991DCB7EB}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Ombi.Settings.Tests", "Ombi.Settings.Tests\Ombi.Settings.Tests.csproj", "{F3969B69-3B07-4884-A7AB-0BAB8B84DF94}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ombi.Settings.Tests", "Ombi.Settings.Tests\Ombi.Settings.Tests.csproj", "{F3969B69-3B07-4884-A7AB-0BAB8B84DF94}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Ombi.Test.Common", "Ombi.Test.Common\Ombi.Test.Common.csproj", "{27111E7C-748E-4996-BD71-2117027C6460}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -268,6 +270,10 @@ Global {F3969B69-3B07-4884-A7AB-0BAB8B84DF94}.Debug|Any CPU.Build.0 = Debug|Any CPU {F3969B69-3B07-4884-A7AB-0BAB8B84DF94}.Release|Any CPU.ActiveCfg = Release|Any CPU {F3969B69-3B07-4884-A7AB-0BAB8B84DF94}.Release|Any CPU.Build.0 = Release|Any CPU + {27111E7C-748E-4996-BD71-2117027C6460}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {27111E7C-748E-4996-BD71-2117027C6460}.Debug|Any CPU.Build.0 = Debug|Any CPU + {27111E7C-748E-4996-BD71-2117027C6460}.Release|Any CPU.ActiveCfg = Release|Any CPU + {27111E7C-748E-4996-BD71-2117027C6460}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -307,6 +313,7 @@ Global {CC8CEFCD-0CB6-45BB-845F-508BCAB5BDC3} = {6F42AB98-9196-44C4-B888-D5E409F415A1} {105EA346-766E-45B8-928B-DE6991DCB7EB} = {9293CA11-360A-4C20-A674-B9E794431BF5} {F3969B69-3B07-4884-A7AB-0BAB8B84DF94} = {6F42AB98-9196-44C4-B888-D5E409F415A1} + {27111E7C-748E-4996-BD71-2117027C6460} = {6F42AB98-9196-44C4-B888-D5E409F415A1} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {192E9BF8-00B4-45E4-BCCC-4C215725C869}