1
0
mirror of https://github.com/bitwarden/server.git synced 2025-02-16 01:51:21 +01:00

Removed the need to verify requests as CloudOps added an ACL on the network (#3882)

This commit is contained in:
Conner Turnbull 2024-03-11 10:03:10 -04:00 committed by GitHub
parent ab3959fcfb
commit 5e4c5acc48
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 0 additions and 64 deletions

View File

@ -1,6 +1,5 @@
using System.Text; using System.Text;
using Bit.Billing.Models; using Bit.Billing.Models;
using Bit.Billing.Services;
using Bit.Core.Entities; using Bit.Core.Entities;
using Bit.Core.Enums; using Bit.Core.Enums;
using Bit.Core.Repositories; using Bit.Core.Repositories;
@ -20,7 +19,6 @@ public class PayPalController : Controller
private readonly IMailService _mailService; private readonly IMailService _mailService;
private readonly IOrganizationRepository _organizationRepository; private readonly IOrganizationRepository _organizationRepository;
private readonly IPaymentService _paymentService; private readonly IPaymentService _paymentService;
private readonly IPayPalIPNClient _payPalIPNClient;
private readonly ITransactionRepository _transactionRepository; private readonly ITransactionRepository _transactionRepository;
private readonly IUserRepository _userRepository; private readonly IUserRepository _userRepository;
@ -30,7 +28,6 @@ public class PayPalController : Controller
IMailService mailService, IMailService mailService,
IOrganizationRepository organizationRepository, IOrganizationRepository organizationRepository,
IPaymentService paymentService, IPaymentService paymentService,
IPayPalIPNClient payPalIPNClient,
ITransactionRepository transactionRepository, ITransactionRepository transactionRepository,
IUserRepository userRepository) IUserRepository userRepository)
{ {
@ -39,7 +36,6 @@ public class PayPalController : Controller
_mailService = mailService; _mailService = mailService;
_organizationRepository = organizationRepository; _organizationRepository = organizationRepository;
_paymentService = paymentService; _paymentService = paymentService;
_payPalIPNClient = payPalIPNClient;
_transactionRepository = transactionRepository; _transactionRepository = transactionRepository;
_userRepository = userRepository; _userRepository = userRepository;
} }
@ -91,14 +87,6 @@ public class PayPalController : Controller
return BadRequest(); return BadRequest();
} }
var verified = await _payPalIPNClient.VerifyIPN(transactionModel.TransactionId, requestContent);
if (!verified)
{
_logger.LogError("PayPal IPN ({Id}): Verification failed", transactionModel.TransactionId);
return BadRequest();
}
if (transactionModel.TransactionType != "web_accept" && if (transactionModel.TransactionType != "web_accept" &&
transactionModel.TransactionType != "merch_pmt" && transactionModel.TransactionType != "merch_pmt" &&
transactionModel.PaymentStatus != "Refunded") transactionModel.PaymentStatus != "Refunded")

View File

@ -1,6 +1,5 @@
using System.Text; using System.Text;
using Bit.Billing.Controllers; using Bit.Billing.Controllers;
using Bit.Billing.Services;
using Bit.Billing.Test.Utilities; using Bit.Billing.Test.Utilities;
using Bit.Core.AdminConsole.Entities; using Bit.Core.AdminConsole.Entities;
using Bit.Core.Entities; using Bit.Core.Entities;
@ -31,7 +30,6 @@ public class PayPalControllerTests
private readonly IMailService _mailService = Substitute.For<IMailService>(); private readonly IMailService _mailService = Substitute.For<IMailService>();
private readonly IOrganizationRepository _organizationRepository = Substitute.For<IOrganizationRepository>(); private readonly IOrganizationRepository _organizationRepository = Substitute.For<IOrganizationRepository>();
private readonly IPaymentService _paymentService = Substitute.For<IPaymentService>(); private readonly IPaymentService _paymentService = Substitute.For<IPaymentService>();
private readonly IPayPalIPNClient _payPalIPNClient = Substitute.For<IPayPalIPNClient>();
private readonly ITransactionRepository _transactionRepository = Substitute.For<ITransactionRepository>(); private readonly ITransactionRepository _transactionRepository = Substitute.For<ITransactionRepository>();
private readonly IUserRepository _userRepository = Substitute.For<IUserRepository>(); private readonly IUserRepository _userRepository = Substitute.For<IUserRepository>();
@ -115,31 +113,6 @@ public class PayPalControllerTests
LoggedError(logger, "PayPal IPN (2PK15573S8089712Y): 'custom' did not contain a User ID or Organization ID"); LoggedError(logger, "PayPal IPN (2PK15573S8089712Y): 'custom' did not contain a User ID or Organization ID");
} }
[Fact]
public async Task PostIpn_Unverified_BadRequest()
{
var logger = _testOutputHelper.BuildLoggerFor<PayPalController>();
_billingSettings.Value.Returns(new BillingSettings
{
PayPal = { WebhookKey = _defaultWebhookKey }
});
var organizationId = new Guid("ca8c6f2b-2d7b-4639-809f-b0e5013a304e");
var ipnBody = await PayPalTestIPN.GetAsync(IPNBody.SuccessfulPayment);
_payPalIPNClient.VerifyIPN(Arg.Any<string>(), ipnBody).Returns(false);
var controller = ConfigureControllerContextWith(logger, _defaultWebhookKey, ipnBody);
var result = await controller.PostIpn();
HasStatusCode(result, 400);
LoggedError(logger, "PayPal IPN (2PK15573S8089712Y): Verification failed");
}
[Fact] [Fact]
public async Task PostIpn_OtherTransactionType_Unprocessed_Ok() public async Task PostIpn_OtherTransactionType_Unprocessed_Ok()
{ {
@ -154,8 +127,6 @@ public class PayPalControllerTests
var ipnBody = await PayPalTestIPN.GetAsync(IPNBody.UnsupportedTransactionType); var ipnBody = await PayPalTestIPN.GetAsync(IPNBody.UnsupportedTransactionType);
_payPalIPNClient.VerifyIPN(Arg.Any<string>(), ipnBody).Returns(true);
var controller = ConfigureControllerContextWith(logger, _defaultWebhookKey, ipnBody); var controller = ConfigureControllerContextWith(logger, _defaultWebhookKey, ipnBody);
var result = await controller.PostIpn(); var result = await controller.PostIpn();
@ -183,8 +154,6 @@ public class PayPalControllerTests
var ipnBody = await PayPalTestIPN.GetAsync(IPNBody.SuccessfulPayment); var ipnBody = await PayPalTestIPN.GetAsync(IPNBody.SuccessfulPayment);
_payPalIPNClient.VerifyIPN(Arg.Any<string>(), ipnBody).Returns(true);
var controller = ConfigureControllerContextWith(logger, _defaultWebhookKey, ipnBody); var controller = ConfigureControllerContextWith(logger, _defaultWebhookKey, ipnBody);
var result = await controller.PostIpn(); var result = await controller.PostIpn();
@ -212,8 +181,6 @@ public class PayPalControllerTests
var ipnBody = await PayPalTestIPN.GetAsync(IPNBody.RefundMissingParentTransaction); var ipnBody = await PayPalTestIPN.GetAsync(IPNBody.RefundMissingParentTransaction);
_payPalIPNClient.VerifyIPN(Arg.Any<string>(), ipnBody).Returns(true);
var controller = ConfigureControllerContextWith(logger, _defaultWebhookKey, ipnBody); var controller = ConfigureControllerContextWith(logger, _defaultWebhookKey, ipnBody);
var result = await controller.PostIpn(); var result = await controller.PostIpn();
@ -241,8 +208,6 @@ public class PayPalControllerTests
var ipnBody = await PayPalTestIPN.GetAsync(IPNBody.ECheckPayment); var ipnBody = await PayPalTestIPN.GetAsync(IPNBody.ECheckPayment);
_payPalIPNClient.VerifyIPN(Arg.Any<string>(), ipnBody).Returns(true);
var controller = ConfigureControllerContextWith(logger, _defaultWebhookKey, ipnBody); var controller = ConfigureControllerContextWith(logger, _defaultWebhookKey, ipnBody);
var result = await controller.PostIpn(); var result = await controller.PostIpn();
@ -270,8 +235,6 @@ public class PayPalControllerTests
var ipnBody = await PayPalTestIPN.GetAsync(IPNBody.NonUSDPayment); var ipnBody = await PayPalTestIPN.GetAsync(IPNBody.NonUSDPayment);
_payPalIPNClient.VerifyIPN(Arg.Any<string>(), ipnBody).Returns(true);
var controller = ConfigureControllerContextWith(logger, _defaultWebhookKey, ipnBody); var controller = ConfigureControllerContextWith(logger, _defaultWebhookKey, ipnBody);
var result = await controller.PostIpn(); var result = await controller.PostIpn();
@ -299,8 +262,6 @@ public class PayPalControllerTests
var ipnBody = await PayPalTestIPN.GetAsync(IPNBody.SuccessfulPayment); var ipnBody = await PayPalTestIPN.GetAsync(IPNBody.SuccessfulPayment);
_payPalIPNClient.VerifyIPN(Arg.Any<string>(), ipnBody).Returns(true);
_transactionRepository.GetByGatewayIdAsync( _transactionRepository.GetByGatewayIdAsync(
GatewayType.PayPal, GatewayType.PayPal,
"2PK15573S8089712Y").Returns(new Transaction()); "2PK15573S8089712Y").Returns(new Transaction());
@ -332,8 +293,6 @@ public class PayPalControllerTests
var ipnBody = await PayPalTestIPN.GetAsync(IPNBody.SuccessfulPayment); var ipnBody = await PayPalTestIPN.GetAsync(IPNBody.SuccessfulPayment);
_payPalIPNClient.VerifyIPN(Arg.Any<string>(), ipnBody).Returns(true);
_transactionRepository.GetByGatewayIdAsync( _transactionRepository.GetByGatewayIdAsync(
GatewayType.PayPal, GatewayType.PayPal,
"2PK15573S8089712Y").ReturnsNull(); "2PK15573S8089712Y").ReturnsNull();
@ -367,8 +326,6 @@ public class PayPalControllerTests
var ipnBody = await PayPalTestIPN.GetAsync(IPNBody.SuccessfulPaymentForOrganizationCredit); var ipnBody = await PayPalTestIPN.GetAsync(IPNBody.SuccessfulPaymentForOrganizationCredit);
_payPalIPNClient.VerifyIPN(Arg.Any<string>(), ipnBody).Returns(true);
_transactionRepository.GetByGatewayIdAsync( _transactionRepository.GetByGatewayIdAsync(
GatewayType.PayPal, GatewayType.PayPal,
"2PK15573S8089712Y").ReturnsNull(); "2PK15573S8089712Y").ReturnsNull();
@ -417,8 +374,6 @@ public class PayPalControllerTests
var ipnBody = await PayPalTestIPN.GetAsync(IPNBody.SuccessfulPaymentForUserCredit); var ipnBody = await PayPalTestIPN.GetAsync(IPNBody.SuccessfulPaymentForUserCredit);
_payPalIPNClient.VerifyIPN(Arg.Any<string>(), ipnBody).Returns(true);
_transactionRepository.GetByGatewayIdAsync( _transactionRepository.GetByGatewayIdAsync(
GatewayType.PayPal, GatewayType.PayPal,
"2PK15573S8089712Y").ReturnsNull(); "2PK15573S8089712Y").ReturnsNull();
@ -467,8 +422,6 @@ public class PayPalControllerTests
var ipnBody = await PayPalTestIPN.GetAsync(IPNBody.SuccessfulRefund); var ipnBody = await PayPalTestIPN.GetAsync(IPNBody.SuccessfulRefund);
_payPalIPNClient.VerifyIPN(Arg.Any<string>(), ipnBody).Returns(true);
_transactionRepository.GetByGatewayIdAsync( _transactionRepository.GetByGatewayIdAsync(
GatewayType.PayPal, GatewayType.PayPal,
"2PK15573S8089712Y").Returns(new Transaction()); "2PK15573S8089712Y").Returns(new Transaction());
@ -504,8 +457,6 @@ public class PayPalControllerTests
var ipnBody = await PayPalTestIPN.GetAsync(IPNBody.SuccessfulRefund); var ipnBody = await PayPalTestIPN.GetAsync(IPNBody.SuccessfulRefund);
_payPalIPNClient.VerifyIPN(Arg.Any<string>(), ipnBody).Returns(true);
_transactionRepository.GetByGatewayIdAsync( _transactionRepository.GetByGatewayIdAsync(
GatewayType.PayPal, GatewayType.PayPal,
"2PK15573S8089712Y").ReturnsNull(); "2PK15573S8089712Y").ReturnsNull();
@ -545,8 +496,6 @@ public class PayPalControllerTests
var ipnBody = await PayPalTestIPN.GetAsync(IPNBody.SuccessfulRefund); var ipnBody = await PayPalTestIPN.GetAsync(IPNBody.SuccessfulRefund);
_payPalIPNClient.VerifyIPN(Arg.Any<string>(), ipnBody).Returns(true);
_transactionRepository.GetByGatewayIdAsync( _transactionRepository.GetByGatewayIdAsync(
GatewayType.PayPal, GatewayType.PayPal,
"2PK15573S8089712Y").ReturnsNull(); "2PK15573S8089712Y").ReturnsNull();
@ -592,7 +541,6 @@ public class PayPalControllerTests
_mailService, _mailService,
_organizationRepository, _organizationRepository,
_paymentService, _paymentService,
_payPalIPNClient,
_transactionRepository, _transactionRepository,
_userRepository); _userRepository);