package com.paypal.core.soap; import java.io.ByteArrayInputStream; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import junit.framework.Assert; import org.testng.annotations.Test; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NodeList; import com.paypal.core.credential.SignatureCredential; import com.paypal.core.credential.SubjectAuthorization; import com.paypal.core.credential.TokenAuthorization; public class SignatureSOAPHeaderAuthStrategyTest { @Test public void generateHeaderStrategyForTokenTest() throws Exception{ SignatureCredential signatureCredential = new SignatureCredential("testusername","testpassword","testsignature"); SignatureSOAPHeaderAuthStrategy signatureSOAPHeaderAuthStrategy = new SignatureSOAPHeaderAuthStrategy(); TokenAuthorization tokenAuthorization = new TokenAuthorization("accessToken","tokenSecret"); signatureSOAPHeaderAuthStrategy.setThirdPartyAuthorization(tokenAuthorization); signatureCredential.setThirdPartyAuthorization(tokenAuthorization); String payload = signatureSOAPHeaderAuthStrategy.generateHeaderStrategy(signatureCredential); Assert.assertEquals("<ns:RequesterCredentials/>", payload); } @Test public void generateHeaderStrategyForSubjectTest() throws Exception{ SignatureCredential signatureCredential = new SignatureCredential("testusername","testpassword","testsignature"); SignatureSOAPHeaderAuthStrategy signatureSOAPHeaderAuthStrategy = new SignatureSOAPHeaderAuthStrategy(); SubjectAuthorization subjectAuthorization = new SubjectAuthorization("testsubject"); signatureSOAPHeaderAuthStrategy.setThirdPartyAuthorization(subjectAuthorization); signatureCredential.setThirdPartyAuthorization(subjectAuthorization); String payload = signatureSOAPHeaderAuthStrategy.generateHeaderStrategy(signatureCredential); Document dom = loadXMLFromString(payload); Element docEle = dom.getDocumentElement(); NodeList credential = docEle.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"); NodeList subject = ((Element)credential.item(0)).getElementsByTagName("ebl:Subject"); String username= user.item(0).getTextContent(); String password = psw.item(0).getTextContent(); String signature = sign.item(0).getTextContent(); String sub = subject.item(0).getTextContent(); Assert.assertEquals("testusername", username); Assert.assertEquals("testpassword", password); Assert.assertEquals("testsignature", signature); Assert.assertEquals("testsubject",sub); } @Test public void generateHeaderStrategyForNonThirdPartyTest() throws Exception{ SignatureCredential signatureCredential = new SignatureCredential("testusername","testpassword","testsignature"); SignatureSOAPHeaderAuthStrategy signatureSOAPHeaderAuthStrategy = new SignatureSOAPHeaderAuthStrategy(); String payload = signatureSOAPHeaderAuthStrategy.generateHeaderStrategy(signatureCredential); Document dom = loadXMLFromString(payload); Element docEle = dom.getDocumentElement(); NodeList credential = docEle.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"); NodeList subject = ((Element)credential.item(0)).getElementsByTagName("ebl:Subject"); String username= user.item(0).getTextContent(); String password = psw.item(0).getTextContent(); String signature = sign.item(0).getTextContent(); Object sub = subject.item(0); Assert.assertEquals("testusername", username); Assert.assertEquals("testpassword", password); Assert.assertEquals("testsignature", signature); Assert.assertNull(sub); } @Test public void setGetThirdPartyAuthorization(){ SignatureSOAPHeaderAuthStrategy signatureSOAPHeaderAuthStrategy = new SignatureSOAPHeaderAuthStrategy(); SubjectAuthorization subjectAuthorization = new SubjectAuthorization("testsubject"); signatureSOAPHeaderAuthStrategy.setThirdPartyAuthorization(subjectAuthorization); Assert.assertNotNull(signatureSOAPHeaderAuthStrategy.getThirdPartyAuthorization()); } private Document loadXMLFromString(String xml) throws Exception { ByteArrayInputStream stream = new ByteArrayInputStream(xml.getBytes()); DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder(); return builder.parse(stream); } }