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 java.io.BufferedReader;
22 import java.io.ByteArrayInputStream;
23 import java.io.InputStreamReader;
24 import java.io.StringWriter;
25 import java.nio.charset.StandardCharsets;
26
27 import javax.xml.stream.XMLOutputFactory;
28 import javax.xml.stream.XMLStreamWriter;
29
30 import org.apache.neethi.AssertionBuilderFactory;
31 import org.apache.neethi.Policy;
32 import org.apache.neethi.PolicyBuilder;
33 import org.apache.wss4j.policy.builders.AlgorithmSuiteBuilder;
34 import org.apache.wss4j.policy.builders.AsymmetricBindingBuilder;
35 import org.apache.wss4j.policy.builders.BootstrapPolicyBuilder;
36 import org.apache.wss4j.policy.builders.ContentEncryptedElementsBuilder;
37 import org.apache.wss4j.policy.builders.EncryptedElementsBuilder;
38 import org.apache.wss4j.policy.builders.EncryptedPartsBuilder;
39 import org.apache.wss4j.policy.builders.EncryptionTokenBuilder;
40 import org.apache.wss4j.policy.builders.HttpsTokenBuilder;
41 import org.apache.wss4j.policy.builders.InitiatorEncryptionTokenBuilder;
42 import org.apache.wss4j.policy.builders.InitiatorSignatureTokenBuilder;
43 import org.apache.wss4j.policy.builders.InitiatorTokenBuilder;
44 import org.apache.wss4j.policy.builders.IssuedTokenBuilder;
45 import org.apache.wss4j.policy.builders.KerberosTokenBuilder;
46 import org.apache.wss4j.policy.builders.KeyValueTokenBuilder;
47 import org.apache.wss4j.policy.builders.LayoutBuilder;
48 import org.apache.wss4j.policy.builders.ProtectionTokenBuilder;
49 import org.apache.wss4j.policy.builders.RecipientEncryptionTokenBuilder;
50 import org.apache.wss4j.policy.builders.RecipientSignatureTokenBuilder;
51 import org.apache.wss4j.policy.builders.RecipientTokenBuilder;
52 import org.apache.wss4j.policy.builders.RelTokenBuilder;
53 import org.apache.wss4j.policy.builders.RequiredElementsBuilder;
54 import org.apache.wss4j.policy.builders.RequiredPartsBuilder;
55 import org.apache.wss4j.policy.builders.SamlTokenBuilder;
56 import org.apache.wss4j.policy.builders.SecureConversationTokenBuilder;
57 import org.apache.wss4j.policy.builders.SecurityContextTokenBuilder;
58 import org.apache.wss4j.policy.builders.SignatureTokenBuilder;
59 import org.apache.wss4j.policy.builders.SignedElementsBuilder;
60 import org.apache.wss4j.policy.builders.SignedPartsBuilder;
61 import org.apache.wss4j.policy.builders.SpnegoContextTokenBuilder;
62 import org.apache.wss4j.policy.builders.SupportingTokensBuilder;
63 import org.apache.wss4j.policy.builders.SymmetricBindingBuilder;
64 import org.apache.wss4j.policy.builders.TransportBindingBuilder;
65 import org.apache.wss4j.policy.builders.TransportTokenBuilder;
66 import org.apache.wss4j.policy.builders.Trust10Builder;
67 import org.apache.wss4j.policy.builders.Trust13Builder;
68 import org.apache.wss4j.policy.builders.UsernameTokenBuilder;
69 import org.apache.wss4j.policy.builders.WSS10Builder;
70 import org.apache.wss4j.policy.builders.WSS11Builder;
71 import org.apache.wss4j.policy.builders.X509TokenBuilder;
72 import org.hamcrest.MatcherAssert;
73 import org.xmlunit.matchers.CompareMatcher;
74
75 public abstract class AbstractTestBase {
76 protected XMLOutputFactory xmlOutputFactory = XMLOutputFactory.newInstance();
77
78 protected String serializePolicy(Policy policy) throws Exception {
79 StringWriter stringWriter = new StringWriter();
80 XMLStreamWriter xmlStreamWriter = xmlOutputFactory.createXMLStreamWriter(stringWriter);
81 policy.serialize(xmlStreamWriter);
82 xmlStreamWriter.close();
83 stringWriter.close();
84 return stringWriter.toString();
85 }
86
87 protected void assertXMLisEqual(String actual, String expected) throws Exception {
88 MatcherAssert.assertThat(actual, CompareMatcher.isIdenticalTo(expected).ignoreWhitespace());
89 }
90
91 protected String loadPolicyFile(String classpathResource) throws Exception {
92 try (InputStreamReader isReader = new InputStreamReader(this.getClass().getClassLoader().getResourceAsStream(classpathResource), StandardCharsets.UTF_8);
93 BufferedReader bufferedReader = new BufferedReader(isReader);
94 StringWriter writer = new StringWriter()) {
95 char[] buf = new char[1024];
96 int n;
97 while ((n = bufferedReader.read(buf)) != -1) {
98 writer.write(buf, 0, n);
99 }
100 writer.close();
101 bufferedReader.close();
102 return writer.toString();
103 }
104 }
105
106 protected Policy loadPolicy(String policy) throws Exception {
107 PolicyBuilder policyBuilder = new PolicyBuilder();
108
109 AssertionBuilderFactory assertionBuilderFactory = policyBuilder.getAssertionBuilderFactory();
110 assertionBuilderFactory.registerBuilder(new AlgorithmSuiteBuilder());
111 assertionBuilderFactory.registerBuilder(new AsymmetricBindingBuilder());
112 assertionBuilderFactory.registerBuilder(new ContentEncryptedElementsBuilder());
113 assertionBuilderFactory.registerBuilder(new EncryptedElementsBuilder());
114 assertionBuilderFactory.registerBuilder(new EncryptedPartsBuilder());
115 assertionBuilderFactory.registerBuilder(new EncryptionTokenBuilder());
116 assertionBuilderFactory.registerBuilder(new HttpsTokenBuilder());
117 assertionBuilderFactory.registerBuilder(new InitiatorEncryptionTokenBuilder());
118 assertionBuilderFactory.registerBuilder(new InitiatorSignatureTokenBuilder());
119 assertionBuilderFactory.registerBuilder(new InitiatorTokenBuilder());
120 assertionBuilderFactory.registerBuilder(new IssuedTokenBuilder());
121 assertionBuilderFactory.registerBuilder(new KerberosTokenBuilder());
122 assertionBuilderFactory.registerBuilder(new KeyValueTokenBuilder());
123 assertionBuilderFactory.registerBuilder(new LayoutBuilder());
124 assertionBuilderFactory.registerBuilder(new ProtectionTokenBuilder());
125 assertionBuilderFactory.registerBuilder(new RecipientEncryptionTokenBuilder());
126 assertionBuilderFactory.registerBuilder(new RecipientSignatureTokenBuilder());
127 assertionBuilderFactory.registerBuilder(new RecipientTokenBuilder());
128 assertionBuilderFactory.registerBuilder(new RelTokenBuilder());
129 assertionBuilderFactory.registerBuilder(new RequiredElementsBuilder());
130 assertionBuilderFactory.registerBuilder(new RequiredPartsBuilder());
131 assertionBuilderFactory.registerBuilder(new SamlTokenBuilder());
132 assertionBuilderFactory.registerBuilder(new SecureConversationTokenBuilder());
133 assertionBuilderFactory.registerBuilder(new BootstrapPolicyBuilder());
134 assertionBuilderFactory.registerBuilder(new SecurityContextTokenBuilder());
135 assertionBuilderFactory.registerBuilder(new SignatureTokenBuilder());
136 assertionBuilderFactory.registerBuilder(new SignedElementsBuilder());
137 assertionBuilderFactory.registerBuilder(new SignedPartsBuilder());
138 assertionBuilderFactory.registerBuilder(new SpnegoContextTokenBuilder());
139 assertionBuilderFactory.registerBuilder(new SupportingTokensBuilder());
140 assertionBuilderFactory.registerBuilder(new SymmetricBindingBuilder());
141 assertionBuilderFactory.registerBuilder(new TransportBindingBuilder());
142 assertionBuilderFactory.registerBuilder(new TransportTokenBuilder());
143 assertionBuilderFactory.registerBuilder(new Trust10Builder());
144 assertionBuilderFactory.registerBuilder(new Trust13Builder());
145 assertionBuilderFactory.registerBuilder(new UsernameTokenBuilder());
146 assertionBuilderFactory.registerBuilder(new WSS10Builder());
147 assertionBuilderFactory.registerBuilder(new WSS11Builder());
148 assertionBuilderFactory.registerBuilder(new X509TokenBuilder());
149
150 return loadPolicy(policy, policyBuilder);
151 }
152
153 protected Policy loadPolicy(String policy, PolicyBuilder policyBuilder) throws Exception {
154 return policyBuilder.getPolicy(new ByteArrayInputStream(policy.getBytes(StandardCharsets.UTF_8)));
155 }
156 }