Skip to content

Commit

Permalink
Adds ifMatch and ifNoneMatch to DittoHeadersBuilder
Browse files Browse the repository at this point in the history
* Adds unit tests for known headers

Signed-off-by: Klem Yannic (INST/ECS1) <Yannic.Klem@bosch-si.com>
  • Loading branch information
Yannic92 committed Sep 5, 2018
1 parent 8b1ef64 commit 9009e0b
Show file tree
Hide file tree
Showing 3 changed files with 64 additions and 1 deletion.
Expand Up @@ -229,6 +229,18 @@ public S eTag(final CharSequence eTag) {
return myself;
}

@Override
public S ifMatch(final CharSequence ifMatch) {
putCharSequence(DittoHeaderDefinition.IF_MATCH, ifMatch);
return myself;
}

@Override
public S ifNoneMatch(final CharSequence ifMatch) {
putCharSequence(DittoHeaderDefinition.IF_NONE_MATCH, ifMatch);
return myself;
}

@Override
public S putHeader(final CharSequence key, final CharSequence value) {
validateKey(key);
Expand Down Expand Up @@ -271,5 +283,4 @@ public R build() {
}

protected abstract R doBuild(DittoHeaders dittoHeaders);

}
Expand Up @@ -142,6 +142,22 @@ public interface DittoHeadersBuilder<B extends DittoHeadersBuilder, R extends Di
*/
B eTag(CharSequence eTag);

/**
* Sets the If-Match value.
*
* @param ifMatch The If-Match value to be set.
* @return this builder for Method Chaining
*/
B ifMatch(CharSequence ifMatch);

/**
* Sets the If-None-Match value.
*
* @param ifNoneMatch The If-None-Match value to be set.
* @return this builder for Method Chaining
*/
B ifNoneMatch(CharSequence ifNoneMatch);

/**
* Puts an arbitrary header with the specified {@code name} and String {@code value} to this builder.
*
Expand Down
Expand Up @@ -52,7 +52,12 @@ public final class ImmutableDittoHeadersTest {
private static final String KNOWN_SOURCE = "knownSource";
private static final String KNOWN_CHANNEL = "live";
private static final boolean KNOWN_RESPONSE_REQUIRED = true;
private static final String KNOWN_IF_MATCH = "\"oneValue\",\"anotherValue\"";
private static final String KNOWN_IF_NONE_MATCH = "\"notOneValue\",\"notAnotherValue\"";
private static final String KNOWN_ETAG = "-12124212";
private static final Collection<String> KNOWN_READ_SUBJECTS = Collections.singleton(KNOWN_READ_SUBJECT);
private static final String KNOWN_CONTENT_TYPE = "application/json";
private static final String KNOWN_ORIGIN = "knownOrigin";

@Test
public void assertImmutability() {
Expand All @@ -79,6 +84,11 @@ public void settingAllKnownHeadersWorksAsExpected() {
.dryRun(false)
.schemaVersion(KNOWN_SCHEMA_VERSION)
.source(KNOWN_SOURCE)
.eTag(KNOWN_ETAG)
.ifMatch(KNOWN_IF_MATCH)
.ifNoneMatch(KNOWN_IF_NONE_MATCH)
.origin(KNOWN_ORIGIN)
.contentType(KNOWN_CONTENT_TYPE)
.build();

assertThat(underTest).isEqualTo(expectedHeaderMap);
Expand Down Expand Up @@ -199,6 +209,11 @@ public void toJsonReturnsExpected() {
.set(DittoHeaderDefinition.RESPONSE_REQUIRED.getKey(), KNOWN_RESPONSE_REQUIRED)
.set(DittoHeaderDefinition.DRY_RUN.getKey(), false)
.set(DittoHeaderDefinition.READ_SUBJECTS.getKey(), toJsonArray(KNOWN_READ_SUBJECTS))
.set(DittoHeaderDefinition.IF_MATCH.getKey(), KNOWN_IF_MATCH)
.set(DittoHeaderDefinition.IF_NONE_MATCH.getKey(), KNOWN_IF_NONE_MATCH)
.set(DittoHeaderDefinition.ETAG.getKey(), KNOWN_ETAG)
.set(DittoHeaderDefinition.ORIGIN.getKey(), KNOWN_ORIGIN)
.set(DittoHeaderDefinition.CONTENT_TYPE.getKey(), KNOWN_CONTENT_TYPE)
.build();
final Map<String, String> allKnownHeaders = createMapContainingAllKnownHeaders();

Expand Down Expand Up @@ -260,6 +275,22 @@ public void entrySetIsUnmodifiable() {
.withNoCause();
}

/**
* Verifies that really all known headers are in the map created by {@link #createMapContainingAllKnownHeaders()}
*/
@Test
public void allKnownHeadersAreTested() {

final Set<String> testedHeaderNames = createMapContainingAllKnownHeaders().keySet();

final String[] knownHeaderNames = Arrays.stream(DittoHeaderDefinition.values())
.map(DittoHeaderDefinition::getKey)
.distinct()
.toArray(String[]::new);

assertThat(testedHeaderNames).containsExactlyInAnyOrder(knownHeaderNames);
}

private static Map<String, String> createMapContainingAllKnownHeaders() {
final Map<String, String> result = new HashMap<>();
result.put(DittoHeaderDefinition.AUTHORIZATION_SUBJECTS.getKey(), toJsonArray(AUTH_SUBJECTS).toString());
Expand All @@ -270,6 +301,11 @@ private static Map<String, String> createMapContainingAllKnownHeaders() {
result.put(DittoHeaderDefinition.RESPONSE_REQUIRED.getKey(), String.valueOf(KNOWN_RESPONSE_REQUIRED));
result.put(DittoHeaderDefinition.DRY_RUN.getKey(), String.valueOf(false));
result.put(DittoHeaderDefinition.READ_SUBJECTS.getKey(), toJsonArray(KNOWN_READ_SUBJECTS).toString());
result.put(DittoHeaderDefinition.IF_MATCH.getKey(), KNOWN_IF_MATCH);
result.put(DittoHeaderDefinition.IF_NONE_MATCH.getKey(), KNOWN_IF_NONE_MATCH);
result.put(DittoHeaderDefinition.ETAG.getKey(), KNOWN_ETAG);
result.put(DittoHeaderDefinition.CONTENT_TYPE.getKey(), KNOWN_CONTENT_TYPE);
result.put(DittoHeaderDefinition.ORIGIN.getKey(), KNOWN_ORIGIN);

return result;
}
Expand Down

0 comments on commit 9009e0b

Please sign in to comment.