fix dependency injection of comands in webfront preventing ui actions from working

This commit is contained in:
RaidMax 2020-08-06 08:48:14 -05:00
parent b59504a882
commit 22f9e581ed
3 changed files with 20 additions and 1 deletions

View File

@ -38,6 +38,7 @@ namespace ApplicationTests
.AddSingleton<IManagerCommand, FlagClientCommand>()
.AddSingleton<IManagerCommand, UnflagClientCommand>()
.AddSingleton<IManagerCommand, SayCommand>()
.AddSingleton<IManagerCommand, SetLevelCommand>()
.BuildServiceProvider()
.SetupTestHooks();
@ -141,6 +142,19 @@ namespace ApplicationTests
Assert.AreEqual(expectedEndpoint, result.RouteValues["serverId"]);
Assert.AreEqual(expectedCommandText, result.RouteValues["command"]);
}
[Test]
public async Task Test_SetLevel_Redirects_WithCommandText()
{
var controller = serviceProvider.GetRequiredService<ActionController>();
var expectedCommandText = "!setlevel @1 Moderator";
var expectedEndpoint = server.EndPoint;
var result = await controller.EditAsync(1, "Moderator") as RedirectToActionResult;
Assert.AreEqual(expectedEndpoint, result.RouteValues["serverId"]);
Assert.AreEqual(expectedCommandText, result.RouteValues["command"]);
}
#endregion
}
}

View File

@ -23,6 +23,7 @@ namespace WebfrontCore.Controllers
private readonly string _kickCommandName;
private readonly string _flagCommandName;
private readonly string _unflagCommandName;
private readonly string _setLevelCommandName;
public ActionController(IManager manager, IEnumerable<IManagerCommand> registeredCommands) : base(manager)
{
@ -55,6 +56,9 @@ namespace WebfrontCore.Controllers
case nameof(UnflagClientCommand):
_unflagCommandName = cmd.Name;
break;
case nameof(SetLevelCommand):
_setLevelCommandName = cmd.Name;
break;
}
}
}
@ -230,7 +234,7 @@ namespace WebfrontCore.Controllers
return await Task.FromResult(RedirectToAction("ExecuteAsync", "Console", new
{
serverId = server.EndPoint,
command = $"{_appConfig.CommandPrefix}setlevel @{targetId} {level}"
command = $"{_appConfig.CommandPrefix}{_setLevelCommandName} @{targetId} {level}"
}));
}

View File

@ -124,6 +124,7 @@ namespace WebfrontCore
services.AddSingleton(Program.ApplicationServiceProvider.GetService<IAuditInformationRepository>());
services.AddSingleton(Program.ApplicationServiceProvider.GetService<ITranslationLookup>());
services.AddSingleton(Program.ApplicationServiceProvider.GetService<SharedLibraryCore.Interfaces.ILogger>());
services.AddSingleton(Program.ApplicationServiceProvider.GetService<IEnumerable<IManagerCommand>>());
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.