Validate error flow for broken providers

This commit is contained in:
Justin Abrahms 2022-04-22 15:31:54 -07:00
parent c12d0cbc75
commit 19802bd26c
1 changed files with 23 additions and 4 deletions

View File

@ -1,8 +1,8 @@
package javasdk;
import javasdk.exceptions.ParseError;
import org.junit.jupiter.api.Test;
import org.mockito.Mockito;
import org.mockito.internal.matchers.Any;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.mockito.ArgumentMatchers.any;
@ -10,6 +10,7 @@ import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
@SuppressWarnings("unchecked")
public class DeveloperExperienceTest {
@Test public void simpleBooleanFlag() {
OpenFeatureAPI api = OpenFeatureAPI.getInstance();
@ -20,7 +21,7 @@ public class DeveloperExperienceTest {
}
@Test public void clientHooks() {
Hook<Boolean> exampleHook = Mockito.mock(Hook.class);
Hook<Boolean> exampleHook = (Hook<Boolean>) Mockito.mock(Hook.class);
OpenFeatureAPI api = OpenFeatureAPI.getInstance();
api.setProvider(new NoOpProvider());
@ -32,8 +33,8 @@ public class DeveloperExperienceTest {
}
@Test public void evalHooks() {
Hook<Boolean> clientHook = Mockito.mock(Hook.class);
Hook<Boolean> evalHook = Mockito.mock(Hook.class);
Hook<Boolean> clientHook = (Hook<Boolean>) Mockito.mock(Hook.class);
Hook<Boolean> evalHook = (Hook<Boolean>) Mockito.mock(Hook.class);
OpenFeatureAPI api = OpenFeatureAPI.getInstance();
api.setProvider(new NoOpProvider());
@ -45,4 +46,22 @@ public class DeveloperExperienceTest {
verify(evalHook, times(1)).afterAll(any());
assertEquals(false, retval);
}
@Test public void brokenProvider() {
OpenFeatureAPI api = OpenFeatureAPI.getInstance();
api.setProvider(new FeatureProvider() {
@Override
public ProviderEvaluation<Boolean> getBooleanEvaluation(String key, Boolean defaultValue, EvaluationContext ctx, FlagEvaluationOptions options) {
throw new ParseError();
}
@Override public String getName() { return null; }
@Override public ProviderEvaluation<String> getStringEvaluation(String key, String defaultValue, EvaluationContext ctx, FlagEvaluationOptions options) { return null; }
@Override public ProviderEvaluation<Long> getNumberEvaluation(String key, Long defaultValue, EvaluationContext ctx, FlagEvaluationOptions options) {return null;}
});
Client client = api.getClient();
FlagEvaluationDetails<Boolean> retval = client.getBooleanDetails("mykey", false);
assertEquals(ErrorCode.PARSE_ERROR, retval.getErrorCode());
assertEquals(Reason.ERROR, retval.getReason());
assertEquals(false, retval.getValue());
}
}