using Meezi.API.Security;

namespace Meezi.API.Tests;

/// <summary>Test double that allows every action and has no captcha configured.</summary>
internal sealed class NoOpAbuseProtectionService : IAbuseProtectionService
{
    public bool IsCaptchaConfigured => false;
    public string? CaptchaSiteKey => null;

    public Task<(bool Allowed, string? ErrorCode, string? Message)> CheckAuthOtpByIpAsync(
        string clientIp, CancellationToken cancellationToken = default) =>
        Task.FromResult<(bool, string?, string?)>((true, null, null));

    public Task<(bool Allowed, string? ErrorCode, string? Message)> CheckGuestOrderAsync(
        string cafeId, string clientIp, CancellationToken cancellationToken = default) =>
        Task.FromResult<(bool, string?, string?)>((true, null, null));

    public Task<(bool Allowed, string? ErrorCode, string? Message)> CheckPublicWriteByIpAsync(
        string clientIp, CancellationToken cancellationToken = default) =>
        Task.FromResult<(bool, string?, string?)>((true, null, null));

    public Task<(bool Ok, string? ErrorCode, string? Message)> VerifyCaptchaAsync(
        string? captchaToken, CancellationToken cancellationToken = default) =>
        Task.FromResult<(bool, string?, string?)>((true, null, null));
}
