1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.wss4j.policy.tests;
20
21 import org.apache.neethi.*;
22 import org.apache.wss4j.policy.SP12Constants;
23 import org.apache.wss4j.policy.model.AbstractSymmetricAsymmetricBinding;
24 import org.apache.wss4j.policy.model.AsymmetricBinding;
25 import org.junit.jupiter.api.Test;
26
27 import java.util.Iterator;
28 import java.util.List;
29
30 import static org.junit.jupiter.api.Assertions.assertEquals;
31 import static org.junit.jupiter.api.Assertions.assertFalse;
32 import static org.junit.jupiter.api.Assertions.assertNotNull;
33 import static org.junit.jupiter.api.Assertions.assertNull;
34 import static org.junit.jupiter.api.Assertions.assertTrue;
35
36 public class AsymmetricBindingTest extends AbstractTestBase {
37
38 @Test
39 public void testAsymmetricBinding() throws Exception {
40 String fileName = "AsymmetricBinding.xml";
41 String policyFile = loadPolicyFile("policy/model/sp12/" + fileName);
42 String serializedPolicyReferenceFile = loadPolicyFile("policy/model/sp12/serialized/" + fileName);
43 String normalizedPolicyReferenceFile = loadPolicyFile("policy/model/sp12/normalized/" + fileName);
44 Policy policy = loadPolicy(policyFile);
45 String serializedPolicy = serializePolicy(policy);
46 assertXMLisEqual(serializedPolicy, serializedPolicyReferenceFile);
47
48 Iterator<List<Assertion>> alternativeIterator = policy.getAlternatives();
49 int count = 0;
50 while (alternativeIterator.hasNext()) {
51 List<Assertion> alternative = alternativeIterator.next();
52 assertEquals(1, alternative.size());
53 assertTrue(alternative.get(0) instanceof AsymmetricBinding);
54 AsymmetricBinding asymmetricBinding = (AsymmetricBinding) alternative.get(0);
55 assertFalse(asymmetricBinding.isNormalized());
56 assertTrue(asymmetricBinding.isIgnorable());
57 assertTrue(asymmetricBinding.isOptional());
58 assertEquals(Constants.TYPE_ASSERTION, asymmetricBinding.getType());
59 assertEquals(SP12Constants.ASYMMETRIC_BINDING, asymmetricBinding.getName());
60 assertNotNull(asymmetricBinding.getInitiatorEncryptionToken());
61 assertNotNull(asymmetricBinding.getInitiatorSignatureToken());
62 assertNull(asymmetricBinding.getInitiatorToken());
63 assertNotNull(asymmetricBinding.getRecipientEncryptionToken());
64 assertNotNull(asymmetricBinding.getRecipientSignatureToken());
65 assertNull(asymmetricBinding.getRecipientToken());
66 assertNotNull(asymmetricBinding.getAlgorithmSuite());
67 assertNotNull(asymmetricBinding.getLayout());
68 assertEquals(AbstractSymmetricAsymmetricBinding.ProtectionOrder.EncryptBeforeSigning, asymmetricBinding.getProtectionOrder());
69 assertTrue(asymmetricBinding.isEncryptSignature());
70 assertTrue(asymmetricBinding.isIncludeTimestamp());
71 assertTrue(asymmetricBinding.isOnlySignEntireHeadersAndBody());
72 assertTrue(asymmetricBinding.isProtectTokens());
73 count++;
74 }
75 assertEquals(1, count);
76
77 policy = policy.normalize(true);
78 serializedPolicy = serializePolicy(policy);
79 assertXMLisEqual(serializedPolicy, normalizedPolicyReferenceFile);
80
81 alternativeIterator = policy.getAlternatives();
82 List<Assertion> alternative = alternativeIterator.next();
83 assertEquals(0, alternative.size());
84
85 List<PolicyComponent> policyComponents = policy.getPolicyComponents();
86 assertEquals(1, policyComponents.size());
87 PolicyOperator policyOperator = (PolicyOperator) policyComponents.get(0);
88 policyComponents = policyOperator.getPolicyComponents();
89 assertEquals(2, policyComponents.size());
90 All all = (All) policyComponents.get(0);
91 List<PolicyComponent> policyComponentsAll = all.getAssertions();
92 assertEquals(0, policyComponentsAll.size());
93
94 all = (All) policyComponents.get(1);
95 policyComponentsAll = all.getAssertions();
96 assertEquals(1, policyComponentsAll.size());
97
98 Iterator<PolicyComponent> policyComponentIterator = policyComponentsAll.iterator();
99 AsymmetricBinding asymmetricBinding = (AsymmetricBinding) policyComponentIterator.next();
100 assertTrue(asymmetricBinding.isNormalized());
101 assertTrue(asymmetricBinding.isIgnorable());
102 assertFalse(asymmetricBinding.isOptional());
103 assertEquals(Constants.TYPE_ASSERTION, asymmetricBinding.getType());
104 assertEquals(SP12Constants.ASYMMETRIC_BINDING, asymmetricBinding.getName());
105 assertNotNull(asymmetricBinding.getInitiatorEncryptionToken());
106 assertNotNull(asymmetricBinding.getInitiatorSignatureToken());
107 assertNull(asymmetricBinding.getInitiatorToken());
108 assertNotNull(asymmetricBinding.getRecipientEncryptionToken());
109 assertNotNull(asymmetricBinding.getRecipientSignatureToken());
110 assertNull(asymmetricBinding.getRecipientToken());
111 assertNotNull(asymmetricBinding.getAlgorithmSuite());
112 assertNotNull(asymmetricBinding.getLayout());
113 assertEquals(AbstractSymmetricAsymmetricBinding.ProtectionOrder.EncryptBeforeSigning, asymmetricBinding.getProtectionOrder());
114 assertTrue(asymmetricBinding.isEncryptSignature());
115 assertTrue(asymmetricBinding.isIncludeTimestamp());
116 assertTrue(asymmetricBinding.isOnlySignEntireHeadersAndBody());
117 assertTrue(asymmetricBinding.isProtectTokens());
118 }
119 }