package org.cagrid.dorian.service.impl; import gov.nih.nci.cagrid.opensaml.SAMLAssertion; import java.io.ByteArrayInputStream; import java.security.KeyPair; import java.security.cert.X509Certificate; import org.cagrid.core.common.JAXBUtils; import org.cagrid.dorian.model.federation.CertificateLifetime; import org.cagrid.dorian.service.CertificateSignatureAlgorithm; import org.cagrid.dorian.service.Dorian; import org.cagrid.gaards.authentication.AuthenticateUserRequest; import org.cagrid.gaards.authentication.BasicAuthentication; import org.cagrid.gaards.pki.KeyUtil; import org.cagrid.gaards.saml.encoding.SAMLUtils; import org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; import org.oasis.names.tc.saml.assertion.AssertionType; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.w3c.dom.Element; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = { "classpath:META-INF/spring/dorian-configuration.xml" }) public class DorianImplTest { @javax.annotation.Resource private Dorian dorian; @Test public void testDorian() { Assert.assertNotNull(dorian); } @Test public void testAuthenticate() throws Exception { BasicAuthentication credential = new BasicAuthentication(); credential.setUserId("dorian"); credential.setPassword("DorianAdmin$1"); AuthenticateUserRequest request = new AuthenticateUserRequest(); AuthenticateUserRequest.Credential credential2 = new AuthenticateUserRequest.Credential(); credential2.setCredential(credential); request.setCredential(credential2); SAMLAssertion samlAssertion = dorian.authenticate(credential); String samlXML = samlAssertion.toString(); System.out.println("samlXML"); System.out.println(samlXML); System.out.println(); KeyPair keyPair = KeyUtil.generateRSAKeyPair1024(); CertificateLifetime lifetime = new CertificateLifetime(); lifetime.setHours(6); // Test that SAMLAssertion to String and back is OK. SAMLAssertion _samlAssertionX = new SAMLAssertion(new ByteArrayInputStream(samlXML.getBytes("UTF-8"))); SAMLAssertion samlAssertionX = SAMLUtils.canonicalizeSAMLAssertion(_samlAssertionX); Assert.assertNotSame(_samlAssertionX, samlAssertionX); System.out.println("samlXML canonicalized"); System.out.println(samlAssertionX); System.out.println(); X509Certificate certificate = dorian.requestUserCertificate(samlAssertionX, keyPair.getPublic(), lifetime, CertificateSignatureAlgorithm.SHA2); Assert.assertNotNull(certificate); } }