Если нет особой причины, вы можете использовать модульный тест вместо интеграционного теста, и вы можете проверить свои конечные точки, определенные или не определенные какие-либо атрибуты авторизации. Например;
public class SomeController : Controller
{
[AllowAnonymous]
public IAsyncResult Post1()
{
// codes...
}
[Authorize("some_permission")]
public IAsyncResult Post2()
{
// codes...
}
public IAsyncResult Post3()
{
// codes...
}
}
это ваш класс контроллера.
[Fact]
public void Test()
{
var _endpoints = new List<(Type, MethodInfo)>(); // All endpoints in my project
var asm = Assembly.Load("MyAssembly");
var cType = typeof(Controller);
var types = asm.GetTypes().Where(x => x.IsSubclassOf(cType)).ToList();
foreach (Type t in types)
{
var mInfos = t.GetMethods(BindingFlags.Public | BindingFlags.Instance).Where(x => x.DeclaringType.Equals(t)).ToList();
foreach (MethodInfo mInfo in mInfos)
_endpoints.Add((t, mInfo));
}
var nonAuthEndPoints = _endpoints.Where(x => !x.IsDefined(typeof(AuthorizeAttribute)) && !x.IsDefined(typeof(AllowAnonymousAttribute)));
nonAuthEndPoints.Should().BeEmpty();
}
и это ваш метод испытаний. Это проверит все конечные точки и заставит их иметь AllowAnonymous или Authorize.
В этом примере ваши конечные точки Post1 и Post2 прошли тест, но post3 не прошел.