|
4 | 4 |
|
5 | 5 | import dev.openfeature.contrib.providers.flagd.e2e.State;
|
6 | 6 | import dev.openfeature.sdk.FlagEvaluationDetails;
|
| 7 | +import dev.openfeature.sdk.ImmutableMetadata; |
7 | 8 | import dev.openfeature.sdk.Value;
|
8 | 9 | import io.cucumber.java.en.Given;
|
9 | 10 | import io.cucumber.java.en.Then;
|
10 | 11 | import io.cucumber.java.en.When;
|
| 12 | +import lombok.val; |
11 | 13 | import org.junit.jupiter.api.parallel.Isolated;
|
| 14 | +import java.io.IOException; |
| 15 | +import java.lang.reflect.Field; |
| 16 | +import java.util.List; |
| 17 | +import java.util.Map; |
12 | 18 |
|
13 | 19 | @Isolated()
|
14 | 20 | public class FlagSteps extends AbstractSteps {
|
@@ -84,4 +90,49 @@ public Flag(String type, String name, Object defaultValue) {
|
84 | 90 | this.type = type;
|
85 | 91 | }
|
86 | 92 | }
|
| 93 | + |
| 94 | + @Then("the resolved metadata is empty") |
| 95 | + @SuppressWarnings("unchecked") |
| 96 | + public void the_resolved_metadata_is_empty() throws NoSuchFieldException, IllegalAccessException { |
| 97 | + ImmutableMetadata flagMetadata = state.evaluation.getFlagMetadata(); |
| 98 | + |
| 99 | + Field metadataField = flagMetadata.getClass().getDeclaredField("metadata"); |
| 100 | + metadataField.setAccessible(true); |
| 101 | + Map<String, Object> metadataMap = (Map<String, Object>) metadataField.get(flagMetadata); |
| 102 | + assertThat(metadataMap).isEmpty(); |
| 103 | + } |
| 104 | + |
| 105 | + |
| 106 | + @Then("the resolved metadata should contain") |
| 107 | + @SuppressWarnings("unchecked") |
| 108 | + public void the_resolved_metadata_should_contain(io.cucumber.datatable.DataTable dataTable) |
| 109 | + throws IOException, ClassNotFoundException { |
| 110 | + |
| 111 | + ImmutableMetadata flagMetadata = state.evaluation.getFlagMetadata(); |
| 112 | + |
| 113 | + List<Map<String, String>> rows = dataTable.asMaps(String.class, String.class); |
| 114 | + for (Map<String, String> row : rows) { |
| 115 | + switch (row.get("metadata_type")) { |
| 116 | + case "String": |
| 117 | + assertThat(flagMetadata.getString(row.get("key"))).isEqualTo( |
| 118 | + Utils.convert(row.get("value"), row.get("metadata_type"))); |
| 119 | + break; |
| 120 | + case "Boolean": |
| 121 | + assertThat(flagMetadata.getBoolean(row.get("key"))).isEqualTo( |
| 122 | + Utils.convert(row.get("value"), row.get("metadata_type"))); |
| 123 | + break; |
| 124 | + case "Float": |
| 125 | + assertThat(flagMetadata.getDouble(row.get("key"))).isEqualTo( |
| 126 | + Utils.convert(row.get("value"), row.get("metadata_type"))); |
| 127 | + break; |
| 128 | + case "Integer": |
| 129 | + assertThat(flagMetadata.getInteger(row.get("key"))).isEqualTo( |
| 130 | + Utils.convert(row.get("value"), row.get("metadata_type"))); |
| 131 | + break; |
| 132 | + default: |
| 133 | + throw new AssertionError("type not supported"); |
| 134 | + } |
| 135 | + } |
| 136 | + } |
| 137 | + |
87 | 138 | }
|
0 commit comments