17
17
18
18
import static org .junit .Assert .assertArrayEquals ;
19
19
import static org .junit .Assert .assertEquals ;
20
+ import static org .junit .Assert .assertFalse ;
20
21
import static org .junit .Assert .assertTrue ;
21
22
import static org .junit .Assert .fail ;
22
23
23
24
import java .nio .ByteBuffer ;
24
25
import java .util .ArrayList ;
25
26
import java .util .Arrays ;
26
27
import java .util .List ;
27
-
28
28
import org .junit .BeforeClass ;
29
29
import org .junit .Test ;
30
30
import org .reactivestreams .Publisher ;
31
31
import org .reactivestreams .Subscriber ;
32
32
import org .reactivestreams .Subscription ;
33
-
34
33
import software .amazon .awssdk .core .checksums .Md5Checksum ;
35
34
36
35
/**
@@ -66,6 +65,7 @@ public void testSinglePacket() {
66
65
driver .doOnComplete ();
67
66
68
67
assertTrue (s .hasCompleted ());
68
+ assertFalse (s .isOnErrorCalled ());
69
69
}
70
70
71
71
@ Test
@@ -81,6 +81,7 @@ public void testTwoPackets() {
81
81
driver .doOnComplete ();
82
82
83
83
assertTrue (s .hasCompleted ());
84
+ assertFalse (s .isOnErrorCalled ());
84
85
}
85
86
}
86
87
@@ -100,6 +101,7 @@ public void testTinyPackets() {
100
101
driver .doOnComplete ();
101
102
102
103
assertTrue (s .hasCompleted ());
104
+ assertFalse (s .isOnErrorCalled ());
103
105
}
104
106
}
105
107
@@ -121,12 +123,29 @@ public void testUnknownLength() {
121
123
driver .doOnComplete ();
122
124
123
125
assertTrue (s .hasCompleted ());
126
+ assertFalse (s .isOnErrorCalled ());
127
+ }
128
+
129
+ @ Test
130
+ public void checksumValidationFailure_throwsSdkClientException_NotNPE () {
131
+ final byte [] incorrectData = new byte [0 ];
132
+ final TestPublisher driver = new TestPublisher ();
133
+ final TestSubscriber s = new TestSubscriber (Arrays .copyOfRange (incorrectData , 0 , TEST_DATA_SIZE ));
134
+ final ChecksumValidatingPublisher p = new ChecksumValidatingPublisher (driver , new Md5Checksum (), TEST_DATA_SIZE + CHECKSUM_SIZE );
135
+ p .subscribe (s );
136
+
137
+ driver .doOnNext (ByteBuffer .wrap (incorrectData ));
138
+ driver .doOnComplete ();
139
+
140
+ assertTrue (s .isOnErrorCalled ());
141
+ assertFalse (s .hasCompleted ());
124
142
}
125
143
126
144
private class TestSubscriber implements Subscriber <ByteBuffer > {
127
145
final byte [] expected ;
128
146
final List <ByteBuffer > received ;
129
147
boolean completed ;
148
+ boolean onErrorCalled ;
130
149
131
150
TestSubscriber (byte [] expected ) {
132
151
this .expected = expected ;
@@ -148,10 +167,9 @@ public void onNext(ByteBuffer buffer) {
148
167
149
168
@ Override
150
169
public void onError (Throwable t ) {
151
- fail ( "Test failed" ) ;
170
+ onErrorCalled = true ;
152
171
}
153
172
154
-
155
173
@ Override
156
174
public void onComplete () {
157
175
int matchPos = 0 ;
@@ -168,6 +186,10 @@ public void onComplete() {
168
186
public boolean hasCompleted () {
169
187
return completed ;
170
188
}
189
+
190
+ public boolean isOnErrorCalled () {
191
+ return onErrorCalled ;
192
+ }
171
193
}
172
194
173
195
private class TestPublisher implements Publisher <ByteBuffer > {
0 commit comments