/* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * Copyright (c) 2013, MPL CodeInside http://codeinside.ru */ package ru.codeinside.gws.wsdl; import org.junit.Assert; import org.junit.Test; import ru.codeinside.gws.api.ServiceDefinition; import javax.xml.namespace.QName; import java.io.IOException; import java.io.InputStream; import java.net.URI; import java.net.URISyntaxException; import java.net.URL; import java.util.LinkedHashSet; import java.util.Set; import java.util.logging.LogManager; public class ServiceDefinitionParserTest extends Assert { static { final InputStream is = ServiceDefinitionParserTest.class.getClassLoader().getResourceAsStream("logging.properties"); try { if (is != null) { LogManager.getLogManager().readConfiguration(is); } } catch (IOException e) { throw new RuntimeException(e); } } @Test public void parseFss() throws URISyntaxException { ServiceDefinitionParser parser = new ServiceDefinitionParser(); ServiceDefinition definition = parser.parseServiceDefinition(r("gws3417/SvedRegisterNoPosob.wsdl")); assertEquals(11, definition.namespaces.size()); assertEquals(1, definition.services.size()); ServiceDefinition.Service service = definition.services.get(new QName("http://fss.ru/SvedRegisterNoPosob", "fss")); assertEquals(1, service.ports.size()); ServiceDefinition.Port port = service.ports.get(new QName("http://fss.ru/SvedRegisterNoPosob", "SvedRegisterNoPosobPort")); assertEquals("http://smevtest.fss.ru/fss/SvedRegisterNoPosob", port.soapAddress); assertEquals(new QName("http://fss.ru/SvedRegisterNoPosob", "SvedRegisterNoPosobPortBinding"), port.binding); assertEquals(new QName("http://fss.ru/SvedRegisterNoPosob", "SvedRegisterNoPosob"), port.port); assertEquals(1, port.operations.size()); ServiceDefinition.Operation request = port.operations.get(new QName("http://fss.ru/SvedRegisterNoPosob", "request")); assertEquals("", request.soapAction); ServiceDefinition.Arg in = request.in; assertNull(in.name); assertEquals(new QName("http://fss.ru/SvedRegisterNoPosob", "request"), in.message); assertEquals(1, in.parts.size()); assertEquals(new QName("http://fss.ru/SvedRegisterNoPosob/request", "request"), in.parts.get("parameters")); ServiceDefinition.Arg out = request.out; assertEquals(new QName("http://fss.ru/SvedRegisterNoPosob", "requestResponse"), out.message); assertEquals(1, out.parts.size()); assertEquals(new QName("http://fss.ru/SvedRegisterNoPosob/request", "requestResponse"), out.parts.get("parameters")); assertURI( definition.resources, "SvedRegisterNoPosob_1.xsd", "SvedRegisterNoPosob_2.xsd", "SvedRegisterNoPosob_3.xsd", "SvedRegisterNoPosob_4.xsd" ); } @Test public void parseMvv() throws URISyntaxException { ServiceDefinitionParser parser = new ServiceDefinitionParser(); ServiceDefinition definition = parser.parseServiceDefinition(r("gws3970/mvvact.wsdl")); assertEquals(7, definition.namespaces.size()); assertEquals(1, definition.services.size()); assertURI( definition.resources, "mvvact_schema1.xsd", "mvvact_schema2.xsd", "mvvact_schema3.xsd" ); } @Test public void parseRosreestr() throws URISyntaxException { ServiceDefinitionParser parser = new ServiceDefinitionParser(); ServiceDefinition definition = parser.parseServiceDefinition(r("rr/RR.wsdl")); assertEquals(7, definition.namespaces.size()); assertEquals(1, definition.services.size()); assertURI( definition.resources, "SmevTypes2.xsd", "xop-include.xsd", "Rosreestr2.xsd"); ServiceDefinition.Service service = definition.services.get(new QName("http://portal.fccland.ru/rt/", "RosreestrService")); ServiceDefinition.Port port = service.ports.get(new QName("http://portal.fccland.ru/rt/", "RosreestrServicePort")); assertEquals(4, port.operations.size()); ServiceDefinition.Operation createRequest = port.operations.get(new QName("http://portal.fccland.ru/rt/", "CreateRequest")); assertEquals("http://portal.rosreestr.ru/CreateRequest", createRequest.soapAction); } private URL r(String name) { final URL url = getClass().getClassLoader().getResource(name); assertNotNull(url); return url; } private void assertURI(final Set<URI> set, final String... urls) throws URISyntaxException { final Set<URI> expected = new LinkedHashSet<URI>(); for (final String url : urls) { expected.add(new URI(url)); } assertEquals(expected, set); } }