From 0a47d5946a4bc72b6536d56f062ccf580e1b39a6 Mon Sep 17 00:00:00 2001 From: Sebastian Sdorra Date: Tue, 29 Nov 2016 20:46:30 +0100 Subject: [PATCH] added unit test for storing and loading of default cipher key --- .../security/DefaultCipherHandlerTest.java | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/scm-core/src/test/java/sonia/scm/security/DefaultCipherHandlerTest.java b/scm-core/src/test/java/sonia/scm/security/DefaultCipherHandlerTest.java index 95414d5f71..1fe78191de 100644 --- a/scm-core/src/test/java/sonia/scm/security/DefaultCipherHandlerTest.java +++ b/scm-core/src/test/java/sonia/scm/security/DefaultCipherHandlerTest.java @@ -31,15 +31,62 @@ package sonia.scm.security; +import java.io.File; +import java.io.IOException; import org.junit.Test; import static org.junit.Assert.*; +import org.junit.Rule; +import org.junit.rules.TemporaryFolder; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import static org.mockito.Mockito.*; +import org.mockito.runners.MockitoJUnitRunner; +import sonia.scm.SCMContextProvider; /** * Unit tests for {@link DefaultCipherHandler}. * * @author Sebastian Sdorra */ +@RunWith(MockitoJUnitRunner.class) public class DefaultCipherHandlerTest { + + @Mock + private SCMContextProvider context; + + @Mock + private KeyGenerator keyGenerator; + + @Rule + public TemporaryFolder tempFolder = new TemporaryFolder(); + + /** + * Tests loading and storing default key. + * + * @throws IOException + */ + @Test + public void testLoadingAndStoringDefaultKey() throws IOException { + File baseDirectory = tempFolder.newFolder(); + when(context.getBaseDirectory()).thenReturn(baseDirectory); + when(keyGenerator.createKey()).thenReturn("secret"); + + DefaultCipherHandler cipher = new DefaultCipherHandler(context, keyGenerator); + File configDirectory = new File(baseDirectory, "config"); + assertTrue(new File(configDirectory, DefaultCipherHandler.CIPHERKEY_FILENAME).exists()); + + // plain text for assertion + String plain = "hallo123"; + + // encrypt value with new generated key + String encrypted = cipher.encode(plain); + + // load key from disk + cipher = new DefaultCipherHandler(context, keyGenerator); + + // decrypt with loaded key + assertEquals(plain, cipher.decode(encrypted)); + } /** * Test encode and decode method with a separate key.