Skip to content

Commit b8512bb

Browse files
committed
add test for reason handling
Signed-off-by: Todd Baert <[email protected]>
1 parent 48b61f5 commit b8512bb

File tree

2 files changed

+29
-10
lines changed

2 files changed

+29
-10
lines changed

Diff for: hooks/open-telemetry/src/main/java/dev/openfeature/contrib/hooks/otel/OpenTelemetryHook.java

+7-8
Original file line numberDiff line numberDiff line change
@@ -4,21 +4,20 @@
44
import dev.openfeature.javasdk.NoOpProvider;
55
import dev.openfeature.javasdk.OpenFeatureAPI;
66

7-
/**
7+
/**
88
* A placeholder.
99
*/
1010
public class OpenTelemetryHook {
11-
12-
/**
11+
12+
/**
1313
* Create a new OpenTelemetryHook instance.
1414
*/
15-
private OpenTelemetryHook() {
15+
public OpenTelemetryHook() {
1616
}
1717

18-
/**
19-
* A test.
20-
*
21-
* @return boolean
18+
/**
19+
* A test method...
20+
* @return {boolean}
2221
*/
2322
public static boolean test() {
2423
OpenFeatureAPI.getInstance().setProvider(new NoOpProvider());

Diff for: providers/flagd/src/test/java/dev/openfeature/contrib/providers/flagd/FlagdProviderTest.java

+22-2
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import static org.junit.jupiter.api.Assertions.assertEquals;
44
import static org.junit.jupiter.api.Assertions.assertTrue;
5+
import static org.mockito.ArgumentMatchers.any;
56
import static org.mockito.ArgumentMatchers.argThat;
67
import static org.mockito.Mockito.mock;
78
import static org.mockito.Mockito.when;
@@ -12,6 +13,7 @@
1213
import org.junit.jupiter.api.BeforeAll;
1314
import org.junit.jupiter.api.Test;
1415

16+
import dev.openfeature.flagd.grpc.Schema.ResolveBooleanRequest;
1517
import dev.openfeature.flagd.grpc.Schema.ResolveBooleanResponse;
1618
import dev.openfeature.flagd.grpc.Schema.ResolveFloatResponse;
1719
import dev.openfeature.flagd.grpc.Schema.ResolveIntResponse;
@@ -145,11 +147,12 @@ void context_is_parsed_and_passed_to_grpc_service() {
145147
}};
146148
final String STRUCT_ATTR_INNER_VALUE = "struct-inner-value";
147149
final Structure STRUCT_ATTR_VALUE = new Structure().add(STRUCT_ATTR_INNER_KEY, STRUCT_ATTR_INNER_VALUE);
150+
final String STATIC = "STATIC";
148151

149152
ResolveBooleanResponse booleanResponse = ResolveBooleanResponse.newBuilder()
150153
.setValue(true)
151154
.setVariant(BOOL_VARIANT)
152-
.setReason(DEFAULT.toString())
155+
.setReason(STATIC.toString())
153156
.build();
154157

155158
ServiceBlockingStub serviceBlockingStubMock = mock(ServiceBlockingStub.class);
@@ -177,6 +180,23 @@ void context_is_parsed_and_passed_to_grpc_service() {
177180
FlagEvaluationDetails<Boolean> booleanDetails = api.getClient().getBooleanDetails(FLAG_KEY, false, context);
178181
assertTrue(booleanDetails.getValue());
179182
assertEquals(BOOL_VARIANT, booleanDetails.getVariant());
180-
assertEquals(DEFAULT, booleanDetails.getReason());
183+
assertEquals(DEFAULT, booleanDetails.getReason()); // reason should be converted from STATIC -> DEFAULT
184+
}
185+
186+
@Test
187+
void reason_mapped_correctly_if_unknown() {
188+
ResolveBooleanResponse badReasonResponse = ResolveBooleanResponse.newBuilder()
189+
.setValue(true)
190+
.setVariant(BOOL_VARIANT)
191+
.setReason("NOT_A_REAL_REASON") // set an invalid reason string
192+
.build();
193+
194+
ServiceBlockingStub serviceBlockingStubMock = mock(ServiceBlockingStub.class);
195+
when(serviceBlockingStubMock.resolveBoolean(any(ResolveBooleanRequest.class))).thenReturn(badReasonResponse);
196+
197+
OpenFeatureAPI.getInstance().setProvider(new FlagdProvider(serviceBlockingStubMock));
198+
199+
FlagEvaluationDetails<Boolean> booleanDetails = api.getClient().getBooleanDetails(FLAG_KEY, false, new EvaluationContext());
200+
assertEquals(Reason.UNKNOWN, booleanDetails.getReason()); // reason should be converted to UNKNOWN
181201
}
182202
}

0 commit comments

Comments
 (0)