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