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.SymmetricBinding;
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.assertTrue;
34
35 public class SymmetricBindingTest extends AbstractTestBase {
36
37 @Test
38 public void testSymmetricBinding() throws Exception {
39 String fileName = "SymmetricBinding.xml";
40 String policyFile = loadPolicyFile("policy/model/sp12/" + fileName);
41 String serializedPolicyReferenceFile = loadPolicyFile("policy/model/sp12/serialized/" + fileName);
42 String normalizedPolicyReferenceFile = loadPolicyFile("policy/model/sp12/normalized/" + fileName);
43 Policy policy = loadPolicy(policyFile);
44 String serializedPolicy = serializePolicy(policy);
45 assertXMLisEqual(serializedPolicy, serializedPolicyReferenceFile);
46
47 Iterator<List<Assertion>> alternativeIterator = policy.getAlternatives();
48 int count = 0;
49 while (alternativeIterator.hasNext()) {
50 List<Assertion> alternative = alternativeIterator.next();
51 assertEquals(1, alternative.size());
52 assertTrue(alternative.get(0) instanceof SymmetricBinding);
53 SymmetricBinding symmetricBinding = (SymmetricBinding) alternative.get(0);
54 assertFalse(symmetricBinding.isNormalized());
55 assertTrue(symmetricBinding.isIgnorable());
56 assertTrue(symmetricBinding.isOptional());
57 assertEquals(Constants.TYPE_ASSERTION, symmetricBinding.getType());
58 assertEquals(SP12Constants.SYMMETRIC_BINDING, symmetricBinding.getName());
59 assertNotNull(symmetricBinding.getEncryptionToken());
60 assertNotNull(symmetricBinding.getSignatureToken());
61 assertNotNull(symmetricBinding.getAlgorithmSuite());
62 assertNotNull(symmetricBinding.getLayout());
63 assertEquals(AbstractSymmetricAsymmetricBinding.ProtectionOrder.EncryptBeforeSigning, symmetricBinding.getProtectionOrder());
64 assertTrue(symmetricBinding.isEncryptSignature());
65 assertTrue(symmetricBinding.isIncludeTimestamp());
66 assertTrue(symmetricBinding.isOnlySignEntireHeadersAndBody());
67 assertTrue(symmetricBinding.isProtectTokens());
68 count++;
69 }
70 assertEquals(1, count);
71
72 policy = policy.normalize(true);
73 serializedPolicy = serializePolicy(policy);
74 assertXMLisEqual(serializedPolicy, normalizedPolicyReferenceFile);
75
76 alternativeIterator = policy.getAlternatives();
77 List<Assertion> alternative = alternativeIterator.next();
78 assertEquals(0, alternative.size());
79
80 List<PolicyComponent> policyComponents = policy.getPolicyComponents();
81 assertEquals(1, policyComponents.size());
82 PolicyOperator policyOperator = (PolicyOperator) policyComponents.get(0);
83 policyComponents = policyOperator.getPolicyComponents();
84 assertEquals(2, policyComponents.size());
85 All all = (All) policyComponents.get(0);
86 List<PolicyComponent> policyComponentsAll = all.getAssertions();
87 assertEquals(0, policyComponentsAll.size());
88
89 all = (All) policyComponents.get(1);
90 policyComponentsAll = all.getAssertions();
91 assertEquals(1, policyComponentsAll.size());
92
93 Iterator<PolicyComponent> policyComponentIterator = policyComponentsAll.iterator();
94 SymmetricBinding symmetricBinding = (SymmetricBinding) policyComponentIterator.next();
95 assertTrue(symmetricBinding.isNormalized());
96 assertTrue(symmetricBinding.isIgnorable());
97 assertFalse(symmetricBinding.isOptional());
98 assertEquals(Constants.TYPE_ASSERTION, symmetricBinding.getType());
99 assertEquals(SP12Constants.SYMMETRIC_BINDING, symmetricBinding.getName());
100 assertNotNull(symmetricBinding.getEncryptionToken());
101 assertNotNull(symmetricBinding.getSignatureToken());
102 assertNotNull(symmetricBinding.getAlgorithmSuite());
103 assertNotNull(symmetricBinding.getLayout());
104 assertEquals(AbstractSymmetricAsymmetricBinding.ProtectionOrder.EncryptBeforeSigning, symmetricBinding.getProtectionOrder());
105 assertTrue(symmetricBinding.isEncryptSignature());
106 assertTrue(symmetricBinding.isIncludeTimestamp());
107 assertTrue(symmetricBinding.isOnlySignEntireHeadersAndBody());
108 assertTrue(symmetricBinding.isProtectTokens());
109 }
110 }