@Inject public MockPaymentProviderPlugin(final Clock clock) { this.clock = clock; clear(); }
private void setPaymentFailure(final FailureType failureType) { if (failureType == FailureType.PAYMENT_FAILURE) { mockPaymentProviderPlugin.makeNextPaymentFailWithError(); } else if (failureType == FailureType.PLUGIN_EXCEPTION) { mockPaymentProviderPlugin.makeNextPaymentFailWithException(); } }
@Override public MockPaymentProviderPlugin get() { final MockPaymentProviderPlugin plugin = new MockPaymentProviderPlugin(clock); final OSGIServiceDescriptor desc = new OSGIServiceDescriptor() { @Override public String getPluginSymbolicName() { return null; } @Override public String getRegistrationName() { return instanceName; } }; registry.registerService(desc, plugin); return plugin; } }
@Override public RefundInfoPlugin processRefund(final UUID kbAccountId, final UUID kbPaymentId, final BigDecimal refundAmount, final Currency currency, final CallContext context) throws PaymentPluginApiException { final PaymentInfoPlugin paymentInfoPlugin = getPaymentInfo(kbAccountId, kbPaymentId, context); if (paymentInfoPlugin == null) { throw new PaymentPluginApiException("", String.format("No payment found for payment id %s (plugin %s)", kbPaymentId.toString(), PLUGIN_NAME)); } BigDecimal maxAmountRefundable = paymentInfoPlugin.getAmount(); for (final RefundInfoPlugin refund : refunds.get(kbPaymentId.toString())) { maxAmountRefundable = maxAmountRefundable.add(refund.getAmount().negate()); } if (maxAmountRefundable.compareTo(refundAmount) < 0) { throw new PaymentPluginApiException("", String.format("Refund amount of %s for payment id %s is bigger than the payment amount %s (plugin %s)", refundAmount, kbPaymentId.toString(), paymentInfoPlugin.getAmount(), PLUGIN_NAME)); } final DefaultNoOpRefundInfoPlugin refundInfoPlugin = new DefaultNoOpRefundInfoPlugin(kbPaymentId, refundAmount, currency, clock.getUTCNow(), clock.getUTCNow(), RefundPluginStatus.PROCESSED, null); refunds.put(kbPaymentId.toString(), refundInfoPlugin); return refundInfoPlugin; }
@Override @BeforeMethod(groups = "fast") public void beforeMethod() throws Exception { super.beforeMethod(); pluginRetryService.initialize(DefaultPaymentService.SERVICE_NAME); pluginRetryService.start(); retryService.initialize(DefaultPaymentService.SERVICE_NAME); retryService.start(); mockPaymentProviderPlugin = (MockPaymentProviderPlugin) registry.getServiceForName(MockPaymentProviderPlugin.PLUGIN_NAME); mockPaymentProviderPlugin.clear(); }