diff --git a/payment/src/main/java/org/killbill/billing/payment/core/sm/DirectPaymentOperation.java b/payment/src/main/java/org/killbill/billing/payment/core/sm/DirectPaymentOperation.java
index 97c0b59..c519331 100644
--- a/payment/src/main/java/org/killbill/billing/payment/core/sm/DirectPaymentOperation.java
+++ b/payment/src/main/java/org/killbill/billing/payment/core/sm/DirectPaymentOperation.java
@@ -73,7 +73,7 @@ public abstract class DirectPaymentOperation extends OperationCallbackBase imple
// STEPH: should we ever return an OperationResult.EXCEPTION at this layer -- since there is transtion back to init and there cannot be retried?
logger.warn("Plugin call threw an exception for account {}", directPaymentStateContext.getAccount().getExternalKey(), e);
- return new OperationException(e, OperationResult.EXCEPTION);
+ return new OperationException(realException, OperationResult.EXCEPTION);
}
}
@@ -106,6 +106,8 @@ public abstract class DirectPaymentOperation extends OperationCallbackBase imple
return doOperation();
} catch (final PaymentApiException e) {
throw new OperationException(e, OperationResult.FAILURE);
+ } catch (RuntimeException e) {
+ throw new OperationException(e, OperationResult.EXCEPTION);
}
}
diff --git a/payment/src/test/java/org/killbill/billing/payment/core/sm/TestDirectPaymentOperation.java b/payment/src/test/java/org/killbill/billing/payment/core/sm/TestDirectPaymentOperation.java
index 20fcb90..4fd5d17 100644
--- a/payment/src/test/java/org/killbill/billing/payment/core/sm/TestDirectPaymentOperation.java
+++ b/payment/src/test/java/org/killbill/billing/payment/core/sm/TestDirectPaymentOperation.java
@@ -62,8 +62,7 @@ public class TestDirectPaymentOperation extends PaymentTestSuiteNoDB {
Assert.assertNotNull(directPaymentStateContext.getPaymentInfoPlugin());
}
- // STEPH understand what is the correct behavior
- @Test(groups = "fast", enabled=false)
+ @Test(groups = "fast")
public void testPluginFailure() throws Exception {
setUp(null);
diff --git a/payment/src/test/java/org/killbill/billing/payment/core/sm/TestPluginOperation.java b/payment/src/test/java/org/killbill/billing/payment/core/sm/TestPluginOperation.java
index b86ceef..08e0fa3 100644
--- a/payment/src/test/java/org/killbill/billing/payment/core/sm/TestPluginOperation.java
+++ b/payment/src/test/java/org/killbill/billing/payment/core/sm/TestPluginOperation.java
@@ -213,7 +213,10 @@ public class TestPluginOperation extends PaymentTestSuiteNoDB {
ImmutableList.<PluginProperty>of(),
internalCallContext,
callContext);
- return new PluginOperationTest(locker, paymentPluginDispatcher, directPaymentStateContext);
+
+ final DirectPaymentAutomatonDAOHelper daoHelper = Mockito.mock(DirectPaymentAutomatonDAOHelper.class);
+ Mockito.when(daoHelper.getPaymentProviderPlugin()).thenReturn(null);
+ return new PluginOperationTest(daoHelper, locker, paymentPluginDispatcher, directPaymentStateContext);
}
private static final class CallbackTest implements WithAccountLockCallback<OperationResult, PaymentApiException> {
@@ -286,9 +289,8 @@ public class TestPluginOperation extends PaymentTestSuiteNoDB {
private static final class PluginOperationTest extends DirectPaymentOperation {
- protected PluginOperationTest(final GlobalLocker locker, final PluginDispatcher<OperationResult> paymentPluginDispatcher, final DirectPaymentStateContext directPaymentStateContext) throws PaymentApiException {
- // STEPH null ?
- super(null, locker, paymentPluginDispatcher, directPaymentStateContext);
+ protected PluginOperationTest(final DirectPaymentAutomatonDAOHelper daoHelper, final GlobalLocker locker, final PluginDispatcher<OperationResult> paymentPluginDispatcher, final DirectPaymentStateContext directPaymentStateContext) throws PaymentApiException {
+ super(daoHelper, locker, paymentPluginDispatcher, directPaymentStateContext);
}
@Override