-
Notifications
You must be signed in to change notification settings - Fork 215
/
DittoAckRequestsFilterTest.java
131 lines (108 loc) · 5.7 KB
/
DittoAckRequestsFilterTest.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
/*
* Copyright (c) 2020 Contributors to the Eclipse Foundation
*
* See the NOTICE file(s) distributed with this work for additional
* information regarding copyright ownership.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0
*
* SPDX-License-Identifier: EPL-2.0
*/
package org.eclipse.ditto.protocol;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mutabilitydetector.unittesting.MutabilityAssert.assertInstancesOf;
import static org.mutabilitydetector.unittesting.MutabilityMatchers.areImmutable;
import java.util.List;
import org.assertj.core.util.Lists;
import org.eclipse.ditto.json.JsonArray;
import org.eclipse.ditto.json.JsonCollectors;
import org.eclipse.ditto.json.JsonValue;
import org.eclipse.ditto.base.model.acks.AcknowledgementLabel;
import org.eclipse.ditto.base.model.acks.AcknowledgementRequest;
import org.eclipse.ditto.base.model.acks.DittoAcknowledgementLabel;
import org.eclipse.ditto.base.model.headers.DittoHeaderDefinition;
import org.junit.Ignore;
import org.junit.Test;
/**
* Unit test for {@link DittoAckRequestsFilter}.
*/
public final class DittoAckRequestsFilterTest {
@Test
@Ignore("https://github.com/MutabilityDetector/MutabilityDetector/issues/185")
public void assertImmutability() {
assertInstancesOf(DittoAckRequestsFilter.class, areImmutable());
}
@Test
public void filterValueWithoutMatchingHeaderDefinition() {
final String key = "foo";
final String value = "bar";
final DittoAckRequestsFilter underTest = DittoAckRequestsFilter.getInstance();
assertThat(underTest.apply(key, value)).isEqualTo(value);
}
@Test
public void filterValueWithTwinPersistedOnlyAckRequest() {
final DittoHeaderDefinition headerDefinition = DittoHeaderDefinition.REQUESTED_ACKS;
final AcknowledgementRequest twinPersistedAckRequest =
AcknowledgementRequest.of(DittoAcknowledgementLabel.TWIN_PERSISTED);
final JsonArray ackRequestsJsonArray = JsonArray.newBuilder().add(twinPersistedAckRequest.toString()).build();
final DittoAckRequestsFilter underTest = DittoAckRequestsFilter.getInstance();
assertThat(underTest.apply(headerDefinition.getKey(), ackRequestsJsonArray.toString())).isNull();
}
@Test
public void filterEmptyStringValue() {
final DittoHeaderDefinition headerDefinition = DittoHeaderDefinition.REQUESTED_ACKS;
final DittoAckRequestsFilter underTest = DittoAckRequestsFilter.getInstance();
assertThat(underTest.apply(headerDefinition.getKey(), "")).isNull();
}
@Test
public void filterValueWithoutDittoInternalRequests() {
final DittoHeaderDefinition headerDefinition = DittoHeaderDefinition.REQUESTED_ACKS;
final List<AcknowledgementRequest> acknowledgementRequests = Lists.list(
AcknowledgementRequest.of(AcknowledgementLabel.of("foo")),
AcknowledgementRequest.of(AcknowledgementLabel.of("bar")));
final JsonArray acknowledgementRequestsJsonArray = acknowledgementRequests.stream()
.map(AcknowledgementRequest::toString)
.map(JsonValue::of)
.collect(JsonCollectors.valuesToArray());
final String value = acknowledgementRequestsJsonArray.toString();
final DittoAckRequestsFilter underTest = DittoAckRequestsFilter.getInstance();
assertThat(underTest.apply(headerDefinition.getKey(), value)).isEqualTo(value);
}
@Test
public void filterValueWithDittoInternalRequests() {
final DittoHeaderDefinition headerDefinition = DittoHeaderDefinition.REQUESTED_ACKS;
final List<AcknowledgementRequest> allAcknowledgementRequests = Lists.list(
AcknowledgementRequest.of(AcknowledgementLabel.of("foo")),
AcknowledgementRequest.of(DittoAcknowledgementLabel.TWIN_PERSISTED),
AcknowledgementRequest.of(DittoAcknowledgementLabel.LIVE_RESPONSE),
AcknowledgementRequest.of(AcknowledgementLabel.of("bar")));
final JsonArray allAcknowledgementRequestsJsonArray = allAcknowledgementRequests.stream()
.map(AcknowledgementRequest::toString)
.map(JsonValue::of)
.collect(JsonCollectors.valuesToArray());
final String value = allAcknowledgementRequestsJsonArray.toString();
final JsonArray externalAcknowledgementRequests = allAcknowledgementRequestsJsonArray.toBuilder()
.remove(2) // "live-response"
.remove(1) // "twin-persisted"
.build();
final String expected = externalAcknowledgementRequests.toString();
final DittoAckRequestsFilter underTest = DittoAckRequestsFilter.getInstance();
assertThat(underTest.apply(headerDefinition.getKey(), value)).isEqualTo(expected);
}
@Test
public void filterValueWithEmptyAcknowledgementLabel() {
final DittoHeaderDefinition headerDefinition = DittoHeaderDefinition.REQUESTED_ACKS;
final JsonArray allAcknowledgementRequestsJsonArray = JsonArray.newBuilder()
.add("foo", "", "baz")
.build();
final String value = allAcknowledgementRequestsJsonArray.toString();
final JsonArray externalAcknowledgementRequests = allAcknowledgementRequestsJsonArray.toBuilder()
.remove(1)
.build();
final String expected = externalAcknowledgementRequests.toString();
final DittoAckRequestsFilter underTest = DittoAckRequestsFilter.getInstance();
assertThat(underTest.apply(headerDefinition.getKey(), value)).isEqualTo(expected);
}
}