Skip to content

Commit

Permalink
fix and extend ImmutableDittoHeadersTest for get-metadata header;
Browse files Browse the repository at this point in the history
extend DefaultDittoHeadersBuilderTest for get-metadata header;

Signed-off-by: Stefan Maute <stefan.maute@bosch.io>
  • Loading branch information
Stefan Maute committed Jun 1, 2022
1 parent 01d7490 commit 222c8c1
Show file tree
Hide file tree
Showing 2 changed files with 84 additions and 3 deletions.
Expand Up @@ -20,9 +20,12 @@
import java.time.Instant;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.UUID;

import org.eclipse.ditto.base.model.acks.AcknowledgementLabel;
Expand All @@ -38,9 +41,11 @@
import org.eclipse.ditto.json.JsonArray;
import org.eclipse.ditto.json.JsonCollectors;
import org.eclipse.ditto.json.JsonFactory;
import org.eclipse.ditto.json.JsonFieldSelectorInvalidException;
import org.eclipse.ditto.json.JsonKey;
import org.eclipse.ditto.json.JsonObject;
import org.eclipse.ditto.json.JsonParseException;
import org.eclipse.ditto.json.JsonPointer;
import org.eclipse.ditto.json.JsonValue;
import org.junit.Before;
import org.junit.Test;
Expand Down Expand Up @@ -467,6 +472,38 @@ public void createBuilderFromMapContainingInvalidMetadataValue() {
.withCauseInstanceOf(JsonParseException.class);
}

@Test
public void putInvalidGetMetadataHeaderAsCharSequence() {
final String invalidGetMetadata = "features(f1,f2";

final Map<String, String> headerMap = new HashMap<>();
headerMap.put("foo", "bar");
headerMap.put(DittoHeaderDefinition.GET_METADATA.getKey(), invalidGetMetadata);
headerMap.put(DittoHeaderDefinition.CORRELATION_ID.getKey(), String.valueOf(UUID.randomUUID()));

assertThatExceptionOfType(DittoHeaderInvalidException.class)
.isThrownBy(() -> underTest.putHeaders(headerMap))
.withMessage("The value '%s' of the header 'get-metadata' is not a valid field selector.", invalidGetMetadata)
.satisfies(dittoHeaderInvalidException -> assertThat(dittoHeaderInvalidException.getDescription())
.hasValueSatisfying(description -> assertThat(description)
.startsWith("The field selector <" + invalidGetMetadata + "> is invalid!")))
.withCauseInstanceOf(JsonFieldSelectorInvalidException.class);

}

@Test
public void putValidGetMetadataHeaderAsCharSequence() {
final String getMetadata = "features/f1/properties/p1/key";

final DittoHeaders dittoHeaders = underTest
.putHeader(DittoHeaderDefinition.GET_METADATA.getKey(), getMetadata)
.build();

final Set<JsonPointer> expected = new HashSet<>(Collections.singletonList(JsonPointer.of(getMetadata)));

assertThat(dittoHeaders.getMetadataFieldsToGet()).isEqualTo(expected);
}

@Test
public void setValidTwinChannelCharSequence() {
final DittoHeaders dittoHeaders = DefaultDittoHeadersBuilder.newInstance()
Expand Down
Expand Up @@ -23,6 +23,7 @@
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
Expand Down Expand Up @@ -51,8 +52,8 @@
import org.eclipse.ditto.json.JsonField;
import org.eclipse.ditto.json.JsonObject;
import org.eclipse.ditto.json.JsonObjectBuilder;
import org.eclipse.ditto.json.JsonPointer;
import org.eclipse.ditto.json.JsonValue;
import org.junit.Ignore;
import org.junit.Test;

import nl.jqno.equalsverifier.EqualsVerifier;
Expand Down Expand Up @@ -117,6 +118,18 @@ public final class ImmutableDittoHeadersTest {
private static final String KNOWN_TRACESTATE = "eclipse=ditto";
private static final boolean KNOWN_DITTO_RETRIEVE_DELETED = true;

private static final String KNOWN_DITTO_GET_METADATA = "attributes/*/key";

private static final String KNOWN_DITTO_DELETE_METADATA = "features/f1/properties/p1/unit";

private static final JsonObject KNOWN_DITTO_METADATA = JsonObject.newBuilder()
.set("attributes", JsonObject.newBuilder()
.set("a1", JsonObject.newBuilder()
.set("key", "bombolombo")
.build())
.build())
.build();


static {
KNOWN_METADATA_HEADERS = MetadataHeaders.newInstance();
Expand Down Expand Up @@ -184,6 +197,9 @@ public void settingAllKnownHeadersWorksAsExpected() {
.putHeader(DittoHeaderDefinition.LIVE_CHANNEL_CONDITION_MATCHED.getKey(),
String.valueOf(KNOWN_LIVE_CHANNEL_CONDITION_MATCHED))
.accept(KNOWN_ACCEPT)
.putHeader(DittoHeaderDefinition.GET_METADATA.getKey(), KNOWN_DITTO_GET_METADATA )
.putHeader(DittoHeaderDefinition.DELETE_METADATA.getKey(), KNOWN_DITTO_DELETE_METADATA )
.putHeader(DittoHeaderDefinition.DITTO_METADATA.getKey(), KNOWN_DITTO_METADATA.formatAsString())
.build();

assertThat(underTest).isEqualTo(expectedHeaderMap);
Expand Down Expand Up @@ -415,14 +431,14 @@ public void timeoutIsSerializedAsString() {
}

@Test
public void getMetadataHeadersToPutReturnsEmptySet() {
public void metadataHeadersToPutReturnsEmptySet() {
final ImmutableDittoHeaders underTest = ImmutableDittoHeaders.of(Collections.emptyMap());

assertThat(underTest.getMetadataHeadersToPut()).isEmpty();
}

@Test
public void getMetadataHeadersToPutReturnsExpected() {
public void metadataHeadersToPutReturnsExpected() {
final MetadataHeaderKey specificMetadataKey = MetadataHeaderKey.parse("/foo/bar/baz");
final JsonValue metadataValue1 = JsonValue.of(1);
final MetadataHeaderKey wildcardMetadataKey = MetadataHeaderKey.parse("/*/aValue");
Expand All @@ -439,6 +455,28 @@ public void getMetadataHeadersToPutReturnsExpected() {
assertThat(underTest.getMetadataHeadersToPut()).isEqualTo(expected);
}

@Test
public void metadataFieldsToGetReturnsEmptySet() {
final ImmutableDittoHeaders underTest = ImmutableDittoHeaders.of(Collections.emptyMap());

assertThat(underTest.getMetadataFieldsToGet()).isEmpty();
}

@Test
public void metadataFieldsToGetReturnsExpected() {
final String expr1 = "attributes";
final String expr2 = "features/f1/properties/p1/key";
final String givenMetadataExpression = expr1 + "," + expr2;

final Set<JsonPointer> expected = new HashSet<>(Arrays.asList(JsonPointer.of(expr1),JsonPointer.of(expr2)));

final Map<String, String> headerMap = new HashMap<>();
headerMap.put(DittoHeaderDefinition.GET_METADATA.getKey(), givenMetadataExpression);
final ImmutableDittoHeaders underTest = ImmutableDittoHeaders.of(headerMap);

assertThat(underTest.getMetadataFieldsToGet()).isEqualTo(expected);
}

@Test
public void toJsonReturnsExpected() {
final JsonObject expectedHeadersJsonObject = JsonFactory.newObjectBuilder()
Expand Down Expand Up @@ -487,6 +525,9 @@ public void toJsonReturnsExpected() {
.set(DittoHeaderDefinition.LIVE_CHANNEL_CONDITION.getKey(), KNOWN_LIVE_CHANNEL_CONDITION)
.set(DittoHeaderDefinition.LIVE_CHANNEL_CONDITION_MATCHED.getKey(),
KNOWN_LIVE_CHANNEL_CONDITION_MATCHED)
.set(DittoHeaderDefinition.GET_METADATA.getKey(), KNOWN_DITTO_GET_METADATA)
.set(DittoHeaderDefinition.DELETE_METADATA.getKey(), KNOWN_DITTO_DELETE_METADATA)
.set(DittoHeaderDefinition.DITTO_METADATA.getKey(), KNOWN_DITTO_METADATA)
.build();

final Map<String, String> allKnownHeaders = createMapContainingAllKnownHeaders();
Expand Down Expand Up @@ -721,6 +762,9 @@ private static Map<String, String> createMapContainingAllKnownHeaders() {
result.put(DittoHeaderDefinition.LIVE_CHANNEL_CONDITION.getKey(), KNOWN_LIVE_CHANNEL_CONDITION);
result.put(DittoHeaderDefinition.LIVE_CHANNEL_CONDITION_MATCHED.getKey(),
String.valueOf(KNOWN_LIVE_CHANNEL_CONDITION_MATCHED));
result.put(DittoHeaderDefinition.GET_METADATA.getKey(), KNOWN_DITTO_GET_METADATA);
result.put(DittoHeaderDefinition.DELETE_METADATA.getKey(), KNOWN_DITTO_DELETE_METADATA);
result.put(DittoHeaderDefinition.DITTO_METADATA.getKey(), KNOWN_DITTO_METADATA.formatAsString());

return result;
}
Expand Down

0 comments on commit 222c8c1

Please sign in to comment.