package com.paypal.core.soap;
import java.io.ByteArrayInputStream;
import java.util.Map;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.testng.Assert;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import com.paypal.core.ConfigManager;
import com.paypal.core.Constants;
import com.paypal.core.CredentialManager;
import com.paypal.core.ConfigurationUtil;
import com.paypal.core.DefaultSOAPAPICallHandler;
import com.paypal.core.credential.ICredential;
public class MerchantAPICallPreHandlerTest {
@BeforeClass
public void setUp() {
}
@Test()
public void getHeaderMapSignatureTest() throws Exception {
Map<String, String> initMap = ConfigurationUtil
.getSignatureConfiguration();
CredentialManager credentialmgr = new CredentialManager(initMap);
ICredential signatureCredential = credentialmgr
.getCredentialObject("jb-us-seller_api1.paypal.com");
DefaultSOAPAPICallHandler defaultSoaphandler = new DefaultSOAPAPICallHandler(
"<Request>test</Request>", null, null, initMap);
MerchantAPICallPreHandler soapHandler = new MerchantAPICallPreHandler(
defaultSoaphandler, signatureCredential, "sdkName", "1.0.0",
"portName", initMap);
Map<String, String> headers = soapHandler.getHeaderMap();
Assert.assertNotNull(headers);
assert (headers.size() > 0);
Assert.assertEquals("jb-us-seller_api1.paypal.com",
headers.get(Constants.PAYPAL_SECURITY_USERID_HEADER));
Assert.assertEquals("WX4WTU3S8MY44S7F",
headers.get(Constants.PAYPAL_SECURITY_PASSWORD_HEADER));
Assert.assertEquals(
"AFcWxV21C7fd0v3bYYYRCpSSRl31A7yDhhsPUU2XhtMoZXsWHFxu-RWy",
headers.get(Constants.PAYPAL_SECURITY_SIGNATURE_HEADER));
Assert.assertEquals(Constants.PAYLOAD_FORMAT_SOAP,
headers.get(Constants.PAYPAL_REQUEST_DATA_FORMAT_HEADER));
Assert.assertEquals(Constants.PAYLOAD_FORMAT_SOAP,
headers.get(Constants.PAYPAL_RESPONSE_DATA_FORMAT_HEADER));
}
@Test()
public void getHeaderMapCertificateTest() throws Exception {
Map<String, String> initMap = ConfigurationUtil
.getCertificateConfiguration();
CredentialManager credentialmgr = new CredentialManager(initMap);
DefaultSOAPAPICallHandler defaultSoaphandler = new DefaultSOAPAPICallHandler(
"<Request>test</Request>", null, null, initMap);
ICredential certificateCredential = credentialmgr
.getCredentialObject("certuser_biz_api1.paypal.com");
MerchantAPICallPreHandler soapHandler = new MerchantAPICallPreHandler(
defaultSoaphandler, certificateCredential, "sdkName", "1.0.0",
"portName", initMap);
Map<String, String> headers = soapHandler.getHeaderMap();
Assert.assertNotNull(headers);
assert (headers.size() > 0);
Assert.assertEquals("certuser_biz_api1.paypal.com",
headers.get(Constants.PAYPAL_SECURITY_USERID_HEADER));
Assert.assertEquals("D6JNKKULHN3G5B8A",
headers.get(Constants.PAYPAL_SECURITY_PASSWORD_HEADER));
Assert.assertEquals(Constants.PAYLOAD_FORMAT_SOAP,
headers.get(Constants.PAYPAL_REQUEST_DATA_FORMAT_HEADER));
Assert.assertEquals(Constants.PAYLOAD_FORMAT_SOAP,
headers.get(Constants.PAYPAL_RESPONSE_DATA_FORMAT_HEADER));
Assert.assertEquals(
soapHandler.getSdkName() + "-" + soapHandler.getSdkVersion(),
headers.get(Constants.PAYPAL_REQUEST_SOURCE_HEADER));
}
@Test()
public void getPayLoadForSignature() throws Exception {
Map<String, String> initMap = ConfigurationUtil
.getSignatureConfiguration();
CredentialManager credentialmgr = new CredentialManager(initMap);
ICredential signatureCredential = credentialmgr
.getCredentialObject("jb-us-seller_api1.paypal.com");
DefaultSOAPAPICallHandler defaultSoaphandler = new DefaultSOAPAPICallHandler(
"<Request>test</Request>", null, null, initMap);
MerchantAPICallPreHandler soapHandler = new MerchantAPICallPreHandler(
defaultSoaphandler, signatureCredential, "sdkName", "1.0.0",
"portName", initMap);
String payload = soapHandler.getPayLoad();
Document dom = loadXMLFromString(payload);
Element docEle = dom.getDocumentElement();
NodeList header = docEle.getElementsByTagName("soapenv:Header");
NodeList requestCredential = ((Element) header.item(0))
.getElementsByTagName("ns:RequesterCredentials");
NodeList credential = ((Element) requestCredential.item(0))
.getElementsByTagName("ebl:Credentials");
NodeList user = ((Element) credential.item(0))
.getElementsByTagName("ebl:Username");
NodeList psw = ((Element) credential.item(0))
.getElementsByTagName("ebl:Password");
NodeList sign = ((Element) credential.item(0))
.getElementsByTagName("ebl:Signature");
String username = user.item(0).getTextContent();
String password = psw.item(0).getTextContent();
String signature = sign.item(0).getTextContent();
Assert.assertEquals("jb-us-seller_api1.paypal.com", username);
Assert.assertEquals("WX4WTU3S8MY44S7F", password);
Assert.assertEquals(
"AFcWxV21C7fd0v3bYYYRCpSSRl31A7yDhhsPUU2XhtMoZXsWHFxu-RWy",
signature);
NodeList requestBody = docEle.getElementsByTagName("Request");
Node bodyContent = requestBody.item(0);
String bodyText = bodyContent.getTextContent();
Assert.assertEquals("test", bodyText);
}
@Test()
public void getPayLoadForCertificate(ConfigManager conf) throws Exception {
Map<String, String> initMap = ConfigurationUtil
.getCertificateConfiguration();
CredentialManager credentialmgr = new CredentialManager(initMap);
DefaultSOAPAPICallHandler defaultSoaphandler = new DefaultSOAPAPICallHandler(
"<Request>test</Request>", null, null, initMap);
ICredential certificateCredential = credentialmgr
.getCredentialObject("certuser_biz_api1.paypal.com");
MerchantAPICallPreHandler soapHandler = new MerchantAPICallPreHandler(
defaultSoaphandler, certificateCredential, "sdkName", "1.0.0",
"portName", initMap);
String payload = soapHandler.getPayLoad();
Document dom = loadXMLFromString(payload);
Element docEle = dom.getDocumentElement();
NodeList header = docEle.getElementsByTagName("soapenv:Header");
NodeList requestCredential = ((Element) header.item(0))
.getElementsByTagName("ns:RequesterCredentials");
NodeList credential = ((Element) requestCredential.item(0))
.getElementsByTagName("ebl:Credentials");
NodeList user = ((Element) credential.item(0))
.getElementsByTagName("ebl:Username");
NodeList psw = ((Element) credential.item(0))
.getElementsByTagName("ebl:Password");
String username = user.item(0).getTextContent();
String password = psw.item(0).getTextContent();
Assert.assertEquals("certuser_biz_api1.paypal.com", username);
Assert.assertEquals("D6JNKKULHN3G5B8A", password);
NodeList requestBody = docEle.getElementsByTagName("Request");
Node bodyContent = requestBody.item(0);
String bodyText = bodyContent.getTextContent();
Assert.assertEquals("test", bodyText);
}
@Test()
public void setGetSDKNameTest() throws Exception {
Map<String, String> initMap = ConfigurationUtil
.getCertificateConfiguration();
CredentialManager credentialmgr = new CredentialManager(initMap);
DefaultSOAPAPICallHandler defaultSoaphandler = new DefaultSOAPAPICallHandler(
"<Request>test</Request>", null, null, initMap);
ICredential certificateCredential = credentialmgr
.getCredentialObject("certuser_biz_api1.paypal.com");
MerchantAPICallPreHandler soapHandler = new MerchantAPICallPreHandler(
defaultSoaphandler, certificateCredential, "testsdk", "1.0.0",
"testsdkPortName", null);
Assert.assertEquals("testsdk", soapHandler.getSdkName());
}
@Test()
public void setGetSDKVersionTest(ConfigManager conf) throws Exception {
Map<String, String> initMap = ConfigurationUtil
.getCertificateConfiguration();
CredentialManager credentialmgr = new CredentialManager(initMap);
DefaultSOAPAPICallHandler defaultSoaphandler = new DefaultSOAPAPICallHandler(
"<Request>test</Request>", null, null, initMap);
ICredential certificateCredential = credentialmgr
.getCredentialObject("certuser_biz_api1.paypal.com");
MerchantAPICallPreHandler soapHandler = new MerchantAPICallPreHandler(
defaultSoaphandler, certificateCredential, "testsdk", "1.0.0",
"testsdkPortName", null);
Assert.assertEquals("1.0.0", soapHandler.getSdkVersion());
}
@Test()
public void getEndPointTest() throws Exception {
Map<String, String> initMap = ConfigurationUtil
.getCertificateConfiguration();
CredentialManager credentialmgr = new CredentialManager(initMap);
DefaultSOAPAPICallHandler defaultSoaphandler = new DefaultSOAPAPICallHandler(
"<Request>test</Request>", null, null, initMap);
ICredential certificateCredential = credentialmgr
.getCredentialObject("certuser_biz_api1.paypal.com");
MerchantAPICallPreHandler soapHandler = new MerchantAPICallPreHandler(
defaultSoaphandler, certificateCredential, "testsdk", "1.0.0",
"testsdkPortName", initMap);
String endpoint = soapHandler.getEndPoint();
Assert.assertEquals("https://api.sandbox.paypal.com/2.0", endpoint);
}
@Test(expectedExceptions = IllegalArgumentException.class)
public void MerchantAPICallPreHandlerConstructorTest() {
Map<String, String> initMap = ConfigurationUtil
.getCertificateConfiguration();
DefaultSOAPAPICallHandler defaultSoaphandler = new DefaultSOAPAPICallHandler(
"<Request>test</Request>", null, null, initMap);
new MerchantAPICallPreHandler(defaultSoaphandler, null);
}
private Document loadXMLFromString(String xml) throws Exception {
ByteArrayInputStream stream = new ByteArrayInputStream(xml.getBytes());
DocumentBuilder builder = DocumentBuilderFactory.newInstance()
.newDocumentBuilder();
return builder.parse(stream);
}
@AfterClass
public void tearDown() {
}
}