package ru.codeinside.gws.core.sproto;
import org.junit.Assert;
import org.junit.Test;
import org.w3c.dom.Node;
import ru.codeinside.gws.api.CryptoProvider;
import ru.codeinside.gws.api.ReceiptContext;
import ru.codeinside.gws.api.RequestContext;
import ru.codeinside.gws.api.Revision;
import ru.codeinside.gws.api.Server;
import ru.codeinside.gws.api.ServerRequest;
import ru.codeinside.gws.api.ServerResponse;
import ru.codeinside.gws.api.ServiceDefinition;
import ru.codeinside.gws.wsdl.ServiceDefinitionParser;
import javax.xml.namespace.QName;
import javax.xml.soap.MessageFactory;
import javax.xml.soap.SOAPException;
import javax.xml.soap.SOAPMessage;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import static org.mockito.Mockito.mock;
public class WsdlPartsTest extends Assert {
static class SocialSupport implements Server {
@Override
public Revision getRevision() {
return Revision.rev120315;
}
@Override
public URL getWsdlUrl() {
return getClass().getClassLoader().getResource("social-support-1021/toc.wsdl");
}
@Override
public ServerResponse processRequest(RequestContext requestContext) {
return new ServerResponse();
}
@Override
public ServerResponse processStatus(String statusMessage, ReceiptContext exchangeContext) {
return new ServerResponse();
}
@Override
public ServerResponse processResult(String resultMessage, ReceiptContext exchangeContext) {
return new ServerResponse();
}
}
@Test
public void testSocialSupport() throws SOAPException, IOException {
SocialSupport socialSupport = new SocialSupport();
ServiceDefinition definition = new ServiceDefinitionParser().parseServiceDefinition(socialSupport.getWsdlUrl());
QName serviceName = definition.services.keySet().iterator().next();
ServiceDefinition.Service service = definition.services.get(serviceName);
QName portName = service.ports.keySet().iterator().next();
InputStream stream = getClass().getClassLoader().getResourceAsStream("social-support-1021/request_1.xml");
SOAPMessage message = MessageFactory.newInstance().createMessage(null, stream);
ServerRequest request = new R120315(mock(CryptoProvider.class), null, null).processRequest(message, serviceName, service.ports.get(portName));
assertEquals(new QName("http://sum-soc-help.skmv.rstyle.com", "SumSocHelpRequestMessage"), request.action);
Node requestData = request.appData.getChildNodes().item(1);
assertEquals("http://smev.gosuslugi.ru/rev120315", requestData.getNamespaceURI());
assertEquals("rev:sumSocHelpRequest", requestData.getNodeName());
}
}