1   
2   
3   
4   
5   
6   
7   
8   
9   
10  
11  
12  
13  
14  
15  
16  package org.kuali.rice.ksb.security.admin;
17  
18  import org.junit.Test;
19  import org.kuali.rice.core.api.resourceloader.GlobalResourceLoader;
20  import org.kuali.rice.ksb.test.KSBTestCase;
21  
22  import javax.xml.namespace.QName;
23  import java.security.GeneralSecurityException;
24  import java.security.KeyStore;
25  
26  import static org.junit.Assert.assertEquals;
27  import static org.junit.Assert.assertTrue;
28  
29  
30  
31  
32  
33  
34  
35  public class JavaSecurityManagementServiceTest extends KSBTestCase {
36      
37      private static final String TEST_CLIENT_ALIAS = "test_alias";
38      private static final String TEST_CLIENT_PASSWORD = "test_password";
39      private static final String MOCK_JAVA_SECURITY_MANAGEMENT_SERVICE_BEAN_ID = "testJavaSecurityManagementService";
40  
41      private MockJavaSecurityManagementService getMockJavaSecurityManagementService() {
42          QName serviceName = new QName("KEW", MOCK_JAVA_SECURITY_MANAGEMENT_SERVICE_BEAN_ID);
43          return (MockJavaSecurityManagementService)GlobalResourceLoader.getService(serviceName);
44      }
45  
46      @Test 
47      public void testCertificatesExistInKeyStores() throws Exception {
48          MockJavaSecurityManagementService securityService = getMockJavaSecurityManagementService();
49          String moduleKeyStoreAlias = securityService.getModuleKeyStoreAlias();
50          
51          
52          KeyStore clientKeyStore = securityService.generateClientKeystore(TEST_CLIENT_ALIAS, TEST_CLIENT_PASSWORD);
53  
54          
55          verifyKeyStoreContents(clientKeyStore, "client", moduleKeyStoreAlias, TEST_CLIENT_ALIAS);
56          assertEquals("Certs do not match in client keystore file", securityService.getCertificate(moduleKeyStoreAlias), clientKeyStore.getCertificate(moduleKeyStoreAlias));
57          
58          
59          verifyKeyStoreContents(securityService.getModuleKeyStore(), "module", TEST_CLIENT_ALIAS, securityService.getModuleKeyStoreAlias());
60          assertEquals("Certs do not match in module keystore file", clientKeyStore.getCertificate(moduleKeyStoreAlias), securityService.getCertificate(moduleKeyStoreAlias));
61      }
62      
63      private void verifyKeyStoreContents(KeyStore keyStore, String keyStoreQualifier, String certificateEntryAlias, String privateKeyEntryAlias) throws GeneralSecurityException {
64          assertTrue("Alias for Certificate Entry '" + certificateEntryAlias + "' should exist in " + keyStoreQualifier + " keystore file", keyStore.containsAlias(certificateEntryAlias));
65          assertTrue("Alias '" + certificateEntryAlias + "' should be Certificate Entry in " + keyStoreQualifier + " keystore file", keyStore.isCertificateEntry(certificateEntryAlias));
66          assertTrue("Alias for Private Key Entry '" + privateKeyEntryAlias + "' should exist in " + keyStoreQualifier + " keystore file", keyStore.containsAlias(privateKeyEntryAlias));
67          assertTrue("Alias '" + privateKeyEntryAlias + "' should be Private Key Entry in " + keyStoreQualifier + " keystore file", keyStore.entryInstanceOf(privateKeyEntryAlias, KeyStore.PrivateKeyEntry.class));
68      }
69  
70  }