using GameAuthApi.Controllers; using GameAuthApi.Models; using GameAuthApi.Services; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Configuration; using System.Security.Claims; public class ChatControllerTests { private static IConfiguration cfg = new ConfigurationBuilder() .AddInMemoryCollection(new Dictionary { {"MongoDB:ConnectionString","mongodb://localhost"}, {"MongoDB:DatabaseName","test"} }).Build(); private static ControllerContext ContextWithUser(string id) { var ctx = new DefaultHttpContext(); ctx.User = new ClaimsPrincipal(new ClaimsIdentity(new[] { new Claim(ClaimTypes.NameIdentifier,id) }, "mock")); return new ControllerContext { HttpContext = ctx }; } [Fact] public async Task Send_EmptyContent_ReturnsBadRequest() { var svc = new Mock(cfg); var controller = new ChatController(svc.Object) { ControllerContext = ContextWithUser("u") }; var result = await controller.Send(new ChatMessageRequest { Content = "" }); Assert.IsType(result); } [Fact] public async Task Recent_ReturnsOk() { var list = new List(); var svc = new Mock(cfg); svc.Setup(s => s.GetRecentAsync(5)).ReturnsAsync(list); var controller = new ChatController(svc.Object) { ControllerContext = ContextWithUser("u") }; var result = await controller.Recent(5); var ok = Assert.IsType(result); Assert.Equal(list, ok.Value); } }