use the new session manager interface
[java-idp.git] / tests / edu / internet2 / middleware / shibboleth / metadata / MetadataTests.java
1 /*
2  * Copyright [2005] [University Corporation for Advanced Internet Development, Inc.] Licensed under the Apache License,
3  * Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy
4  * of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in
5  * writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
6  * OF ANY KIND, either express or implied. See the License for the specific language governing permissions and
7  * limitations under the License.
8  */
9
10 package edu.internet2.middleware.shibboleth.metadata;
11
12 import java.io.File;
13 import java.util.Iterator;
14
15 import junit.framework.TestCase;
16
17 import org.apache.log4j.BasicConfigurator;
18 import org.apache.log4j.Level;
19 import org.apache.log4j.Logger;
20 import org.opensaml.Configuration;
21 import org.opensaml.XML;
22 import org.opensaml.saml2.metadata.AttributeAuthorityDescriptor;
23 import org.opensaml.saml2.metadata.EntitiesDescriptor;
24 import org.opensaml.saml2.metadata.EntityDescriptor;
25 import org.opensaml.saml2.metadata.IDPSSODescriptor;
26 import org.opensaml.saml2.metadata.KeyDescriptor;
27 import org.opensaml.saml2.metadata.SPSSODescriptor;
28 import org.opensaml.saml2.metadata.provider.FilesystemMetadataProvider;
29 import org.opensaml.saml2.metadata.provider.MetadataProvider;
30
31 /**
32  * Validation suite for the SAML Metadata engine.
33  * 
34  * @author Walter Hoehn
35  */
36
37 public class MetadataTests extends TestCase {
38
39         // TODO add back test for "inline" metadata
40         // TODO query for extension/shib-proprietary metadata
41
42         public MetadataTests(String name) {
43
44                 super(name);
45                 BasicConfigurator.resetConfiguration();
46                 BasicConfigurator.configure();
47                 Logger.getRootLogger().setLevel(Level.OFF);
48                 
49                 Configuration.init();
50         }
51
52         public static void main(String[] args) {
53
54                 junit.textui.TestRunner.run(MetadataTests.class);
55                 BasicConfigurator.configure();
56                 Logger.getRootLogger().setLevel(Level.OFF);
57         }
58
59         public void testBasicSAMLXML() {
60
61                 try {
62                         // Load metadata
63                         MetadataProvider metadata = new FilesystemMetadataProvider(new File("src/conf/IQ-metadata.xml"));
64
65                         // Basic Query
66                         EntityDescriptor entity = metadata.getEntityDescriptor("urn:mace:inqueue:example.edu");
67                         assertNotNull("Unable to find test provider", entity);
68
69                         // Check the parent descriptor
70                         assertNotNull("Entity parent access is broken: no parent", entity.getParent());
71                         assertTrue("Entity parent access is broken: wrong parent type.",
72                                         entity.getParent() instanceof EntitiesDescriptor);
73                         assertEquals("Descriptor group is wrong.", ((EntitiesDescriptor) entity.getParent()).getName(),
74                                         "urn:mace:inqueue");
75
76                         // Check descriptor roles
77                         IDPSSODescriptor idp = entity.getIDPSSODescriptor(XML.SAML11_PROTOCOL_ENUM);
78                         AttributeAuthorityDescriptor aa = entity.getAttributeAuthorityDescriptor(XML.SAML11_PROTOCOL_ENUM);
79                         SPSSODescriptor sp = entity.getSPSSODescriptor(XML.SAML11_PROTOCOL_ENUM);
80                         assertNotNull("Missing IdP provider role.", idp);
81                         assertNotNull("Missing AA provider role.", aa);
82                         assertNotNull("Missing SP provider role.", sp);
83
84                         // SP-specific checks
85                         assertEquals("Incorrect assertion consumer service location.", sp.getAssertionConsumerServices().get(0)
86                                         .getLocation(), "https://wayf.internet2.edu/Shibboleth.sso/SAML/POST");
87
88                 } catch (Exception e) {
89                         e.printStackTrace();
90                         fail("Failed to correctly load metadata: " + e);
91                 }
92         }
93
94         public void testKeyDescriptorLookup() {
95
96                 try {
97                         // Load metadata
98                         MetadataProvider metadata = new FilesystemMetadataProvider(new File("src/conf/IQ-metadata.xml"));
99
100                         // Grab the Key Descriptors for an entity descriptor
101                         Iterator<KeyDescriptor> keys = metadata.getEntityDescriptor("urn:mace:inqueue:example.edu")
102                                         .getSPSSODescriptor(XML.SAML11_PROTOCOL_ENUM).getKeyDescriptors().iterator();
103
104                         // Make sure we have the expected key name
105                         KeyDescriptor key = keys.next();
106                         assertNotNull("No key descriptors found.", key);
107                         assertTrue("Encountered an unexpected number of key names", (key.getKeyInfo().getKeyNames().size() == 1));
108                         assertEquals("Encountered unexpected key names", "wayf.internet2.edu", key.getKeyInfo().getKeyNames()
109                                         .get(0));
110
111                 } catch (Exception e) {
112                         fail("Failed to correctly load metadata: " + e);
113                 }
114         }
115 }