Skip to content

Commit 982fe3c

Browse files
committed
claim type of message added
1 parent f3aab6f commit 982fe3c

3 files changed

Lines changed: 78 additions & 1 deletion

File tree

src/main/java/org/oidc/msg/ParameterVerification.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import org.oidc.msg.validator.ListClaimValidator;
88
import org.oidc.msg.validator.MapClaimValidator;
99
import org.oidc.msg.validator.StringClaimValidator;
10+
import org.oidc.msg.validator.MessageClaimValidator;
1011

1112
/** Enum for expressing parameter verification definitions. */
1213
public enum ParameterVerification {
@@ -25,7 +26,11 @@ public enum ParameterVerification {
2526
REQUIRED_LIST_OF_STRINGS(new ParameterVerificationDefinition(new ListClaimValidator(), true)),
2627
OPTIONAL_LIST_OF_STRINGS(new ParameterVerificationDefinition(new ListClaimValidator(),false)),
2728
REQUIRED_LIST_OF_SP_SEP_STRINGS(new ParameterVerificationDefinition(new ArrayClaimValidator(), true)),
28-
OPTIONAL_LIST_OF_SP_SEP_STRINGS(new ParameterVerificationDefinition(new ArrayClaimValidator(), false));
29+
OPTIONAL_LIST_OF_SP_SEP_STRINGS(new ParameterVerificationDefinition(
30+
new ArrayClaimValidator(), false)),
31+
SINGLE_REQUIRED_MESSAGE(new ParameterVerificationDefinition(new MessageClaimValidator(), true)),
32+
SINGLE_OPTIONAL_MESSAGE(new ParameterVerificationDefinition(new MessageClaimValidator(), false));
33+
2934

3035
/** Verification definition. */
3136
private ParameterVerificationDefinition parameterVerificationDefinition;
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package org.oidc.msg.validator;
2+
3+
import org.oidc.msg.InvalidClaimException;
4+
import org.oidc.msg.Message;
5+
6+
/** General validator for claims type of message. */
7+
public class MessageClaimValidator implements ClaimValidator {
8+
9+
@Override
10+
public Object validate(Object value) throws InvalidClaimException {
11+
if (!(value instanceof Message)) {
12+
throw new InvalidClaimException(
13+
String.format("Parameter '%s' is not of expected type", value));
14+
}
15+
// TODO: the reason for failing the verification is not carried to calling layers
16+
if (!((Message) value).verify()) {
17+
throw new InvalidClaimException(String.format("Parameter '%s' verification failed", value));
18+
}
19+
return value;
20+
}
21+
}

src/test/java/org/oidc/msg/AbstractMessageTest.java

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -390,6 +390,57 @@ public void failTestDateType() throws InvalidClaimException {
390390
MockMessage mockMessage = new MockMessage(claims, parVerDef);
391391
mockMessage.verify();
392392
}
393+
394+
@Test
395+
public void successTestMessageType() throws InvalidClaimException {
396+
HashMap<String, Object> innerClaims = new HashMap<>();
397+
innerClaims.put("parameter1", "value");
398+
Map<String, ParameterVerificationDefinition> innerParVerDef =
399+
new HashMap<String, ParameterVerificationDefinition>();
400+
innerParVerDef.put("parameter1", ParameterVerification.SINGLE_OPTIONAL_STRING.getValue());
401+
MockMessage innerMockMessage = new MockMessage(innerClaims, innerParVerDef);
402+
403+
HashMap<String, Object> claims = new HashMap<>();
404+
claims.put("parameter1", innerMockMessage);
405+
Map<String, ParameterVerificationDefinition> parVerDef =
406+
new HashMap<String, ParameterVerificationDefinition>();
407+
parVerDef.put("parameter1", ParameterVerification.SINGLE_OPTIONAL_MESSAGE.getValue());
408+
MockMessage mockMessage = new MockMessage(claims, parVerDef);
409+
mockMessage.verify();
410+
Assert.assertEquals(((Message)(mockMessage.getClaims().
411+
get("parameter1"))).getClaims().get("parameter1") ,"value");
412+
}
413+
414+
@Test(expected = InvalidClaimException.class)
415+
public void failTestMessageTypeInnerFails() throws InvalidClaimException {
416+
HashMap<String, Object> innerClaims = new HashMap<>();
417+
innerClaims.put("parameter1", 5);
418+
Map<String, ParameterVerificationDefinition> innerParVerDef =
419+
new HashMap<String, ParameterVerificationDefinition>();
420+
innerParVerDef.put("parameter1", ParameterVerification.SINGLE_OPTIONAL_STRING.getValue());
421+
MockMessage innerMockMessage = new MockMessage(innerClaims, innerParVerDef);
422+
423+
HashMap<String, Object> claims = new HashMap<>();
424+
claims.put("parameter1", innerMockMessage);
425+
Map<String, ParameterVerificationDefinition> parVerDef =
426+
new HashMap<String, ParameterVerificationDefinition>();
427+
parVerDef.put("parameter1", ParameterVerification.SINGLE_OPTIONAL_MESSAGE.getValue());
428+
MockMessage mockMessage = new MockMessage(claims, parVerDef);
429+
mockMessage.verify();
430+
Assert.assertEquals(((Message)(mockMessage.getClaims().
431+
get("parameter1"))).getClaims().get("parameter1") ,"value");
432+
}
433+
434+
@Test(expected = InvalidClaimException.class)
435+
public void failTestMessageType() throws InvalidClaimException {
436+
HashMap<String, Object> claims = new HashMap<>();
437+
claims.put("parameter1", "value");
438+
Map<String, ParameterVerificationDefinition> parVerDef =
439+
new HashMap<String, ParameterVerificationDefinition>();
440+
parVerDef.put("parameter1", ParameterVerification.SINGLE_OPTIONAL_MESSAGE.getValue());
441+
MockMessage mockMessage = new MockMessage(claims, parVerDef);
442+
mockMessage.verify();
443+
}
393444

394445
class MockMessage extends AbstractMessage {
395446

0 commit comments

Comments
 (0)