Skip to content

Commit 6a70bc4

Browse files
fix: [go-feature-flag] Make flag metadata optional (#572)
Signed-off-by: itchyny <[email protected]> Co-authored-by: Thomas Poignant <[email protected]>
1 parent 7fea4ec commit 6a70bc4

File tree

3 files changed

+29
-0
lines changed

3 files changed

+29
-0
lines changed

providers/go-feature-flag/src/main/java/dev/openfeature/contrib/providers/gofeatureflag/GoFeatureFlagProvider.java

+3
Original file line numberDiff line numberDiff line change
@@ -395,6 +395,9 @@ private ErrorCode mapErrorCode(String errorCode) {
395395
*/
396396
private ImmutableMetadata convertFlagMetadata(Map<String, Object> flagMetadata) {
397397
ImmutableMetadata.ImmutableMetadataBuilder builder = ImmutableMetadata.builder();
398+
if (flagMetadata == null) {
399+
return builder.build();
400+
}
398401
flagMetadata.forEach((k, v) -> {
399402
if (v instanceof Long) {
400403
builder.addLong(k, (Long) v);

providers/go-feature-flag/src/test/java/dev/openfeature/contrib/providers/gofeatureflag/GoFeatureFlagProviderTest.java

+17
Original file line numberDiff line numberDiff line change
@@ -701,6 +701,23 @@ void should_not_fail_if_receive_an_unknown_field_in_response() {
701701
assertEquals(want, got);
702702
}
703703

704+
@SneakyThrows
705+
@Test
706+
void should_not_fail_if_no_metadata_in_response() {
707+
GoFeatureFlagProvider g = new GoFeatureFlagProvider(GoFeatureFlagProviderOptions.builder().endpoint(this.baseUrl.toString()).timeout(1000).build());
708+
String providerName = this.testName;
709+
OpenFeatureAPI.getInstance().setProviderAndWait(providerName, g);
710+
Client client = OpenFeatureAPI.getInstance().getClient(providerName);
711+
FlagEvaluationDetails<Boolean> got = client.getBooleanDetails("no_metadata",false, this.evaluationContext);
712+
FlagEvaluationDetails<Boolean> want = FlagEvaluationDetails.<Boolean>builder()
713+
.value(true)
714+
.variant("True")
715+
.flagKey("no_metadata")
716+
.reason(Reason.TARGETING_MATCH.name())
717+
.build();
718+
assertEquals(want, got);
719+
}
720+
704721
@SneakyThrows
705722
@Test
706723
void should_publish_events() {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{
2+
"trackEvents": true,
3+
"variationType": "True",
4+
"failed": false,
5+
"version": 0,
6+
"reason": "TARGETING_MATCH",
7+
"errorCode": "",
8+
"value": true
9+
}

0 commit comments

Comments
 (0)