/**
* Copyright (c) Istituto Nazionale di Fisica Nucleare, 2006-2014.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.italiangrid.voms.test.cred;
import org.bouncycastle.openssl.PasswordFinder;
import org.italiangrid.voms.credential.impl.AbstractLoadCredentialsStrategy;
import org.italiangrid.voms.credential.impl.DefaultLoadCredentialsStrategy;
import org.italiangrid.voms.util.FilePermissionHelper;
import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.Test;
import eu.emi.security.authn.x509.X509Credential;
import eu.emi.security.authn.x509.impl.X500NameUtils;
public class TestLoadCredential {
public static final String keyPassword = "pass";
public static final String pemCert = "src/test/resources/certs/test0.cert.pem";
public static final String pemKey = "src/test/resources/certs/test0.key.pem";
public static final String pkcs12Cred = "src/test/resources/certs/test0.p12";
public static final String TEST_CERT_SUBJECT = "CN=test0, O=IGI, C=IT";
public static final String PROXY_TMP_PATH = "/tmp/tempProxy";
public static final String emptyHome = "src/test/resources/homes/empty";
public static final String emptyGlobusHome = "src/test/resources/homes/empty.globus";
public static final String pemCredsHome = "src/test/resources/homes/pem-creds";
public static final String pkcs12CredsHome = "src/test/resources/homes/pkcs12-creds";
@BeforeClass
public static void setupFilePermissions() {
FilePermissionHelper.setPrivateKeyPermissions(pemCredsHome
+ "/.globus/userkey.pem");
FilePermissionHelper.setPKCS12Permissions(pkcs12CredsHome
+ "/.globus/usercred.p12");
}
static class TestPasswordFinder implements PasswordFinder {
public char[] getPassword() {
return keyPassword.toCharArray();
}
}
static class NullPasswordFinder implements PasswordFinder {
public char[] getPassword() {
return null;
}
}
@Test
public void testNoCredentialsFoundSuccess() {
AbstractLoadCredentialsStrategy strategy = new DefaultLoadCredentialsStrategy(
emptyHome);
X509Credential cred = strategy.loadCredentials(new NullPasswordFinder());
Assert.assertNull(cred);
}
@Test
public void testNoCredentialsFoundEmptyGlobusSuccess() {
AbstractLoadCredentialsStrategy strategy = new DefaultLoadCredentialsStrategy(
emptyGlobusHome);
X509Credential cred = strategy.loadCredentials(new NullPasswordFinder());
Assert.assertNull(cred);
}
@Test
public void testPEMCredentialLoadingSuccess() {
AbstractLoadCredentialsStrategy strategy = new DefaultLoadCredentialsStrategy(
pemCredsHome);
X509Credential cred = strategy.loadCredentials(new TestPasswordFinder());
Assert.assertNotNull(cred);
Assert.assertTrue(X500NameUtils.equal(cred.getCertificate()
.getSubjectX500Principal(), TEST_CERT_SUBJECT));
}
@Test
public void testPKCS12CredentialLoadingSuccess() {
AbstractLoadCredentialsStrategy strategy = new DefaultLoadCredentialsStrategy(
pkcs12CredsHome);
X509Credential cred = strategy.loadCredentials(new TestPasswordFinder());
Assert.assertNotNull(cred);
Assert.assertTrue(X500NameUtils.equal(cred.getCertificate()
.getSubjectX500Principal(), TEST_CERT_SUBJECT));
}
}