From ecd68ef2f40ff1c3929ad98c0350ce37db920bf7 Mon Sep 17 00:00:00 2001 From: tidusjar Date: Fri, 13 Jan 2023 14:10:17 +0000 Subject: [PATCH] mobile user logged in & discord username null --- .../Agents/DiscordNotification.cs | 2 +- .../Middlewear/ApiKeyMiddlewearTests.cs | 64 +++++++++++++++++++ src/Ombi.Tests/Ombi.Tests.csproj | 1 + src/Ombi/Middleware/ApiKeyMiddlewear.cs | 6 +- 4 files changed, 70 insertions(+), 3 deletions(-) create mode 100644 src/Ombi.Tests/Middlewear/ApiKeyMiddlewearTests.cs diff --git a/src/Ombi.Notifications/Agents/DiscordNotification.cs b/src/Ombi.Notifications/Agents/DiscordNotification.cs index ae344116f..a1619de69 100644 --- a/src/Ombi.Notifications/Agents/DiscordNotification.cs +++ b/src/Ombi.Notifications/Agents/DiscordNotification.cs @@ -107,7 +107,7 @@ namespace Ombi.Notifications.Agents var discordBody = new DiscordWebhookBody { content = model.Message, - username = settings.Username, + username = settings.Username ?? "Ombi", }; var fields = new List(); diff --git a/src/Ombi.Tests/Middlewear/ApiKeyMiddlewearTests.cs b/src/Ombi.Tests/Middlewear/ApiKeyMiddlewearTests.cs new file mode 100644 index 000000000..865d8d001 --- /dev/null +++ b/src/Ombi.Tests/Middlewear/ApiKeyMiddlewearTests.cs @@ -0,0 +1,64 @@ +using Microsoft.AspNetCore.Http; +using Moq; +using Moq.AutoMock; +using NUnit.Framework; +using Ombi.Core.Authentication; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Ombi.Tests.Middlewear +{ + [TestFixture] + public class ApiKeyMiddlewearTests + { + private AutoMocker _mocker; + private ApiKeyMiddlewear _subject; + private Mock _serviceProviderMock; + + [SetUp] + public void Setup() + { + _mocker = new AutoMocker(); + _serviceProviderMock = new Mock(); + _mocker.Use(_serviceProviderMock); + _subject = _mocker.CreateInstance(); + } + + [Test] + public async Task NonApiAccess() + { + var context = GetContext(); + context.Request.Path = "/notanapi"; + await _subject.Invoke(context); + + _mocker.Verify(x => x.GetService(It.IsAny()), Times.Never); + } + + [Test] + public async Task ValidateUserAccessToken() + { + var context = GetContext(); + context.Request.Path = "/api"; + context.Request.Headers.Add("UserAccessToken", new Microsoft.Extensions.Primitives.StringValues("test")); + + var umMock = new Mock(); + _mocker.Setup(x => (OmbiUserManager)x.GetService(typeof(OmbiUserManager))) + .Returns(umMock.Object); + + + await _subject.Invoke(context); + + _mocker.Verify(x => x.GetService(It.IsAny()), Times.Never); + } + + private HttpContext GetContext() + { + var context = new DefaultHttpContext(); + context.RequestServices = _serviceProviderMock.Object; + return context; + } + } +} diff --git a/src/Ombi.Tests/Ombi.Tests.csproj b/src/Ombi.Tests/Ombi.Tests.csproj index ce3b45533..01ea2104b 100644 --- a/src/Ombi.Tests/Ombi.Tests.csproj +++ b/src/Ombi.Tests/Ombi.Tests.csproj @@ -9,6 +9,7 @@ + diff --git a/src/Ombi/Middleware/ApiKeyMiddlewear.cs b/src/Ombi/Middleware/ApiKeyMiddlewear.cs index 0efe5b860..d5e011509 100644 --- a/src/Ombi/Middleware/ApiKeyMiddlewear.cs +++ b/src/Ombi/Middleware/ApiKeyMiddlewear.cs @@ -57,7 +57,7 @@ namespace Ombi } } - private async Task ValidateUserAccessToken(HttpContext context, RequestDelegate next, string key) + private static async Task ValidateUserAccessToken(HttpContext context, RequestDelegate next, string key) { if (string.IsNullOrEmpty(key)) { @@ -74,11 +74,13 @@ namespace Ombi } else { - var identity = new GenericIdentity(user.UserName); var roles = await um.GetRolesAsync(user); var principal = new GenericPrincipal(identity, roles.ToArray()); context.User = principal; + user.LastLoggedIn = DateTime.UtcNow; + await um.UpdateAsync(user); + await next.Invoke(context); } }