|
6 | 6 | */
|
7 | 7 | package org.elasticsearch.xpack.idp.saml.support;
|
8 | 8 |
|
| 9 | +import org.elasticsearch.action.ActionRequestValidationException; |
9 | 10 | import org.elasticsearch.common.Strings;
|
10 | 11 | import org.elasticsearch.common.io.stream.BytesStreamOutput;
|
11 | 12 | import org.elasticsearch.test.ESTestCase;
|
@@ -232,18 +233,51 @@ public void testEqualsAndHashCode() {
|
232 | 233 | assertThat(attributes1.equals("string"), equalTo(false));
|
233 | 234 | }
|
234 | 235 |
|
235 |
| - public void testIllegalArgumentHandling() { |
236 |
| - // Test null key handling |
237 |
| - expectThrows( |
238 |
| - IllegalArgumentException.class, |
239 |
| - () -> new SamlInitiateSingleSignOnAttributes.Attribute(null, Collections.singletonList("value")) |
240 |
| - ); |
241 |
| - |
242 |
| - // Test empty key handling |
243 |
| - expectThrows( |
244 |
| - IllegalArgumentException.class, |
245 |
| - () -> new SamlInitiateSingleSignOnAttributes.Attribute("", Collections.singletonList("value")) |
246 |
| - ); |
| 236 | + public void testValidate() { |
| 237 | + // Test with valid attributes - should pass validation |
| 238 | + final SamlInitiateSingleSignOnAttributes validAttributes = new SamlInitiateSingleSignOnAttributes(); |
| 239 | + List<SamlInitiateSingleSignOnAttributes.Attribute> attributeList = new ArrayList<>(); |
| 240 | + attributeList.add(new SamlInitiateSingleSignOnAttributes.Attribute("key1", Collections.singletonList("value1"))); |
| 241 | + attributeList.add(new SamlInitiateSingleSignOnAttributes.Attribute("key2", Arrays.asList("value2A", "value2B"))); |
| 242 | + validAttributes.setAttributes(attributeList); |
| 243 | + |
| 244 | + ActionRequestValidationException validationException = validAttributes.validate(); |
| 245 | + assertNull("Valid attributes should pass validation", validationException); |
| 246 | + |
| 247 | + // Test with null key - should fail validation |
| 248 | + final SamlInitiateSingleSignOnAttributes nullKeyAttributes = new SamlInitiateSingleSignOnAttributes(); |
| 249 | + attributeList = new ArrayList<>(); |
| 250 | + attributeList.add(new SamlInitiateSingleSignOnAttributes.Attribute(null, Collections.singletonList("value1"))); |
| 251 | + nullKeyAttributes.setAttributes(attributeList); |
| 252 | + |
| 253 | + validationException = nullKeyAttributes.validate(); |
| 254 | + assertNotNull("Null key should fail validation", validationException); |
| 255 | + assertThat(validationException.validationErrors().size(), equalTo(1)); |
| 256 | + assertThat(validationException.validationErrors().get(0), containsString("attribute key cannot be null or empty")); |
| 257 | + |
| 258 | + // Test with empty key - should fail validation |
| 259 | + final SamlInitiateSingleSignOnAttributes emptyKeyAttributes = new SamlInitiateSingleSignOnAttributes(); |
| 260 | + attributeList = new ArrayList<>(); |
| 261 | + attributeList.add(new SamlInitiateSingleSignOnAttributes.Attribute("", Collections.singletonList("value1"))); |
| 262 | + emptyKeyAttributes.setAttributes(attributeList); |
| 263 | + |
| 264 | + validationException = emptyKeyAttributes.validate(); |
| 265 | + assertNotNull("Empty key should fail validation", validationException); |
| 266 | + assertThat(validationException.validationErrors().size(), equalTo(1)); |
| 267 | + assertThat(validationException.validationErrors().get(0), containsString("attribute key cannot be null or empty")); |
| 268 | + |
| 269 | + // Test with duplicate keys - should fail validation |
| 270 | + final SamlInitiateSingleSignOnAttributes duplicateKeyAttributes = new SamlInitiateSingleSignOnAttributes(); |
| 271 | + attributeList = new ArrayList<>(); |
| 272 | + attributeList.add(new SamlInitiateSingleSignOnAttributes.Attribute("duplicate_key", Collections.singletonList("value1"))); |
| 273 | + attributeList.add(new SamlInitiateSingleSignOnAttributes.Attribute("unique_key", Collections.singletonList("value2"))); |
| 274 | + attributeList.add(new SamlInitiateSingleSignOnAttributes.Attribute("duplicate_key", Arrays.asList("value3", "value4"))); |
| 275 | + duplicateKeyAttributes.setAttributes(attributeList); |
| 276 | + |
| 277 | + validationException = duplicateKeyAttributes.validate(); |
| 278 | + assertNotNull("Duplicate keys should fail validation", validationException); |
| 279 | + assertThat(validationException.validationErrors().size(), equalTo(1)); |
| 280 | + assertThat(validationException.validationErrors().get(0), containsString("duplicate attribute key [duplicate_key] found")); |
247 | 281 | }
|
248 | 282 |
|
249 | 283 | private SamlInitiateSingleSignOnAttributes parseFromJson(String json) throws IOException {
|
|
0 commit comments