package org.dicadeveloper.weplantaforest.encrypter;
import static org.assertj.core.api.Assertions.assertThat;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.dicadeveloper.weplantaforest.abo.Param;
import org.dicadeveloper.weplantaforest.common.testSupport.CleanDbRule;
import org.dicadeveloper.weplantaforest.encryption.ParamEncrypter;
import org.dicadeveloper.weplantaforest.testsupport.DbInjecter;
import org.dicadeveloper.weplantaforest.user.User;
import org.dicadeveloper.weplantaforest.user.UserRepository;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.annotation.DirtiesContext.ClassMode;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest({ "spring.profiles.active=test" })
@DirtiesContext(classMode = ClassMode.AFTER_EACH_TEST_METHOD)
public class ParamEncrypterTest {
@Rule
@Autowired
public CleanDbRule _cleanDbRule;
@Autowired
public DbInjecter _dbInjecter;
@Autowired
private UserRepository _userRepository;
@Test
public void testEncryptAndDecryptParams() {
_dbInjecter.injectUser("Adam");
Map<String, String> params = new HashMap<String, String>();
params.put("name1", "value1");
params.put("name2", "value2");
User user = _userRepository.findByName("Adam");
user.setMail("adam@adam.de");
ParamEncrypter paramEncrypter = ParamEncrypter.getInstance();
paramEncrypter.init(user);
List<Param> encryptedParams = paramEncrypter.encryptParams(params);
Map<String, String> decryptedParamMap = paramEncrypter.decryptParams(encryptedParams);
assertThat(decryptedParamMap.containsKey("name1")).isTrue();
assertThat(decryptedParamMap.containsKey("name2")).isTrue();
assertThat(decryptedParamMap.get("name1")).isEqualTo("value1");
assertThat(decryptedParamMap.get("name2")).isEqualTo("value2");
}
}