/*
* 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.gws3564c;
import com.sun.xml.ws.transport.http.client.HttpTransportPipe;
import org.junit.Assert;
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.Enclosure;
import ru.codeinside.gws.api.InfoSystem;
import ru.codeinside.gws.api.ServiceDefinition;
import ru.codeinside.gws.api.XmlNormalizer;
import ru.codeinside.gws.core.cproto.ClientRev111111;
import ru.codeinside.gws.crypto.cryptopro.CryptoProvider;
import ru.codeinside.gws.wsdl.ServiceDefinitionParser;
import ru.codeinside.gws.xml.normalizer.XmlNormalizerImpl;
import javax.xml.namespace.QName;
import java.io.FileOutputStream;
import java.security.KeyStore;
import java.security.PrivateKey;
import java.security.cert.X509Certificate;
import java.util.logging.Logger;
@Ignore
public class CadastralExtractTestI extends Assert {
private final Logger logger = Logger.getLogger(getClass().getName());
@Test
public void test() throws Exception {
InfoSystem pnzr01581 = new InfoSystem("PNZR01581", "Комплексная система предоставления государственных и муниципальных услуг Пензенской области");
// 1) http://smevtest.fss.ru/fss/SvedRegisterNoPosob
// 2) http://188.254.16.92:7777/gateway/services/SID0003123
String RR_ADDRESS = "http://test-ext.fccland.ru/smev2/smevService2";
CryptoProvider cryptoProvider = new CryptoProvider();
XmlNormalizer xmlNormalizer = new XmlNormalizerImpl();
ServiceDefinitionParser definitionParser = new ServiceDefinitionParser();
RRclient rr = new RRclient();
ServiceDefinition serviceDefinition = definitionParser.parseServiceDefinition(rr.getWsdlUrl());
logger.info("def: " + serviceDefinition.services);
ServiceDefinition.Service service = serviceDefinition.services.get(new QName("http://portal.fccland.ru/rt/", "RosreestrService"));
logger.info("ports: " + service.ports);
ClientRev111111 rev111111 = new ClientRev111111(definitionParser, cryptoProvider, xmlNormalizer, null);
DummyContext ctx = new DummyContext();
ctx.setVariable("smevTest", "Первичный запрос");
ctx.setVariable("okato", "29000000000");
ctx.setVariable("oktmo", "01234567890");
ctx.setVariable("requestType", "558101010000");
ctx.setVariable("enclosure_request_type", "CADASTRAL_EXTRACT");
//request
//declarant
ctx.setVariable("declarantType", "GOVERNANCE");
ctx.setVariable("declKind", "357007000000"); //Required
ctx.setVariable("declGovernanceName", "Пенсионный фонд");
ctx.setVariable("declGovernanceCode", "007001001001");
ctx.setVariable("declGovernanceEmail", "test@test.ru");
//location
ctx.setVariable("declGovernanceRegion", "40"); //required
ctx.setVariable("declGovernanceCityName", "Калуга"); //required attr
ctx.setVariable("declGovernanceDCity", "г"); //required attr
ctx.setVariable("declGovernanceStreetName", "Ленина"); //req Attr
ctx.setVariable("declGovernanceDStreets", "ул"); //req Attr
ctx.setVariable("declGovernanceLocationLevel1Type", "д"); //req Attr
ctx.setVariable("declGovernanceLocationLevel1Value", "5"); //req Attr
ctx.setVariable("declGovernanceLocationApartmentType", "кв"); //req Attr
ctx.setVariable("declGovernanceLocationApartmentValue", "32"); //req Attr
//agent
ctx.setVariable("agentFIOFirst", "Антон");
ctx.setVariable("agentFIOSurname", "Антонов");
ctx.setVariable("agentFIOPatronymic", "Антонович");
ctx.setVariable("agentPDocumentCode", "008001001000");
ctx.setVariable("agentPDocumentSeries", "2222");
ctx.setVariable("agentPDocumentNumber", "222222");
ctx.setVariable("agentPDocumentDate", "2010-10-10");
ctx.setVariable("agentPDocumentIssueOrgan", "DocumentIssueOrgan");
ctx.setVariable("agentPostalCode", "113563");
ctx.setVariable("agentRegion", "40"); //required
ctx.setVariable("agentCityName", "Калуга"); //required attr
ctx.setVariable("agentDCity", "г"); //required attr
ctx.setVariable("agentStreetName", "Советская"); //req Attr
ctx.setVariable("agentDStreets", "ул"); //req Attr
ctx.setVariable("agentLocationLevel1Type", "д"); //req Attr
ctx.setVariable("agentLocationLevel1Value", "10"); //req Attr
ctx.setVariable("agentLocationLevel2Type", "корп"); //req Attr
ctx.setVariable("agentLocationLevel2Value", "1"); //req Attr
ctx.setVariable("agentLocationLevel3Type", "литера"); //req Attr
ctx.setVariable("agentLocationLevel3Value", "а"); //req Attr
ctx.setVariable("agentLocationApartmentType", "к"); //req Attr
ctx.setVariable("agentLocationApartmentValue", "1"); //req Attr
ctx.setVariable("agentLocationOther", "Иное"); //req Attr
ctx.setVariable("agentLocationNote", "Неформализованное описание"); //req Attr
ctx.setVariable("agentEmail", "test@test.ru");
ctx.setVariable("agentPhone", "213-23-12");
ctx.setVariable("agentSNILS", "233-234-434 34");
ctx.setVariable("agentKind", "356003000000");
//required Data
ctx.setVariable("KVObjKind", "002001001000");
ctx.setVariable("KVRegion", "40"); //required
ctx.setVariable("KVCityName", "Калуга"); //required attr
ctx.setVariable("KVDCity", "г"); //required attr
ctx.setVariable("KVStreetName", "Брежнева"); //req Attr
ctx.setVariable("KVDStreets", "ул");
ctx.setVariable("KVLocationLevel1Type", "д"); //req Attr
ctx.setVariable("KVLocationLevel1Value", "23"); //req Attr
ctx.setVariable("KVLocationApartmentType", "кв"); //req Attr
ctx.setVariable("KVLocationApartmentValue", "3"); //req Attr
ctx.setVariable("KV1", true);
ctx.setVariable("KV2", true);
ctx.setVariable("KV3", true);
ctx.setVariable("KV4", true);
ctx.setVariable("KV5", true);
ctx.setVariable("KV6", true);
//AppliedDocument
ctx.setVariable("appliedACodeDocument", "558101010000");
ctx.setVariable("appliedADocumentName", "Запрос о предоставлении сведений, внесенных в государственный кадастр недвижимости");
ctx.setVariable("appliedADocumentNumber", "26-0-1-21/4001/2011-162");
ctx.setVariable("appliedADocumentDate", "2012-07-23");
// ctx.setVariable("appliedADocumentImageName", "demand_dcea0456-fb46-4714-9baf-d53ff76679d2_c57945ef-7476-49c2-aba5-e97686e8b60d.pdf");
// ctx.setVariable("appliedADocumentImageURL", "C:\\md_arch\\OUT\\2012_07_23\\ee0b4ef0-f1b3-4353-993a-368a33bc6435Files\\");
ctx.setVariable("appliedADocumentOriginalQuantity", "1");
ctx.setVariable("appliedADocumentOriginalQuantitySheet", "1");
ClientRequest request = rr.createClientRequest(ctx);
request.portAddress = RR_ADDRESS;
userSign(request.enclosures[0]);
//request.packet.sender = request.packet.originator = pnzr01581;
HttpTransportPipe.dump = true;
ClientResponse response = rev111111.send(rr.getWsdlUrl(), request, null);
/* logger.info("response error " + response.verifyResult.error);
logger.info("response action " + response.action);
logger.info("packet status " + response.packet.status); */
rr.processClientResponse(response, ctx);
logger.info("smevPool " + ctx.getVariable("smevPool"));
while (Boolean.TRUE == ctx.getVariable("smevPool")) {
System.out.println("Ждём 30 секунд...");
Thread.sleep(30000);
ctx.setVariable("smevTest", "Повторный запрос");
request = rr.createClientRequest(ctx);
request.portAddress = RR_ADDRESS;
request.packet.sender = request.packet.originator = pnzr01581;
response = rev111111.send(rr.getWsdlUrl(), request, null);
rr.processClientResponse(response, ctx);
}
Enclosure enc = ctx.getEnclosure("ReceivedEnclosure");
if (enc!=null) {
//x.fileName
FileOutputStream fos = new FileOutputStream("target/" + enc.fileName);
fos.write(enc.content);
}
// System.out.println("ФСС: " + response.verifyResult.actor.getSubjectDN());
/* assertNull("Ответ проходит через Ростелеком", response.verifyResult .recipient);
assertEquals(Boolean.FALSE, ctx.getVariable("registering_response"));
assertEquals(Boolean.TRUE, ctx.getVariable("obtainingGrants1_response"));
assertEquals(Boolean.TRUE, ctx.getVariable("obtainingGrants2_response")); */
}
void userSign(Enclosure enclosure) throws Exception {
final long startMs = System.currentTimeMillis();
final KeyStore keystore = KeyStore.getInstance("HDImageStore");
keystore.load(null, null);
final String certName = "RaUser-fb87d12e-713e-46ea-ae0b-d141c2e21549";
final String certPass = "12345678";
X509Certificate cert = ((X509Certificate) keystore.getCertificate(certName));
assertNotNull(cert);
PrivateKey privateKey = ((PrivateKey) keystore.getKey(certName, certPass.toCharArray()));
assertNotNull(privateKey);
java.security.Signature signature = java.security.Signature.getInstance("GOST3411withGOST3410EL");
signature.initSign(privateKey);
signature.update(enclosure.content);
byte[] signed = signature.sign();
enclosure.signature = new ru.codeinside.gws.api.Signature(cert, enclosure.content, signed, true);
}
}