package org.sef4j.core.helpers.ext.influxdb;
import java.io.IOException;
import java.net.URL;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import org.junit.Test;
import org.mockito.Mockito;
import org.mockito.internal.matchers.ArrayEquals;
import org.sef4j.core.helpers.ext.influxdb.InfluxDBJsonSender;
import org.sef4j.core.helpers.senders.http.HttpPostBytesSender;
import org.sef4j.core.helpers.senders.http.HttpPostBytesSenderFactory;
public class InfluxDBJsonSenderTest {
protected HttpPostBytesSender mockHttpPostSender = Mockito.mock(HttpPostBytesSender.class);
protected InfluxDBJsonSender sut = new InfluxDBJsonSender("http://dummyurl", "dummyDb", "dummyUser", "dummyPassword",
new HttpPostBytesSenderFactory() {
@Override
public HttpPostBytesSender create(String displayName, URL url, String contentType, Map<String, String> headers) {
return mockHttpPostSender;
}
});
@Test
public void testSendEvent() throws IOException {
// Prepare
Mockito.doNothing().when(mockHttpPostSender).sendEvent(Mockito.any(byte[].class));
String msg1 = "{ test: 1 }";
// Perform
sut.sendEvent(msg1);
// Post-check
byte[] expectedJsonBody = ("[\n" + msg1 + "\n]").getBytes();
Mockito.verify(mockHttpPostSender).sendEvent((byte[]) Mockito.argThat(new ArrayEquals(expectedJsonBody)));
}
@Test
public void testSendEvents() throws IOException {
// Prepare
Mockito.doNothing().when(mockHttpPostSender).sendEvent(Mockito.any(byte[].class));
String msg1 = "{ test: 1 }";
String msg2 = "{ test: 2 }";
List<String> jsonFragments = Arrays.asList(msg1, msg2);
// Perform
sut.sendEvents(jsonFragments);
// Post-check
byte[] expectedJsonBody = ("[\n" + msg1 + ",\n" + msg2 + "\n]").getBytes();
Mockito.verify(mockHttpPostSender).sendEvent((byte[]) Mockito.argThat(new ArrayEquals(expectedJsonBody)));
}
}