/* * 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.cproto; import com.sun.xml.ws.transport.http.client.HttpTransportPipe; import org.apache.commons.lang.time.DateUtils; import org.junit.Assert; import org.junit.Before; import org.junit.Ignore; import org.junit.Test; import ru.codeinside.gws.api.ClientRequest; import ru.codeinside.gws.api.ClientResponse; import ru.codeinside.gws.api.ExchangeContext; import ru.codeinside.gws.api.InfoSystem; import ru.codeinside.gws.api.XmlNormalizer; import ru.codeinside.gws.crypto.cryptopro.CryptoProvider; import ru.codeinside.gws.stubs.DummyContext; import ru.codeinside.gws.wsdl.ServiceDefinitionParser; import ru.codeinside.gws.xml.normalizer.XmlNormalizerImpl; import ru.codeinside.gws3572c.GMPClient3572; import java.io.IOException; import java.io.InputStream; import java.text.ParseException; import java.util.Date; import java.util.logging.LogManager; @Ignore public class ImportChargeITest extends Assert { static { final InputStream is = ImportChargeITest.class.getClassLoader().getResourceAsStream("logging.properties"); try { if (is != null) { LogManager.getLogManager().readConfiguration(is); } } catch (IOException e) { throw new RuntimeException(e); } } private GMPClient3572 client; public static final String SERVICE_ADDRESS = "http://188.254.16.92:7777/gateway/services/SID0003218?wsdl"; private InfoSystem pnzr01581; private ClientRev111111 rev111111; private DummyContext createContextForErrorRequest() throws ParseException { DummyContext ctx = new DummyContext(); ctx.setVariable("postBlockIdRequest", "13454"); // идентификатор запроса ctx.setVariable("postBlockSenderIdentifier", "000221"); // идентификатор отправителя //ctx.setVariable("postBlockSenderIdentifier", "20091d"); // идентификатор отправителя ctx.setVariable("ordinalNumber", "013400000011"); // идентификатор отправителя ctx.setVariable("postBlockTimeStamp", DateUtils.parseDate("25.07.2012 09:40:47", new String[]{"dd.MM.yyyy HH:mm:ss"})); // дата составления запроса ctx.setVariable("supplierOrgInfoName", "Управление Федеральной миграционной службы по Республике Татарстан"); ctx.setVariable("supplierOrgInfoINN", "1655102196"); ctx.setVariable("supplierOrgInfoKPP", "165501001"); ctx.setVariable("accountAccount", "40101810800000010001"); ctx.setVariable("bankBIK", "049205001"); ctx.setVariable("bankName", "ГРКЦ НБ РТ г. Казани"); ctx.setVariable("chargeSupplierBillID", "19255500000000000079"); // Уникальный идентификатор счёта в ИСП ctx.setVariable("chargeBillDate", DateUtils.parseDate("10.03.2011", new String[]{"dd.MM.yyyy"})); //Дата выставления счёта ctx.setVariable("chargeBillFor", "Госпошлина за выдачу загранпаспорта"); //Дата выставления счёта ctx.setVariable("chargeTotalAmount", "1000,00"); ctx.setVariable("chargeChangeStatus", "1"); /* Статус счёта 1 - новый 2 - изменение 3 - аннулирование */ ctx.setVariable("chargeTreasureBranch", "УФК по Республике Татарстан"); ctx.setVariable("chargeKBK", "19210806000011000110"); ctx.setVariable("chargeOKATO", "92401000000"); ctx.setVariable("chargeApplicationID", "455555"); ctx.setVariable("chargeUnifiedPayerIdentifier", "0100000000006667775555643"); ctx.setVariable("budgetIndexStatus", "0"); ctx.setVariable("budgetPaymentType", "0"); ctx.setVariable("budgetPurpose", "0"); ctx.setVariable("budgetTaxPeriod", "0"); ctx.setVariable("budgetTaxDocNumber", "0"); ctx.setVariable("budgetTaxDocDate", "0"); ctx.setVariable("payerType", "1"); ctx.setVariable("payerPersonDocumentID1", "01234567890"); ctx.setVariable("operationType", "importCharge"); return ctx; } @Before public void setUp() throws Exception { pnzr01581 = new InfoSystem("8201", "Комплексная система предоставления государственных и муниципальных услуг Пензенской области"); CryptoProvider cryptoProvider = new CryptoProvider(); XmlNormalizer xmlNormalizer = new XmlNormalizerImpl(); rev111111 = new ClientRev111111(new ServiceDefinitionParser(), cryptoProvider, xmlNormalizer, null); client = new GMPClient3572(); client.bindCryptoProvider(cryptoProvider); HttpTransportPipe.dump = true; ClientRev111111.validate = true; } @Test public void testOnUnregisteredSupplierId() throws Exception { ExchangeContext ctx = createContextForErrorRequest(); ctx.setVariable("smevTest", "Первичный запрос"); ClientRequest request = client.createClientRequest(ctx); request.portAddress = SERVICE_ADDRESS; request.packet.sender = request.packet.originator = pnzr01581; ClientResponse response = rev111111.send(client.getWsdlUrl(), request, null); client.processClientResponse(response, ctx); Assert.assertEquals("9500", ctx.getVariable("ticketPostBlockSenderIdentifier")); Assert.assertNotNull(ctx.getVariable("requestProcessResultErrorCode")); Assert.assertNotNull("Участник с таким идентификатором не зарегистрирован", ctx.getVariable("requestProcessResultErrorDescription")); } @Test public void testOnRegisteredSupplierIdAndGeneratedOrdinalId() throws Exception { ExchangeContext ctx = createContextForRequest(); ctx.setVariable("ordinalNumber", null); ctx.setVariable("smevTest", "Первичный запрос"); ClientRequest request = client.createClientRequest(ctx); request.portAddress = SERVICE_ADDRESS; request.packet.sender = request.packet.originator = pnzr01581; ClientResponse response = rev111111.send(client.getWsdlUrl(), request, null); client.processClientResponse(response, ctx); Assert.assertEquals(false, ctx.getVariable("smevPool")); // повторять запрос не надо Assert.assertEquals(true, ctx.getVariable("responseSuccess")); // начисление должно пройти успешно } @Test public void testOnRegisteredSupplierIdAndDuplPostId() throws Exception { ExchangeContext ctx = createContextForRequest(); ctx.setVariable("smevTest", "Первичный запрос"); ClientRequest request = client.createClientRequest(ctx); request.portAddress = SERVICE_ADDRESS; request.packet.sender = request.packet.originator = pnzr01581; ClientResponse response = rev111111.send(client.getWsdlUrl(), request, null); client.processClientResponse(response, ctx); Assert.assertEquals(false, ctx.getVariable("smevPool")); // повторять запрос не надо Assert.assertEquals(false, ctx.getVariable("responseSuccess")); // т.к. начисление уже существует } @Test public void testOnPNZData() throws Exception { ExchangeContext ctx = createContextForPnzRequest(); ctx.setVariable("smevTest", "Первичный запрос"); ClientRequest request = client.createClientRequest(ctx); request.portAddress = SERVICE_ADDRESS; request.packet.sender = request.packet.originator = pnzr01581; ClientResponse response = rev111111.send(client.getWsdlUrl(), request, null); client.processClientResponse(response, ctx); Assert.assertEquals(false, ctx.getVariable("smevPool")); // повторять запрос не надо Assert.assertEquals(false, ctx.getVariable("responseSuccess")); // т.к. начисление уже существует } private ExchangeContext createContextForPnzRequest() throws ParseException { ExchangeContext ctx = new DummyContext(); //ctx.setVariable("postBlockIdRequest", "134541"); // идентификатор запроса ctx.setVariable("postBlockSenderIdentifier", "002811"); // идентификатор отправителя //ctx.setVariable("ordinalNumber", "013400000011"); // порядковый номер запроса ctx.setVariable("postBlockTimeStamp", new Date()); // дата составления запроса ctx.setVariable("supplierOrgInfoName", "Управление информатизации Пензенской области"); ctx.setVariable("supplierOrgInfoINN", "5836013428"); ctx.setVariable("supplierOrgInfoKPP", "583601001"); ctx.setVariable("accountAccount", "40201810000000000000"); ctx.setVariable("accountKind", "1"); ctx.setVariable("bankBIK", "045655001"); ctx.setVariable("bankName", "ГУ ГРКЦ Банка России по Пензенской области"); // ctx.setVariable("chargeSupplierBillID", "19255500000000000079"); // Уникальный идентификатор счёта в ИСП ctx.setVariable("chargeBillDate", DateUtils.parseDate("10.03.2011", new String[]{"dd.MM.yyyy"})); //Дата выставления счёта ctx.setVariable("chargeBillFor", "Госпошлина за выдачу загранпаспорта"); //Дата выставления счёта ctx.setVariable("chargeTotalAmount", "1000,00"); ctx.setVariable("chargeChangeStatus", "1"); /* Статус счёта 1 - новый 2 - изменение 3 - аннулирование */ ctx.setVariable("chargeTreasureBranch", "УФК по Пензенской области"); ctx.setVariable("chargeKBK", "19210807100010034110"); ctx.setVariable("chargeOKATO", "56401000000"); // ctx.setVariable("chargeApplicationID", "455555"); //ctx.setVariable("chargeUnifiedPayerIdentifier", "0100000000006667775555643"); ctx.setVariable("budgetIndexStatus", "0"); ctx.setVariable("budgetPaymentType", "тестовый платеж"); ctx.setVariable("budgetPurpose", "0"); // основание платежа ctx.setVariable("budgetTaxPeriod", "0"); ctx.setVariable("budgetTaxDocNumber", "0"); ctx.setVariable("budgetTaxDocDate", "0"); ctx.setVariable("payerType", "1"); ctx.setVariable("payerPersonDocumentID1", "76384768389"); ctx.setVariable("operationType", "importCharge"); return ctx; } private ExchangeContext createContextForRequest() throws ParseException { ExchangeContext ctx = new DummyContext(); ctx.setVariable("postBlockIdRequest", "134541"); // идентификатор запроса ctx.setVariable("postBlockSenderIdentifier", "20091d"); // идентификатор отправителя ctx.setVariable("ordinalNumber", "013400000011"); // порядковый номер запроса ctx.setVariable("postBlockTimeStamp", DateUtils.parseDate("25.07.2012 09:40:47", new String[]{"dd.MM.yyyy HH:mm:ss"})); // дата составления запроса ctx.setVariable("supplierOrgInfoName", "Минсоцзащиты Республики Мордовия"); ctx.setVariable("supplierOrgInfoINN", "1326196216"); ctx.setVariable("supplierOrgInfoKPP", "132601001"); ctx.setVariable("accountAccount", "40201810900000000006"); ctx.setVariable("accountKind", "1"); ctx.setVariable("bankBIK", "049205001"); ctx.setVariable("bankName", "ГРЦ НБ Респ.Мордовия Банка России г. Саранск"); ctx.setVariable("chargeSupplierBillID", "19255500000000000079"); // Уникальный идентификатор счёта в ИСП ctx.setVariable("chargeBillDate", DateUtils.parseDate("10.03.2011", new String[]{"dd.MM.yyyy"})); //Дата выставления счёта ctx.setVariable("chargeBillFor", "Госпошлина за выдачу загранпаспорта"); //Дата выставления счёта ctx.setVariable("chargeTotalAmount", "1000,00"); ctx.setVariable("chargeChangeStatus", "1"); /* Статус счёта 1 - новый 2 - изменение 3 - аннулирование */ ctx.setVariable("chargeTreasureBranch", "УФК по Республике Татарстан"); ctx.setVariable("chargeKBK", "81301130925000013290"); ctx.setVariable("chargeOKATO", "89401364000"); // ctx.setVariable("chargeApplicationID", "455555"); ctx.setVariable("chargeUnifiedPayerIdentifier", "0100000000006667775555643"); ctx.setVariable("budgetIndexStatus", "0"); ctx.setVariable("budgetPaymentType", "0"); ctx.setVariable("budgetPurpose", "0"); ctx.setVariable("budgetTaxPeriod", "0"); ctx.setVariable("budgetTaxDocNumber", "0"); ctx.setVariable("budgetTaxDocDate", "0"); ctx.setVariable("payerType", "1"); ctx.setVariable("payerPersonDocumentID1", "01234567890"); ctx.setVariable("operationType", "importCharge"); return ctx; } }