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}