package kr.debop4j.core.cryptography;
import kr.debop4j.core.cryptography.spring.EncryptorConfiguration;
import kr.debop4j.core.cryptography.symmetric.ISymmetricByteEncryptor;
import kr.debop4j.core.tools.StringTool;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import java.util.Collection;
import static org.fest.assertions.Assertions.assertThat;
/**
* 설명을 추가하세요.
*
* @author 배성혁 ( sunghyouk.bae@gmail.com )
* @since 12. 12. 18
*/
@Slf4j
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { EncryptorConfiguration.class })
public class EncryptorTest {
private static final String PLAIN_TEXT = "동해물과 백두산이 마르고 닳도록~ Hello World! 1234567890";
@Autowired
ApplicationContext context;
@Test
public void byteEncryptorTest() {
Collection<ISymmetricByteEncryptor> byteEncryptors = context.getBeansOfType(ISymmetricByteEncryptor.class).values();
for (ISymmetricByteEncryptor encryptor : byteEncryptors) {
if (log.isDebugEnabled())
log.debug("Encryptor=[{}] 를 테스트합니다.", encryptor.getClass().getSimpleName());
encryptor.setPassword("debop");
byte[] encryptedBytes = encryptor.encrypt(StringTool.getUtf8Bytes(PLAIN_TEXT));
byte[] decryptedBytes = encryptor.decrypt(encryptedBytes);
assertThat(decryptedBytes).isNotNull();
assertThat(StringTool.getUtf8String(decryptedBytes)).isEqualTo(PLAIN_TEXT);
}
}
}