public async Task <bool> VerifyCaptchaAsync(string captchaToken, string ip) { string secret = _configuration["ReCaptcha3:SecretKey"]; double minScore = _configuration.GetValue <double>("ReCaptcha3:AcceptedMinScore"); RecaptchaVerificationResponseModel result = await GetCaptchaResponseAsync(captchaToken, ip, secret); if (result.Success && result.Score > minScore) { return(true); } return(false); }
private async Task GetCaptchaResponseAsync_OnCentainHttpResponseValues_ReturnsCorrectBoolean(double score, bool success, bool expected) { _responseObject = new RecaptchaVerificationResponseModel() { Score = score, Success = success, }; string responseJsonContent = JsonConvert.SerializeObject(_responseObject); HttpContent content = new StringContent(responseJsonContent, Encoding.UTF8, "application/json"); HttpResponseMessage httpResponse = new HttpResponseMessage { StatusCode = HttpStatusCode.OK, Content = content }; _fakeHttpMessageHandlerMock.Protected() .Setup <Task <HttpResponseMessage> >("SendAsync", ItExpr.IsAny <HttpRequestMessage>(), ItExpr.IsAny <CancellationToken>()) .ReturnsAsync(httpResponse); bool result = await _service.VerifyCaptchaAsync(_testToken, _testIp); Assert.Equal(expected, result); }