@@ -117,6 +117,18 @@ public void testCheckSPSettingsAllErrors() throws IOException, Error {
117
117
assertThat (settingsErrors , hasItem ("contact_type_invalid" ));
118
118
assertThat (settingsErrors , hasItem ("contact_not_enough_data" ));
119
119
assertThat (settingsErrors , hasItem ("organization_not_enough_data" ));
120
+
121
+ Saml2Settings settings2 = new SettingsBuilder ().fromFile ("config/config.sperrors_multi_attribute_consuming_services.properties" ).build ();
122
+ List <String > settings2Errors = settings2 .checkSPSettings ();
123
+ assertFalse (settings2Errors .isEmpty ());
124
+ assertThat (settings2Errors , hasItem ("sp_entityId_not_found" ));
125
+ assertThat (settings2Errors , hasItem ("sp_attribute_consuming_service_not_enough_data" ));
126
+ assertThat (settings2Errors , hasItem ("sp_attribute_consuming_service_no_requested_attribute" ));
127
+ assertThat (settings2Errors , hasItem ("sp_attribute_consuming_service_multiple_defaults" ));
128
+ assertThat (settings2Errors , hasItem ("sp_attribute_consuming_service_not_enough_requested_attribute_data" ));
129
+ assertThat (settings2Errors , hasItem ("sp_cert_not_found_and_required" ));
130
+ assertThat (settings2Errors , hasItem ("contact_not_enough_data" ));
131
+ assertThat (settings2Errors , hasItem ("organization_not_enough_data" ));
120
132
}
121
133
122
134
/**
@@ -133,6 +145,15 @@ public void testCheckSPSettingsOk() throws IOException, Error {
133
145
Saml2Settings settings = new SettingsBuilder ().fromFile ("config/config.all.properties" ).build ();
134
146
List <String > settingsErrors = settings .checkSPSettings ();
135
147
assertTrue (settingsErrors .isEmpty ());
148
+
149
+ Saml2Settings settings2 = new SettingsBuilder ().fromFile ("config/config.all_multi_attribute_consuming_services.properties" ).build ();
150
+ List <String > settings2Errors = settings2 .checkSPSettings ();
151
+ assertTrue (settings2Errors .isEmpty ());
152
+
153
+ // no attribute consuming services at all
154
+ Saml2Settings settings3 = new SettingsBuilder ().fromFile ("config/config.min.properties" ).build ();
155
+ List <String > settings3Errors = settings3 .checkSPSettings ();
156
+ assertTrue (settings3Errors .isEmpty ());
136
157
}
137
158
138
159
/**
@@ -159,6 +180,22 @@ public void testCheckSettingsAllErrors() throws IOException, Error {
159
180
assertThat (settingsErrors , hasItem ("idp_sso_url_invalid" ));
160
181
assertThat (settingsErrors , hasItem ("idp_cert_or_fingerprint_not_found_and_required" ));
161
182
assertThat (settingsErrors , hasItem ("idp_cert_not_found_and_required" ));
183
+
184
+ Saml2Settings settings2 = new SettingsBuilder ().fromFile ("config/config.allerrors_multi_attribute_consuming_services.properties" ).build ();
185
+ List <String > settings2Errors = settings2 .checkSettings ();
186
+ assertFalse (settings2Errors .isEmpty ());
187
+ assertThat (settings2Errors , hasItem ("sp_entityId_not_found" ));
188
+ assertThat (settings2Errors , hasItem ("sp_attribute_consuming_service_not_enough_data" ));
189
+ assertThat (settings2Errors , hasItem ("sp_attribute_consuming_service_no_requested_attribute" ));
190
+ assertThat (settings2Errors , hasItem ("sp_attribute_consuming_service_multiple_defaults" ));
191
+ assertThat (settings2Errors , hasItem ("sp_attribute_consuming_service_not_enough_requested_attribute_data" ));
192
+ assertThat (settings2Errors , hasItem ("sp_cert_not_found_and_required" ));
193
+ assertThat (settings2Errors , hasItem ("contact_not_enough_data" ));
194
+ assertThat (settings2Errors , hasItem ("organization_not_enough_data" ));
195
+ assertThat (settings2Errors , hasItem ("idp_entityId_not_found" ));
196
+ assertThat (settings2Errors , hasItem ("idp_sso_url_invalid" ));
197
+ assertThat (settings2Errors , hasItem ("idp_cert_or_fingerprint_not_found_and_required" ));
198
+ assertThat (settings2Errors , hasItem ("idp_cert_not_found_and_required" ));
162
199
}
163
200
164
201
/**
@@ -287,6 +324,49 @@ public void testGetSPMetadataUnsigned() throws Exception {
287
324
assertThat (metadataStr , containsString ("<md:NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified</md:NameIDFormat>" ));
288
325
}
289
326
327
+ /**
328
+ * Tests the getSPMetadata method of the Saml2Settings
329
+ * <p>
330
+ * Case Unsigned metadata with multiple Attribute Consuming Services
331
+ *
332
+ * @throws Exception
333
+ *
334
+ * @see com.onelogin.saml2.settings.Saml2Settings#getSPMetadata
335
+ */
336
+ @ Test
337
+ public void testGetSPMetadataUnsignedMultiAttributeConsumingServices () throws Exception {
338
+ Saml2Settings settings = new SettingsBuilder ().fromFile ("config/config.min_multi_attribute_consuming_services.properties" ).build ();
339
+
340
+ String metadataStr = settings .getSPMetadata ();
341
+
342
+ Document metadataDoc = Util .loadXML (metadataStr );
343
+ assertTrue (metadataDoc instanceof Document );
344
+
345
+ assertEquals ("md:EntityDescriptor" , metadataDoc .getDocumentElement ().getNodeName ());
346
+ assertEquals ("md:SPSSODescriptor" , metadataDoc .getDocumentElement ().getFirstChild ().getNodeName ());
347
+
348
+ assertTrue (Util .validateXML (metadataDoc , SchemaFactory .SAML_SCHEMA_METADATA_2_0 ));
349
+
350
+ assertThat (metadataStr , containsString ("<md:SPSSODescriptor" ));
351
+ assertThat (metadataStr , containsString ("entityID=\" http://localhost:8080/java-saml-jspsample/metadata.jsp\" " ));
352
+ assertThat (metadataStr , containsString ("AuthnRequestsSigned=\" false\" " ));
353
+ assertThat (metadataStr , containsString ("WantAssertionsSigned=\" false\" " ));
354
+ assertThat (metadataStr , not (containsString ("<md:KeyDescriptor use=\" signing\" >" )));
355
+ assertThat (metadataStr , containsString ("<md:AssertionConsumerService Binding=\" urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST\" Location=\" http://localhost:8080/java-saml-jspsample/acs.jsp\" index=\" 1\" />" ));
356
+ assertThat (metadataStr , containsString ("<md:SingleLogoutService Binding=\" urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect\" Location=\" http://localhost:8080/java-saml-jspsample/sls.jsp\" />" ));
357
+ assertThat (metadataStr , containsString ("<md:NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified</md:NameIDFormat>" ));
358
+ assertThat (metadataStr , containsString ("<md:AttributeConsumingService index=\" 0\" >" ));
359
+ assertThat (metadataStr , containsString ("<md:ServiceName xml:lang=\" en\" >Just e-mail</md:ServiceName>" ));
360
+ assertThat (metadataStr , containsString ("<md:RequestedAttribute Name=\" Email\" NameFormat=\" urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress\" FriendlyName=\" E-mail address\" isRequired=\" true\" >" ));
361
+ assertThat (
metadataStr ,
containsString (
"<saml:AttributeValue xmlns:saml=\" urn:oasis:names:tc:SAML:2.0:assertion\" >[email protected] </saml:AttributeValue>" ));
362
+ assertThat (
metadataStr ,
containsString (
"<saml:AttributeValue xmlns:saml=\" urn:oasis:names:tc:SAML:2.0:assertion\" >[email protected] </saml:AttributeValue>" ));
363
+ assertThat (metadataStr , containsString ("<md:AttributeConsumingService index=\" 1\" isDefault=\" true\" >" ));
364
+ assertThat (metadataStr , containsString ("<md:ServiceName xml:lang=\" it\" >Anagrafica</md:ServiceName>" ));
365
+ assertThat (metadataStr , containsString ("<md:ServiceDescription xml:lang=\" it\" >Servizio completo</md:ServiceDescription>" ));
366
+ assertThat (metadataStr , containsString ("<md:RequestedAttribute Name=\" FirstName\" />" ));
367
+ assertThat (metadataStr , containsString ("<md:RequestedAttribute Name=\" LastName\" isRequired=\" true\" />" ));
368
+ }
369
+
290
370
/**
291
371
* Tests the getSPMetadata method of the Saml2Settings
292
372
* * Case Unsigned metadata No SLS
0 commit comments