using System; using System.Linq; using System.Threading.Tasks; using BTCPayServer.Client; using BTCPayServer.Client.Models; using Xunit; namespace BTCPayServer.Tests; public class AssertEx { public static async Task AssertValidationError(string[] fields, Func act) { var ex = await Assert.ThrowsAsync(act); foreach (var field in fields) { Assert.Contains(field, ex.ValidationErrors.Select(e => e.Path).ToArray()); } return ex; } public static async Task AssertPermissionError(string expectedPermission, Func act) { var err = await Assert.ThrowsAsync(async () => await act()); var err2 = Assert.IsType(err.APIError); Assert.Equal(expectedPermission, err2.MissingPermission); return err; } public static async Task AssertHttpError(int code, Func act) { var ex = await Assert.ThrowsAsync(act); Assert.Equal(code, ex.HttpCode); } public static async Task AssertApiError(int httpStatus, string errorCode, Func act) { var ex = await Assert.ThrowsAsync(act); Assert.Equal(httpStatus, ex.HttpCode); Assert.Equal(errorCode, ex.APIError.Code); return ex; } public static async Task AssertApiError(string expectedError, Func act) { var err = await Assert.ThrowsAsync(async () => await act()); Assert.Equal(expectedError, err.APIError.Code); return err; } }