using Microsoft.AspNetCore.Mvc;
using Rainbow.Entity;
using Rainbow.Services;
using Rainbow.Web.Controllers;
using Xunit;
namespace XUnitTest.Rainbow.Controllers;
public class DnsBlacklistControllerTests
{
private static DnsBlacklistController CreateController()
{
var shell = new ShellExecutor();
var adapter = new DnsmasqAdapter(shell);
var manager = new DnsmasqManager(shell, adapter);
return new DnsBlacklistController(manager);
}
[Fact(DisplayName = "DnsBlacklist_GetList_无过滤返回列表")]
public void GetList_NoFilter_ReturnsList()
{
var controller = CreateController();
var result = controller.GetList().Result as OkObjectResult;
Assert.NotNull(result);
Assert.Equal(200, result.StatusCode);
Assert.IsAssignableFrom<IList<DnsBlacklist>>(result.Value);
}
[Fact(DisplayName = "DnsBlacklist_GetCategories_返回分类摘要")]
public void GetCategories_ReturnsSummary()
{
var controller = CreateController();
var result = controller.GetCategories() as OkObjectResult;
Assert.NotNull(result);
Assert.Equal(200, result.StatusCode);
}
[Fact(DisplayName = "DnsBlacklist_Add_插入成功Source为User")]
public void Add_InsertsWithSourceUser()
{
var controller = CreateController();
var item = new DnsBlacklist
{
Domain = "blocked" + DateTime.Now.Millisecond + ".com",
Category = "Custom",
Enable = true
};
var result = controller.Add(item) as OkObjectResult;
Assert.NotNull(result);
Assert.Equal(200, result.StatusCode);
}
[Fact(DisplayName = "DnsBlacklist_Delete_不存在返回NotFound")]
public void Delete_NotFound()
{
var controller = CreateController();
var result = controller.Delete(99999);
Assert.IsType<NotFoundResult>(result);
}
}
|