/* * 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.core.sproto; import org.junit.Assert; import org.junit.Test; import ru.codeinside.gws.api.CryptoProvider; import ru.codeinside.gws.api.InfoSystem; import ru.codeinside.gws.api.Packet; import ru.codeinside.gws.api.Revision; import ru.codeinside.gws.api.ServerRequest; import ru.codeinside.gws.api.ServerResponse; import ru.codeinside.gws.core.R; import ru.codeinside.gws.core.Support; import ru.codeinside.gws.core.cproto.DummyProvider; import javax.xml.namespace.QName; import javax.xml.soap.SOAPMessage; import java.io.FileOutputStream; import java.util.Date; import static org.mockito.Mockito.mock; public class R120315Test extends Assert { final static Support.PortDefinition mvvPort = Support.getServicePort("mvvact/wsdl/mvvact.wsdl"); @Test public void testRevision() { assertEquals(Revision.rev120315, new R120315(new DummyProvider(), null, null).getRevision()); } // TODO: Для сервиса c WSDL это бесполезный тест, так как движок JWS обработает раньше. @Test public void request_invalidOperation() throws Exception { R120315 r120315 = new R120315(new DummyProvider(), null, null); try { r120315.processRequest(R.getSoapResource("fss-request-1.xml"), mvvPort.service, mvvPort.portDef); fail(); } catch (IllegalArgumentException e) { assertEquals( "Invalid operation {http://fss.ru/SvedRegisterNoPosob/request}request" + " for port {http://mvv.oep.com/}MVVAct" + " in service {http://mvv.oep.com/}MVVActService", e.getMessage()); } } @Test public void request_mvv_putData() throws Exception { CryptoProvider cryptoProvider = new ru.codeinside.gws.crypto.cryptopro.CryptoProvider(); R120315 r120315 = new R120315(cryptoProvider, null, null); ServerRequest request = r120315.processRequest(R.getSoapResource("mvvact/putData/request.xml"), mvvPort.service, mvvPort.portDef); assertNull(request.routerPacket); assertEquals(new QName("http://mvv.oep.com/", "putData"), request.action); assertNotNull(request.verifyResult.actor); assertNull(request.verifyResult.recipient); assertEquals("UniversalMVV", request.packet.serviceName); assertEquals(Packet.Type.SERVICE, request.packet.typeCode); assertEquals(Packet.Status.REQUEST, request.packet.status); assertEquals("Test", request.packet.exchangeType); assertEquals("111111111111", request.packet.requestIdRef); assertEquals("111111111111", request.packet.originRequestIdRef); assertEquals("111111111111", request.packet.serviceCode); assertEquals("111111111111", request.packet.caseNumber); assertNull(request.attachmens); assertNull(request.docRequestCode); assertEquals("AppData", request.appData.getLocalName()); assertEquals("smev", request.appData.getPrefix()); assertEquals("http://smev.gosuslugi.ru/rev120315", request.appData.getNamespaceURI()); } @Test public void response_mvv_putData() throws Exception { CryptoProvider cryptoProvider = mock(CryptoProvider.class); R120315 r120315 = new R120315(cryptoProvider, null, null); ServerResponse response = new ServerResponse(); response.action = new QName("http://mvv.oep.com/", "putData"); Packet p = new Packet(); response.packet = p; p.exchangeType = "Test"; p.serviceCode = "111111111111"; p.requestIdRef = "111111111111"; p.originRequestIdRef = "111111111111"; p.caseNumber = "111111111111"; p.typeCode = Packet.Type.SERVICE; p.status = Packet.Status.PROCESS; p.recipient = p.sender = new InfoSystem("PNZR01581", "111111111"); p.date = new Date(); SOAPMessage message = r120315.processResponse(null, response, mvvPort.service, mvvPort.portDef, null); FileOutputStream fos = new FileOutputStream("target/response.xml"); message.writeTo(fos); } @Test public void request_mvv_like_gosUslugiRu() throws Exception { CryptoProvider cryptoProvider = new ru.codeinside.gws.crypto.cryptopro.CryptoProvider(); R120315 r120315 = new R120315(cryptoProvider, null, null); ServerRequest request = r120315.processRequest(R.getSoapResource("mvvact/putData/request-2.xml"), mvvPort.service, mvvPort.portDef); assertNull(request.routerPacket); assertEquals(new QName("http://mvv.oep.com/", "putData"), request.action); assertNotNull(request.verifyResult.actor); assertNull(request.verifyResult.recipient); assertEquals("UniversalMVV", request.packet.serviceName); assertEquals(Packet.Type.SERVICE, request.packet.typeCode); assertEquals(Packet.Status.REQUEST, request.packet.status); assertEquals("Test", request.packet.exchangeType); assertNull(request.packet.requestIdRef); assertNull(request.packet.originRequestIdRef); assertEquals("111111111111", request.packet.serviceCode); assertEquals("111111111111", request.packet.caseNumber); assertNull(request.attachmens); assertNull(request.docRequestCode); assertEquals("AppData", request.appData.getLocalName()); assertEquals("smev", request.appData.getPrefix()); assertEquals("http://smev.gosuslugi.ru/rev120315", request.appData.getNamespaceURI()); } }