package com.bitmonlab.osiris.imports.map.utils;
import java.security.MessageDigest;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
import com.bitmonlab.osiris.imports.map.utils.Cryptography;
@RunWith(PowerMockRunner.class)
@PrepareForTest({MessageDigest.class})
public class CryptographyTest {
@Mock
private MessageDigest messageDigest;
@Mock
private StringBuffer hex;
@Mock
private String strData;
@Mock
private String strChkSum;
@Test
public void calculateCheckSum() throws Exception{
final String HEXES = "0123456789ABCDEF";
final String ALGORITHM = "SHA-512";
int sizeBuffer = 100;
byte[] bDigest=new byte[sizeBuffer];
//Fixture
PowerMockito.mockStatic(MessageDigest.class);
PowerMockito.when(MessageDigest.getInstance(ALGORITHM)).thenReturn(messageDigest);
Mockito.when(messageDigest.digest()).thenReturn(bDigest);
PowerMockito.whenNew(StringBuffer.class).withArguments(sizeBuffer).thenReturn(hex);
Mockito.when(hex.append(HEXES.charAt((bDigest[0] & 0xF0) >> 4))).thenReturn(hex);
Mockito.when(hex.append(HEXES.charAt((bDigest[0] & 0x0F)))).thenReturn(hex);
Mockito.when(hex.toString()).thenReturn(strChkSum);
//Experimentation
Cryptography.calculateCheckSum(strData);
//Expectation
//verify(messageDigest).reset();
//verify(messageDigest).update(strData.getBytes(), 0, strData.length());
}
}