/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package project.latex.balloon.writer;
import com.google.gson.Gson;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.commons.codec.binary.Base64;
import org.junit.After;
import static org.junit.Assert.*;
import org.junit.Before;
import org.junit.Test;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import project.latex.balloon.TransmittedDataKeysResource;
/**
*
* @author dgorst
*/
public class HttpDataWriterTest {
private HttpDataWriter writer;
private List<String> dataKeys;
private TransmittedDataKeysResource mockTransmittedDataKeysResource;
private ChecksumGenerator mockChecksumGenerator;
@Before
public void setUp() {
this.dataKeys = new ArrayList<>();
this.mockTransmittedDataKeysResource = mock(TransmittedDataKeysResource.class);
when(mockTransmittedDataKeysResource.getTransmittedDataKeys()).thenReturn(dataKeys);
mockChecksumGenerator = mock(ChecksumGenerator.class);
this.writer = new HttpDataWriter(mockTransmittedDataKeysResource, new DataModelConverter(mockChecksumGenerator), null);
}
@After
public void tearDown() {
}
/**
* Test of getJsonStringFromRawData method, of class HttpDataWriter.
*/
@Test
public void testGetJsonStringFromRawData() {
String actual = writer.getJsonStringFromRawData("testing");
byte[] encodedBytes = Base64.encodeBase64("testing".getBytes());
Map<String, Object> data = new HashMap<>();
data.put("_raw", new String(encodedBytes));
Map<String, Object> body = new HashMap<>();
body.put("data", data);
Gson gson = new Gson();
String expected = gson.toJson(body);
assertEquals(expected, actual);
}
@Test(expected = IllegalArgumentException.class)
public void testGetJsonStringThrowsIfRawDataIsNull() {
writer.getJsonStringFromRawData(null);
}
@Test(expected = IllegalArgumentException.class)
public void testSendPostRequestThrowsIfRawDataIsNull() throws IOException {
writer.sendPostRequest(null);
}
@Test(expected = IllegalArgumentException.class)
public void testWriteDataThrowsIfDataIsNull() {
writer.writeData(null);
}
}