blob: 3b484c1f2fdfface9e573550307d7b7d84e9235d [file] [log] [blame]
/*
* Copyright 2004,2005 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.rahas;
import static org.apache.axis2.integration.TestConstants.TESTING_PATH;
import java.io.FileInputStream;
import java.io.InputStream;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMXMLBuilderFactory;
import org.apache.axiom.om.OMXMLParserWrapper;
import org.apache.axis2.Constants;
import org.apache.axis2.addressing.AddressingConstants;
import org.apache.axis2.client.Options;
import org.apache.axis2.client.ServiceClient;
import org.apache.axis2.context.ServiceContext;
import org.apache.axis2.testutils.ClientHelper;
import org.apache.axis2.testutils.JettyServer;
import org.apache.neethi.Policy;
import org.apache.neethi.PolicyEngine;
import org.apache.rampart.RampartMessageData;
import org.junit.Rule;
import org.junit.Test;
public abstract class TestClient {
@Rule
public final JettyServer server = new JettyServer(TESTING_PATH + getServiceRepo(), false);
@Rule
public final ClientHelper clientHelper = new ClientHelper(server, TESTING_PATH + "rahas_client_repo");
/**
*/
@Test
public void testRequest() throws Exception {
ServiceClient serviceClient = clientHelper.createServiceClient("SecureService");
Options options = serviceClient.getOptions();
options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
options.setAction(this.getRequestAction());
// options.setProperty(AddressingConstants.WS_ADDRESSING_VERSION, this.getWSANamespace());
options.setTimeOutInMilliSeconds(200 * 1000);
ServiceContext context = serviceClient.getServiceContext();
context.setProperty(RampartMessageData.KEY_RAMPART_POLICY, loadPolicy());
serviceClient.engageModule("addressing");
serviceClient.engageModule("rampart");
//Blocking invocation
OMElement result = serviceClient.sendReceive(getRequest());
this.validateRsponse(result);
}
protected String getWSANamespace() {
return AddressingConstants.Submission.WSA_NAMESPACE;
}
public abstract OMElement getRequest();
public abstract String getClientPolicyPath();
public abstract String getServiceRepo();
public abstract String getRequestAction() throws TrustException;
public abstract void validateRsponse(OMElement resp);
//
// /**
// * This test will use WS-SecPolicy
// */
// public void testWithStsClient() {
//
// // Get the repository location from the args
// String repo = Constants.TESTING_PATH + "rahas_client_repo";
//
// try {
// ConfigurationContext configContext = ConfigurationContextFactory.createConfigurationContextFromFileSystem(repo,
// null);
//
// STSClient client = new STSClient(configContext);
//
// client.setAction(this.getRequestAction());
//
// client.setRstTemplate(this.getRSTTemplate());
// client.setVersion(this.getTrstVersion());
//
// Token tok =
// client.requestSecurityToken(this.getServicePolicy(),
// "http://127.0.0.1:" + port + "/axis2/services/SecureService",
// this.getSTSPolicy(),
// "http://localhost:5555/axis2/services/SecureService");
//
// assertNotNull("Response token missing", tok);
//
// } catch (Exception e) {
// e.printStackTrace();
// fail(e.getMessage());
// }
//
// }
public abstract int getTrstVersion();
public abstract Policy getServicePolicy() throws Exception;
public abstract Policy getSTSPolicy() throws Exception;
public abstract OMElement getRSTTemplate() throws TrustException;
protected Policy getPolicy(String filePath) throws Exception {
OMXMLParserWrapper builder = OMXMLBuilderFactory.createOMBuilder(new FileInputStream(filePath));
OMElement elem = builder.getDocumentElement();
return PolicyEngine.getPolicy(elem);
}
private Policy loadPolicy() throws Exception {
String path = getClientPolicyPath();
InputStream poilicyStream = TestClient.class.getResourceAsStream(path);
return PolicyEngine.getPolicy(poilicyStream);
}
}