@Before public void setUp() throws Exception { // Initialize XacmlddHelper.init(); // Create the certificate factory factory = CertificateFactory.getInstance("dDelega/Xacml"); }
@Test public void testSingleMarshalling() throws Exception { // First certificate InputStream input = CertificateFactoryTest.class.getResourceAsStream( "/data/it/unipr/ddelega/xacmldd/cert-one.xml"); assertNotNull(input); // Create the first certificate unmarshalling the input XacmlddCertificate cert = (XacmlddCertificate) factory.generateCertificate(input); // Check everything assertEquals("MD5:K3yoOJGi/BtjD4zkOzd5GA==", cert.getIssuer()); assertNotNull(cert.getIssuerKey()); assertEquals( "MD5:K3yoOJGi/BtjD4zkOzd5GA==", XacmlddHelper.hashPublicKey(cert.getIssuerKey(), "MD5")); // Role policy assertTrue( "Wrong role policies in marshalled certificate", cert.getXACMLPolicies().size() == 1); SimpleAuthorizationPolicy rp = new SimpleAuthorizationPolicy(cert.getXACMLPolicies().get(0)); // Subjects assertTrue( "Wrong threshold subjects in marshalled role policy", rp.getThresholdSubjects().size() == 0); assertTrue("Wrong subjects in marshalled role policy", rp.getSubjects().size() == 1); assertEquals( XacmlddHelper.createFullyQualifiedName("MD5:K3yoOJGi/BtjD4zkOzd5GA==", "colleghi"), rp.getSubjects().get(0)); // Resources assertTrue("Wrong resources in marshalled role policy", rp.getResources().size() == 1); assertEquals("/home/mackdk/Documenti/lavoro/*", rp.getResources().get(0)); // Actions assertTrue("Wrong actions in marshalled role policy", rp.getActions().size() == 2); assertEquals("Read", rp.getActions().get(0)); assertEquals("Write", rp.getActions().get(1)); // Rule assertTrue( "Wrong rule effect in marshalled role policy", rp.getEffect() == SimpleAuthorizationPolicy.EFFECT_PERMIT); // Delegation assertTrue(cert.delegation()); assertEquals(XacmlddCertificate.DELEGATION_TRUSTED, cert.delegationTrustLevel()); // Second certificate input = CertificateFactoryTest.class.getResourceAsStream( "/data/it/unipr/ddelega/xacmldd/cert-two.xml"); assertNotNull(input); // Create the first certificate unmarshalling the input cert = (XacmlddCertificate) factory.generateCertificate(input); // Check everything assertEquals("MD5:8jkUkNKKLQfw/iTX9TgtTg==", cert.getIssuer()); assertNotNull(cert.getIssuerKey()); assertEquals( "MD5:8jkUkNKKLQfw/iTX9TgtTg==", XacmlddHelper.hashPublicKey(cert.getIssuerKey(), "MD5")); // Role policy assertTrue( "Wrong role policies in marshalled certificate", cert.getXACMLPolicies().size() == 1); rp = new SimpleAuthorizationPolicy(cert.getXACMLPolicies().get(0)); // Subjects assertTrue("Wrong subjects in marshalled role policy", rp.getSubjects().size() == 0); assertTrue( "Wrong threshold subjects in marshalled role policy", rp.getThresholdSubjects().size() == 1); ThresholdSubject th = new ThresholdSubject(ThresholdSubject.N_OVER_N); th.addSubject("MD5:Yy+Zo6q4OUCdjgxq5bQCAQ=="); th.addSubject("MD5:8jkUkNKKLQfw/iTX9TgtTg==", "amici"); assertEquals(th, rp.getThresholdSubjects().get(0)); // Resources assertTrue("Wrong resources in marshalled role policy", rp.getResources().size() == 3); assertEquals("/home/mackdk/Documenti/Musica/*.m4a", rp.getResources().get(0)); assertEquals("/home/mackdk/Documenti/Musica/*.mp3", rp.getResources().get(1)); assertEquals("/home/mackdk/Documenti/Musica/*.ogg", rp.getResources().get(2)); // Actions assertTrue("Wrong actions in marshalled role policy", rp.getActions().size() == 1); assertEquals("Download", rp.getActions().get(0)); // Rule assertTrue( "Wrong rule effect in marshalled role policy", rp.getEffect() == SimpleAuthorizationPolicy.EFFECT_PERMIT); // Delegation assertTrue(cert.delegation()); assertEquals(75, cert.delegationTrustLevel()); }