From 71904acd13e3c9032ff53360ae71f58aba2a4b2f Mon Sep 17 00:00:00 2001 From: Rich Barusta Date: Wed, 27 Dec 2017 17:05:27 -0600 Subject: [PATCH] MDA-11050 se agrega soporte para concurrencia y proxy para autenticacion y cancelacion --- README.md | 1 + pom.xml | 2 +- .../SWAuthenticationService.java | 13 +- .../Cancelation/SWCancelationService.java | 22 ++- src/main/java/Services/SWService.java | 8 + .../Authentication/AuthOptionsRequest.java | 24 +++ .../Requests/Authentication/AuthRequest.java | 65 ++++++-- .../CancelationOptionsRequest.java | 30 ++++ .../Cancelation/CancelationRequest.java | 155 ++++++++++++------ .../SWAuthenticationServiceTest.java | 15 ++ .../Cancelation/SWCancelationServiceTest.java | 2 +- .../java/Tests/Stamp/SWStampServiceTest.java | 7 +- 12 files changed, 272 insertions(+), 72 deletions(-) diff --git a/README.md b/README.md index 82c9a98..d550bd1 100644 --- a/README.md +++ b/README.md @@ -59,6 +59,7 @@ Alternativamente tambien se cuenta con un archivo JAR en el que se incluyen toda //Es preferible inicializar el objeto con el usuario y password de nuestra cuenta, en caso contrario se puede incluir solamente el token de acceso //Se especifica el base path, esto para consumir el api de pruebas o productivo SWStampService sdk = new SWStampService("demo","123456789","http://services.test.sw.com.mx"); + //Si deseas utilizar un proxy customizado, debes agregar dos parametros mas //Se inicializa un objeto response, que obtendra la respuesta del api SuccessV1Response response = null; //Se asigna el resultado de la respuesta a dicho objeto diff --git a/pom.xml b/pom.xml index ca38f06..719fbac 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ mx.com.sw.services SW-JAVA - 0.0.3.4 + 0.0.3.6 jar diff --git a/src/main/java/Services/Authentication/SWAuthenticationService.java b/src/main/java/Services/Authentication/SWAuthenticationService.java index 8d41849..e5a2031 100644 --- a/src/main/java/Services/Authentication/SWAuthenticationService.java +++ b/src/main/java/Services/Authentication/SWAuthenticationService.java @@ -12,9 +12,20 @@ public SWAuthenticationService(String user, String password, String URI) { super(user, password, URI); } + public SWAuthenticationService(String user, String password, String URI, String hostProxy, String portProxy) { + super(user, password, hostProxy, portProxy, URI); + } + public IResponse Token() throws GeneralException, AuthException { - AuthOptionsRequest settings = new AuthOptionsRequest(getURI(),getUser(),getPassword()); + AuthOptionsRequest settings; + if(getProxyHost() != null){ + + settings = new AuthOptionsRequest(getURI(),getUser(),getPassword(),getProxyHost(),getPortHost()); + }else{ + settings = new AuthOptionsRequest(getURI(),getUser(),getPassword()); + } + AuthRequest req = new AuthRequest(); diff --git a/src/main/java/Services/Cancelation/SWCancelationService.java b/src/main/java/Services/Cancelation/SWCancelationService.java index 64a4cb7..efee83f 100644 --- a/src/main/java/Services/Cancelation/SWCancelationService.java +++ b/src/main/java/Services/Cancelation/SWCancelationService.java @@ -21,6 +21,14 @@ public SWCancelationService(String user, String password, String URI) { public SWCancelationService(String token, String URI) { super(token, URI); } + + public SWCancelationService(String token, String URI, String hostProxy, String portProxy) { + super(token,hostProxy,portProxy, URI); + } + + public SWCancelationService(String user, String password, String URI, String hostProxy, String portProxy) { + super(user, password,hostProxy,portProxy, URI); + } public IResponse Cancelation(String uuid, String password_csd, String rfc, String b64Cer, String b64Key) throws AuthException, GeneralException { @@ -30,8 +38,13 @@ public IResponse Cancelation(String uuid, String password_csd, String rfc, Strin } //MAKE CANCELATION PROCESS, CUSTOMER ALREADY HAS TOKEN + CancelationOptionsRequest settings; + if(getProxyHost() != null){ + settings = new CancelationOptionsRequest(getToken(),getURI(),uuid, password_csd, rfc, b64Cer, b64Key, getProxyHost(),getPortHost()); + }else{ + settings = new CancelationOptionsRequest(getToken(),getURI(),uuid, password_csd, rfc, b64Cer, b64Key); + } - CancelationOptionsRequest settings = new CancelationOptionsRequest(getToken(),getURI(),uuid, password_csd, rfc, b64Cer, b64Key); CancelationRequest req = new CancelationRequest(); return req.sendRequest(settings); @@ -45,8 +58,13 @@ public IResponse Cancelation(String xml) throws AuthException, GeneralException } //MAKE CANCELATION PROCESS, CUSTOMER ALREADY HAS TOKEN + CancelationOptionsRequest settings; + if(getProxyHost() != null){ + settings = new CancelationOptionsRequest(getToken(),getURI(),xml,getProxyHost(),getPortHost()); + }else{ + settings = new CancelationOptionsRequest(getToken(),getURI(),xml); + } - CancelationOptionsRequest settings = new CancelationOptionsRequest(getToken(),getURI(),xml); CancelationRequest req = new CancelationRequest(); return req.sendRequest(settings, true); diff --git a/src/main/java/Services/SWService.java b/src/main/java/Services/SWService.java index d6535ee..0fee4e0 100644 --- a/src/main/java/Services/SWService.java +++ b/src/main/java/Services/SWService.java @@ -14,6 +14,14 @@ public abstract class SWService { private String Password = null; private String ProxyHost = null; + public SWService(String user,String password, String proxyHost, String portHost, String URI) { + User = user; + Password = password; + ProxyHost = proxyHost; + PortHost = portHost; + this.URI = URI; + } + public SWService(String token, String proxyHost, String portHost, String URI) { Token = token; ProxyHost = proxyHost; diff --git a/src/main/java/Utils/Requests/Authentication/AuthOptionsRequest.java b/src/main/java/Utils/Requests/Authentication/AuthOptionsRequest.java index 4c5e667..bd77283 100644 --- a/src/main/java/Utils/Requests/Authentication/AuthOptionsRequest.java +++ b/src/main/java/Utils/Requests/Authentication/AuthOptionsRequest.java @@ -4,9 +4,33 @@ import Utils.Requests.IRequest; public class AuthOptionsRequest extends IRequest { + private String ProxyHost = null; + private String PortHost = null; + public void setProxyHost(String proxyHost) { + ProxyHost = proxyHost; + } + + public void setPortHost(String portHost) { + PortHost = portHost; + } public AuthOptionsRequest(String URI, String user, String password) { super(URI+ Constants.AUTH_PATH, user, password); } + + public String getProxyHost() { + return ProxyHost; + } + + public String getPortHost() { + return PortHost; + } + + public AuthOptionsRequest(String URI, String user, String password, String hostProxy, String portProxy) { + + super(URI+ Constants.AUTH_PATH, user, password); + this.setPortHost(portProxy); + this.setProxyHost(hostProxy); + } } diff --git a/src/main/java/Utils/Requests/Authentication/AuthRequest.java b/src/main/java/Utils/Requests/Authentication/AuthRequest.java index 4e7113c..6f9ca01 100644 --- a/src/main/java/Utils/Requests/Authentication/AuthRequest.java +++ b/src/main/java/Utils/Requests/Authentication/AuthRequest.java @@ -4,15 +4,26 @@ import Exceptions.GeneralException; import Utils.Requests.IRequest; import Utils.Requests.IRequestor; +import Utils.Requests.Stamp.StampOptionsRequest; import Utils.Responses.*; import com.mashape.unirest.http.HttpResponse; import com.mashape.unirest.http.JsonNode; import com.mashape.unirest.http.Unirest; import com.mashape.unirest.http.exceptions.UnirestException; +import org.apache.http.HttpHost; +import org.apache.http.client.ClientProtocolException; +import org.apache.http.client.config.RequestConfig; +import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClients; import org.json.JSONException; import org.json.JSONObject; +import java.io.IOException; +import java.io.InputStream; import java.net.MalformedURLException; +import java.util.Scanner; public class AuthRequest implements IRequestor { @@ -26,36 +37,56 @@ public IResponse sendRequest(IRequest request) throws GeneralException, AuthExce String messageDetail = ""; try { + String hostProxy = ((AuthOptionsRequest) request).getProxyHost(); + String portProxy = ((AuthOptionsRequest) request).getPortHost(); + + CloseableHttpClient client = HttpClients.createDefault(); + HttpPost httppost = new HttpPost(request.URI); + httppost.setHeader("user", request.User); + httppost.setHeader("password", request.Password); + if( hostProxy !=null && portProxy != null){ + HttpHost proxy = new HttpHost(hostProxy, Integer.parseInt(portProxy), request.URI.split(":")[0]); + RequestConfig config = RequestConfig.custom() + .setProxy(proxy) + .build(); + httppost.setConfig(config); + } + CloseableHttpResponse responseB = client.execute(httppost); - HttpResponse response = Unirest.post(request.URI) - .header("user",request.User) - .header("password",request.Password).asJson(); - if(!response.getBody().toString().isEmpty()) { - JSONObject body = new JSONObject(response.getBody().toString()); - if(!body.isNull("messageDetail")){ - messageDetail = body.getString("messageDetail"); - } + InputStream inputStream = responseB.getEntity().getContent(); - if(response.getStatus()==200){ - JSONObject data = body.getJSONObject("data"); - return new SuccessAuthResponse(response.getStatus(),body.getString("status"),data.getString("token"),"OK","OK"); - } - else{ - return new SuccessAuthResponse(response.getStatus(),body.getString("status"),"",body.getString("message"),messageDetail); + Scanner s = new Scanner(inputStream).useDelimiter("\\A"); + String responseString = s.hasNext() ? s.next() : ""; + int statusE = responseB.getStatusLine().getStatusCode(); + client.close(); + + if(!responseString.isEmpty()) { + JSONObject body = new JSONObject(responseString); + if(statusE==200){ + JSONObject data = body.getJSONObject("data"); + return new SuccessAuthResponse(statusE,body.getString("status"),data.getString("token"),"OK","OK"); + } + else{ + if(!body.isNull("messageDetail")){ + messageDetail = body.getString("messageDetail"); } + return new SuccessAuthResponse(statusE,body.getString("status"),"",body.getString("message"),messageDetail); + } } else{ - return new SuccessAuthResponse(response.getStatus(),"error","",response.getStatusText(),response.getStatusText()); + return new SuccessAuthResponse(statusE,"error","",responseB.getStatusLine().getReasonPhrase(),responseB.getStatusLine().getReasonPhrase()); } - } catch (UnirestException e) { - throw new GeneralException(500,"SERVIDOR INACTIVO"); } catch(JSONException e){ throw new GeneralException(500,e.getMessage()); + } catch (ClientProtocolException e) { + throw new GeneralException(500,e.getMessage()); + } catch (IOException e) { + throw new GeneralException(500,e.getMessage()); } diff --git a/src/main/java/Utils/Requests/Cancelation/CancelationOptionsRequest.java b/src/main/java/Utils/Requests/Cancelation/CancelationOptionsRequest.java index f7a66c3..1a398b0 100644 --- a/src/main/java/Utils/Requests/Cancelation/CancelationOptionsRequest.java +++ b/src/main/java/Utils/Requests/Cancelation/CancelationOptionsRequest.java @@ -12,6 +12,8 @@ public class CancelationOptionsRequest extends IRequest{ private String b64key; private String xml; + private String ProxyHost; + private String PortHost; public CancelationOptionsRequest(String token, String URI, String uuid, String password_csd, String rfc, String b64Cer, String b64Key) { @@ -22,12 +24,40 @@ public CancelationOptionsRequest(String token, String URI, String uuid, String p this.b64Cer = b64Cer; this.b64key = b64Key; } + + public CancelationOptionsRequest(String token, String URI, String uuid, String password_csd, String rfc, String b64Cer, String b64Key, String proxyHost, String portHst) { + super(token, URI+ Constants.CANCELATION_CSD_PATH); + this.uuid = uuid; + this.password_csd = password_csd; + this.rfc = rfc; + this.b64Cer = b64Cer; + this.b64key = b64Key; + ProxyHost = proxyHost; + PortHost = portHst; + } public CancelationOptionsRequest(String token, String URI, String xml) { super(token, URI+ Constants.CANCELATION_XML_PATH); this.xml = xml; } + public String getProxyHost() { + return ProxyHost; + } + + public String getPortHost() { + return PortHost; + } + + public CancelationOptionsRequest(String token, String URI, String xml, String proxyHost, String portHst) { + super(token, URI+ Constants.CANCELATION_XML_PATH); + this.xml = xml; + ProxyHost = proxyHost; + PortHost = portHst; + + + } + public String getUuid() { return uuid; } diff --git a/src/main/java/Utils/Requests/Cancelation/CancelationRequest.java b/src/main/java/Utils/Requests/Cancelation/CancelationRequest.java index a3ab65f..3b35b78 100644 --- a/src/main/java/Utils/Requests/Cancelation/CancelationRequest.java +++ b/src/main/java/Utils/Requests/Cancelation/CancelationRequest.java @@ -2,6 +2,7 @@ import Exceptions.AuthException; import Exceptions.GeneralException; +import Utils.Requests.Authentication.AuthOptionsRequest; import Utils.Requests.IRequest; import Utils.Requests.IRequestor; import Utils.Responses.*; @@ -9,13 +10,23 @@ import com.mashape.unirest.http.JsonNode; import com.mashape.unirest.http.Unirest; import com.mashape.unirest.http.exceptions.UnirestException; -import java.io.BufferedWriter; -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.OutputStreamWriter; + +import java.io.*; +import java.nio.charset.Charset; +import java.util.Scanner; import java.util.UUID; +import org.apache.http.HttpHost; +import org.apache.http.client.ClientProtocolException; +import org.apache.http.client.config.RequestConfig; +import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.entity.StringEntity; +import org.apache.http.entity.mime.HttpMultipartMode; +import org.apache.http.entity.mime.MultipartEntity; +import org.apache.http.entity.mime.content.StringBody; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClients; import org.json.JSONException; import org.json.JSONObject; @@ -24,39 +35,62 @@ public class CancelationRequest implements IRequestor { public IResponse sendRequest(IRequest request) throws GeneralException, AuthException { try { + String hostProxy = ((CancelationOptionsRequest) request).getProxyHost(); + String portProxy = ((CancelationOptionsRequest) request).getPortHost(); + + CloseableHttpClient client = HttpClients.createDefault(); + HttpPost httppost = new HttpPost(request.URI); + httppost.setHeader("Authorization", "bearer "+request.Token); + httppost.setHeader("Content-Type", "application/json"); + JSONObject send = new JSONObject("{\r\n \"uuid\": \"" + ((CancelationOptionsRequest) request).getUuid() + "\",\r\n \"password\": \"" + ((CancelationOptionsRequest) request).getPassword_csd() + "\",\r\n \"rfc\": \"" + ((CancelationOptionsRequest) request).getRfc() + "\",\r\n \"b64Cer\": \"" + ((CancelationOptionsRequest) request).getB64Cer() + "\",\r\n \"b64Key\": \"" + ((CancelationOptionsRequest) request).getB64key() + "\"\r\n}"); + StringEntity d = new StringEntity(send.toString()); + httppost.setEntity(d); + if( hostProxy !=null && portProxy != null){ + HttpHost proxy = new HttpHost(hostProxy, Integer.parseInt(portProxy), request.URI.split(":")[0]); + RequestConfig config = RequestConfig.custom() + .setProxy(proxy) + .build(); + httppost.setConfig(config); + } + CloseableHttpResponse responseB = client.execute(httppost); - HttpResponse response = Unirest.post(request.URI) - .header("Authorization", "bearer " + request.Token) - .header("Content-Type", "application/json") - .body("{\r\n \"uuid\": \"" + ((CancelationOptionsRequest) request).getUuid() + "\",\r\n \"password\": \"" + ((CancelationOptionsRequest) request).getPassword_csd() + "\",\r\n \"rfc\": \"" + ((CancelationOptionsRequest) request).getRfc() + "\",\r\n \"b64Cer\": \"" + ((CancelationOptionsRequest) request).getB64Cer() + "\",\r\n \"b64Key\": \"" + ((CancelationOptionsRequest) request).getB64key() + "\"\r\n}").asString(); - - if (!response.getBody().equalsIgnoreCase("{}") && !response.getBody().equals("")) { - JSONObject body = new JSONObject(response.getBody()); + InputStream inputStream = responseB.getEntity().getContent(); - if (response.getStatus() == 200) { + Scanner s = new Scanner(inputStream).useDelimiter("\\A"); + String responseString = s.hasNext() ? s.next() : ""; + int statusE = responseB.getStatusLine().getStatusCode(); + client.close(); + if(!responseString.isEmpty()) { + JSONObject body = new JSONObject(responseString); + if(statusE==200){ JSONObject data = body.getJSONObject("data"); String uuid = ((CancelationOptionsRequest) request).getUuid().toUpperCase(); JSONObject uuid_data = data.getJSONObject("uuid"); String uuidSC = uuid_data.getString(uuid); - return new CancelationResponse(response.getStatus(), body.getString("status"), data.getString("acuse"), uuid, Integer.parseInt(uuidSC),"OK","OK"); - } - else { - + return new CancelationResponse(statusE, body.getString("status"), data.getString("acuse"), uuid, Integer.parseInt(uuidSC),"OK","OK"); + }else{ String messageDetail = ""; if (!body.isNull("messageDetail")) { messageDetail = body.getString("messageDetail"); } - return new CancelationResponse(response.getStatus(),body.getString("status"),body.getString("message"),messageDetail); + return new CancelationResponse(statusE,body.getString("status"),body.getString("message"),messageDetail); } - } else { - return new CancelationResponse(response.getStatus(), "error", response.getStatusText(), response.getStatusText()); + }else{ + return new CancelationResponse(statusE, "error", responseB.getStatusLine().getReasonPhrase(), responseB.getStatusLine().getReasonPhrase()); + } - } catch (UnirestException ex) { - throw new GeneralException(404, "HOST DESCONOCIDO"); - } catch (JSONException e) { + + + } catch (JSONException e) { + throw new GeneralException(500, e.getMessage()); + } catch (UnsupportedEncodingException e) { + throw new GeneralException(500, e.getMessage()); + } catch (ClientProtocolException e) { + throw new GeneralException(500, e.getMessage()); + } catch (IOException e) { throw new GeneralException(500, e.getMessage()); } } @@ -69,44 +103,69 @@ public IResponse sendRequest(IRequest request, boolean isXml) throws GeneralExce try { String xmlStr = ((CancelationOptionsRequest) request).getXml(); + String hostProxy = ((CancelationOptionsRequest) request).getProxyHost(); + String portProxy = ((CancelationOptionsRequest) request).getPortHost(); String boundary = UUID.randomUUID().toString(); String raw = "--" + boundary + "\r\nContent-Disposition: form-data; name=xml; filename=xml\r\nContent-Type: application/xml\r\n\r\n" + xmlStr + "\r\n--" + boundary + "--"; - Unirest.setTimeouts(60000, 360000); - HttpResponse response = Unirest.post(request.URI) - .header("Authorization", "bearer " + request.Token) - .header("content-type", "multipart/form-data; boundary=" + boundary) - .body(raw).asJson(); - - if (!response.getBody().toString().equalsIgnoreCase("{}") && !response.getBody().equals("")) { - JSONObject body = new JSONObject(response.getBody().toString()); - - if (response.getStatus() == 200) { - + CloseableHttpClient client = HttpClients.createDefault(); + HttpPost httppost = new HttpPost(request.URI); + MultipartEntity entity = new MultipartEntity( HttpMultipartMode.BROWSER_COMPATIBLE ); + StringBody xmlcfdi = new StringBody(raw, Charset.forName( "UTF-8" )); + entity.addPart("xml",xmlcfdi); + httppost.setEntity(entity); + httppost.setHeader("Authorization", "bearer " + request.Token); + httppost.setHeader("Content-Type", "multipart/form-data; boundary="+boundary); + httppost.addHeader("Content-Disposition", "form-data; name=xml; filename=xml"); + + if( hostProxy !=null && portProxy != null){ + HttpHost proxy = new HttpHost(hostProxy, Integer.parseInt(portProxy), request.URI.split(":")[0]); + RequestConfig config = RequestConfig.custom() + .setProxy(proxy) + .build(); + httppost.setConfig(config); + } + CloseableHttpResponse responseB = client.execute(httppost); + + InputStream inputStream = responseB.getEntity().getContent(); + + Scanner s = new Scanner(inputStream).useDelimiter("\\A"); + String responseString = s.hasNext() ? s.next() : ""; + + int statusE = responseB.getStatusLine().getStatusCode(); + client.close(); + + if(!responseString.isEmpty()) { + JSONObject body = new JSONObject(responseString); + if(statusE==200){ JSONObject data = body.getJSONObject("data"); - String xml = ((CancelationOptionsRequest) request).getXml(); - String uuid = xml.substring(xml.indexOf("") + 6, xml.indexOf("")).toUpperCase(); JSONObject uuid_data = data.getJSONObject("uuid"); - String uuidSC = uuid_data.getString(uuid); - return new CancelationResponse(response.getStatus(), body.getString("status"), data.getString("acuse"), uuid, Integer.parseInt(uuidSC),"OK","OK"); - - } else { - - String messageDetail = null; + String uuid = (String) uuid_data.keys().next(); + int st_uuid = Integer.parseInt((String) uuid_data.get(uuid)); + return new CancelationResponse(statusE, body.getString("status"), data.getString("acuse"), uuid, st_uuid,"OK","OK"); + }else{ + String messageDetail = ""; if (!body.isNull("messageDetail")) { messageDetail = body.getString("messageDetail"); } - return new CancelationResponse(response.getStatus(),body.getString("status"),body.getString("message"),messageDetail); + return new CancelationResponse(statusE,body.getString("status"),body.getString("message"),messageDetail); } - } else { - return new CancelationResponse(response.getStatus(), "error", response.getStatusText(), response.getStatusText()); + }else{ + return new CancelationResponse(statusE, "error", responseB.getStatusLine().getReasonPhrase(), responseB.getStatusLine().getReasonPhrase()); + } - } catch (UnirestException e) { - throw new GeneralException(404, "HOST DESCONOCIDO"); - } catch (JSONException e) { + + + } catch (JSONException e) { + throw new GeneralException(500, e.getMessage()); + } catch (UnsupportedEncodingException e) { + throw new GeneralException(500, e.getMessage()); + } catch (ClientProtocolException e) { + throw new GeneralException(500, e.getMessage()); + } catch (IOException e) { throw new GeneralException(500, e.getMessage()); } diff --git a/src/test/java/Tests/Authentication/SWAuthenticationServiceTest.java b/src/test/java/Tests/Authentication/SWAuthenticationServiceTest.java index 2eaf057..b1ad31c 100644 --- a/src/test/java/Tests/Authentication/SWAuthenticationServiceTest.java +++ b/src/test/java/Tests/Authentication/SWAuthenticationServiceTest.java @@ -26,4 +26,19 @@ public void testAuth(){ e.printStackTrace(); } } + + public void testAuthProxy(){ + SWAuthenticationService auth = new SWAuthenticationService("demo","123456789","http://services.test.sw.com.mx","127.0.0.1","8888"); + try { + SuccessAuthResponse res = (SuccessAuthResponse) auth.Token(); + String expected = "success"; + System.out.println(res.token); + System.out.println(res.message); + System.out.println(res.messageDetail); + Assert.assertTrue(expected.equalsIgnoreCase(res.Status)); + } catch (Exception e) { + System.out.println(e.getMessage()); + e.printStackTrace(); + } + } } diff --git a/src/test/java/Tests/Cancelation/SWCancelationServiceTest.java b/src/test/java/Tests/Cancelation/SWCancelationServiceTest.java index e6b7bf7..3f32926 100644 --- a/src/test/java/Tests/Cancelation/SWCancelationServiceTest.java +++ b/src/test/java/Tests/Cancelation/SWCancelationServiceTest.java @@ -14,7 +14,7 @@ public class SWCancelationServiceTest extends TestCase { public String rfc = "LAN7008173R5"; public String b64Cer = "MIIFxTCCA62gAwIBAgIUMjAwMDEwMDAwMDAzMDAwMjI4MTUwDQYJKoZIhvcNAQELBQAwggFmMSAwHgYDVQQDDBdBLkMuIDIgZGUgcHJ1ZWJhcyg0MDk2KTEvMC0GA1UECgwmU2VydmljaW8gZGUgQWRtaW5pc3RyYWNpw7NuIFRyaWJ1dGFyaWExODA2BgNVBAsML0FkbWluaXN0cmFjacOzbiBkZSBTZWd1cmlkYWQgZGUgbGEgSW5mb3JtYWNpw7NuMSkwJwYJKoZIhvcNAQkBFhphc2lzbmV0QHBydWViYXMuc2F0LmdvYi5teDEmMCQGA1UECQwdQXYuIEhpZGFsZ28gNzcsIENvbC4gR3VlcnJlcm8xDjAMBgNVBBEMBTA2MzAwMQswCQYDVQQGEwJNWDEZMBcGA1UECAwQRGlzdHJpdG8gRmVkZXJhbDESMBAGA1UEBwwJQ295b2Fjw6FuMRUwEwYDVQQtEwxTQVQ5NzA3MDFOTjMxITAfBgkqhkiG9w0BCQIMElJlc3BvbnNhYmxlOiBBQ0RNQTAeFw0xNjEwMjUyMTUyMTFaFw0yMDEwMjUyMTUyMTFaMIGxMRowGAYDVQQDExFDSU5ERU1FWCBTQSBERSBDVjEaMBgGA1UEKRMRQ0lOREVNRVggU0EgREUgQ1YxGjAYBgNVBAoTEUNJTkRFTUVYIFNBIERFIENWMSUwIwYDVQQtExxMQU43MDA4MTczUjUgLyBGVUFCNzcwMTE3QlhBMR4wHAYDVQQFExUgLyBGVUFCNzcwMTE3TURGUk5OMDkxFDASBgNVBAsUC1BydWViYV9DRkRJMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAgvvCiCFDFVaYX7xdVRhp/38ULWto/LKDSZy1yrXKpaqFXqERJWF78YHKf3N5GBoXgzwFPuDX+5kvY5wtYNxx/Owu2shNZqFFh6EKsysQMeP5rz6kE1gFYenaPEUP9zj+h0bL3xR5aqoTsqGF24mKBLoiaK44pXBzGzgsxZishVJVM6XbzNJVonEUNbI25DhgWAd86f2aU3BmOH2K1RZx41dtTT56UsszJls4tPFODr/caWuZEuUvLp1M3nj7Dyu88mhD2f+1fA/g7kzcU/1tcpFXF/rIy93APvkU72jwvkrnprzs+SnG81+/F16ahuGsb2EZ88dKHwqxEkwzhMyTbQIDAQABox0wGzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIGwDANBgkqhkiG9w0BAQsFAAOCAgEAJ/xkL8I+fpilZP+9aO8n93+20XxVomLJjeSL+Ng2ErL2GgatpLuN5JknFBkZAhxVIgMaTS23zzk1RLtRaYvH83lBH5E+M+kEjFGp14Fne1iV2Pm3vL4jeLmzHgY1Kf5HmeVrrp4PU7WQg16VpyHaJ/eonPNiEBUjcyQ1iFfkzJmnSJvDGtfQK2TiEolDJApYv0OWdm4is9Bsfi9j6lI9/T6MNZ+/LM2L/t72Vau4r7m94JDEzaO3A0wHAtQ97fjBfBiO5M8AEISAV7eZidIl3iaJJHkQbBYiiW2gikreUZKPUX0HmlnIqqQcBJhWKRu6Nqk6aZBTETLLpGrvF9OArV1JSsbdw/ZH+P88RAt5em5/gjwwtFlNHyiKG5w+UFpaZOK3gZP0su0sa6dlPeQ9EL4JlFkGqQCgSQ+NOsXqaOavgoP5VLykLwuGnwIUnuhBTVeDbzpgrg9LuF5dYp/zs+Y9ScJqe5VMAagLSYTShNtN8luV7LvxF9pgWwZdcM7lUwqJmUddCiZqdngg3vzTactMToG16gZA4CWnMgbU4E+r541+FNMpgAZNvs2CiW/eApfaaQojsZEAHDsDv4L5n3M1CC7fYjE/d61aSng1LaO6T1mh+dEfPvLzp7zyzz+UgWMhi5Cs4pcXx1eic5r7uxPoBwcCTt3YI1jKVVnV7/w="; public String b64Key = "MIIFDjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIAgEAAoIBAQACAggAMBQGCCqGSIb3DQMHBAgwggS9AgEAMASCBMh4EHl7aNSCaMDA1VlRoXCZ5UUmqErAbucRBAKNQXH8t1GNfLDIQejtcocS39VvWnpNXjZJeCg65Y2wI36UGn78gvnU0NOmyUkXksPVrkz7hqNtAVojPUtN65l+MVAsIRVD6OLJeKZ2bLx5z78zrx6Tp1zCGT/NpxL+CJSy5iY6TKqbJcK/9198noOvT2p8rKVqUUF3wLRvD6R/b3BC5wCon/exp3BUTZeiWJqGRRgaW4rn49ZbJPVIcDmUO8mojPesFHjJDSnA0nBnWaUvTYXi0srT+dLZOewsBR8d5GdSWh9ZkM29wJbjYHCMsXkObZjaap3YM8fU29zRyZ8KAqaCnBHCfYjbib56m+Lmnk+ScqMkQQ+S/+2pzn2LzauvBI4p/OjQgBDeblo22X7sX9OA9YaqB3q6CCjQ5tkDNrz3HOgTm+amh/kI8TEn9rcKf4Ru7mC1T7VMaFgBqpIS8YJNbcgegF0IF1FpCS05wjdU5CktYAnPnvC+Pj+MFDeH+184kIHBWqPNG6dAzALxRgtKTlGdJ1l5Do+4EWI+0mvKojREnKoDczFnDeCFnM51u3I9Vce3rkf0djRQKFomPVUnPDqxlR5lDAssYAYNcECAkvGxKcBDbjWi/6NHlwjS1r28+0Jhvfxjx9O6hi4AW82Q2/kBE5P/eOwln/jKSbLgi7Iyim1FFHxkQH1FY5kcKhAzFcIq85rGFlzHRfPF9OIQSmONI9kcWQCxkk8aG1u1zwbjZRYLTxlwmZvynOgaWRpTN8Y4ReBDIG1klhva7nqqoM416oXBG71IKaCtjAwRlE6pgaqnIz/WQAb2FR541pqynX6dB6DB1nIWnatsWZJZlu+Bnhf9DBlUsO9ZSAf9Fa9nJAzwFCzaKIsvGJIeKSZ/h+vInkjaO/rxswErVROTfZy1lO2CJ/xnAgzFGrpDxNJPliv3McO9TGwYy/zHhE6Pdo8Xu6NsMisNU6TB8Bc26uLNv/7kWhNmNnBA1qt5akln6hOHrPBXGBiTNUL0IoFVPNdCbS0834zAYXfgtZLDzVpeLqmeMpqXbIYK0/NXe9etxuOcN40O+B/fTHHmO7dMgBZ4vAApVQUPr7ilumVHsWSMRP/0p5R9q4qr1bDm9S5YCPevdyYWTSceGSrXHmjYzJLBtpc/s77mynNqZEYjhnKk2XRNp6kp/FYRu+QdsX9vaDJbLKR2EnSC4fU6UOTO03IZU15j3wOsg30QrXoKntSJ/beF99cvFHuPrQPWxCtws0lLwkkHNVOm6XNO948Moy1w1pL4i68CwmceYZaYrYhmHGdLuescFQrZQaULDWhpK2Stys8Vs/XwwxNi9MHAFSXpdy/b+Aro5n87w+0MHRcllF8ZKbtQ/ym4oG7aREuo7o71JXJQPjZKTOtVM1EQx/FLM/5brnDSoyvLtoYtv9/tTnIC+8gR6eErkzaGmn8pftPhGNuz6yzx8JeLFoMD7VWbGTefj46KS+yMweFJnpReHEqwnukXpEYq19EWVyQa/Sb7navtKt80y/vRs0aNZp3iL23AOs0u1kQ1CFNY2y12Gor1koaH2FUd5jAQnaSKmgarLy0H/QVvR2g8B3+Fh49QhKYrd8N6LvvI80cwbEoqYWn5DWA="; - public String token = "T2lYQ0t4L0RHVkR4dHZ5Nkk1VHNEakZ3Y0J4Nk9GODZuRyt4cE1wVm5tbXB3YVZxTHdOdHAwVXY2NTdJb1hkREtXTzE3dk9pMmdMdkFDR2xFWFVPUXpTUm9mTG1ySXdZbFNja3FRa0RlYURqbzdzdlI2UUx1WGJiKzViUWY2dnZGbFloUDJ6RjhFTGF4M1BySnJ4cHF0YjUvbmRyWWpjTkVLN3ppd3RxL0dJPQ.T2lYQ0t4L0RHVkR4dHZ5Nkk1VHNEakZ3Y0J4Nk9GODZuRyt4cE1wVm5tbFlVcU92YUJTZWlHU3pER1kySnlXRTF4alNUS0ZWcUlVS0NhelhqaXdnWTRncklVSWVvZlFZMWNyUjVxYUFxMWFxcStUL1IzdGpHRTJqdS9Zakw2UGRiMTFPRlV3a2kyOWI5WUZHWk85ODJtU0M2UlJEUkFTVXhYTDNKZVdhOXIySE1tUVlFdm1jN3kvRStBQlpLRi9NeWJrd0R3clhpYWJrVUMwV0Mwd3FhUXdpUFF5NW5PN3J5cklMb0FETHlxVFRtRW16UW5ZVjAwUjdCa2g0Yk1iTExCeXJkVDRhMGMxOUZ1YWlIUWRRVC8yalFTNUczZXdvWlF0cSt2UW0waFZKY2gyaW5jeElydXN3clNPUDNvU1J2dm9weHBTSlZYNU9aaGsvalpQMUxrUndzK0dHS2dpTittY1JmR3o2M3NqNkh4MW9KVXMvUHhZYzVLQS9UK2E1SVhEZFJKYWx4ZmlEWDFuSXlqc2ZRYXlUQk1ldlZkU2tEdU10NFVMdHZKUURLblBxakw0SDl5bUxabDFLNmNPbEp6b3Jtd2Q1V2htRHlTdDZ6eTFRdUNnYnVvK2tuVUdhMmwrVWRCZi9rQkU9.7k2gVCGSZKLzJK5Ky3Nr5tKxvGSJhL13Q8W-YhT0uIo"; + public String token = "T2lYQ0t4L0RHVkR4dHZ5Nkk1VHNEakZ3Y0J4Nk9GODZuRyt4cE1wVm5tbXB3YVZxTHdOdHAwVXY2NTdJb1hkREtXTzE3dk9pMmdMdkFDR2xFWFVPUXpTUm9mTG1ySXdZbFNja3FRa0RlYURqbzdzdlI2UUx1WGJiKzViUWY2dnZGbFloUDJ6RjhFTGF4M1BySnJ4cHF0YjUvbmRyWWpjTkVLN3ppd3RxL0dJPQ.T2lYQ0t4L0RHVkR4dHZ5Nkk1VHNEakZ3Y0J4Nk9GODZuRyt4cE1wVm5tbFlVcU92YUJTZWlHU3pER1kySnlXRTF4alNUS0ZWcUlVS0NhelhqaXdnWTRncklVSWVvZlFZMWNyUjVxYUFxMWFxcStUL1IzdGpHRTJqdS9Zakw2UGRiMTFPRlV3a2kyOWI5WUZHWk85ODJtU0M2UlJEUkFTVXhYTDNKZVdhOXIySE1tUVlFdm1jN3kvRStBQlpLRi9NeWJrd0R3clhpYWJrVUMwV0Mwd3FhUXdpUFF5NW5PN3J5cklMb0FETHlxVFRtRW16UW5ZVjAwUjdCa2g0Yk1iTExCeXJkVDRhMGMxOUZ1YWlIUWRRVC8yalFTNUczZXdvWlF0cSt2UW0waFZKY2gyaW5jeElydXN3clNPUDNvU1J2dm9weHBTSlZYNU9aaGsvalpQMUxsekZtK1Q3N25hd09CZmJ1K2RMVlRkandoUmE3c2gvanFxTUkwQmtmYURMQ2o0WjVqajlhVXRFejFHTHpVN211dFl6cE9iTFFOV1JKZFJ2dDZnaytXNktncDVKa1hlVElzM2VUenNXQ1dnVU4zc05pM0cyaXZLYWsxMFlVbHE2d1ZpeWgxWTRIdGhibG1seXg4UllCMm89.uMq7ctwyL9rXfh06z5mJ5Co0WDvanjOiITzzQCFxDfQ"; public String xml = "3eaeabc9-ea41-4627-9609-c6856b78e2b1rs2ZcFnS9hbfmyJLmR3Mtnklt7g=O/I7ILsU2y1fqeb2NBZSQKlQC3DpN/bgcDB5LWCMIYp4mFCLmLxEq/6ADz0xVQWUw49BqWDZ1GAI4ODIZLDQtafHSIE7BXKy8huvKD1dtpRLQ/39IfpxXsz1g6Q14mH3LxDOQugk/GhKMWILXZnIipyQosv3IbgLMZ/V/4btK7xrFX/KiOt0PcefChyaerj9A815dA3J4JgpBUNzbOz9VlhvdZMJskrHxzZ5riU1TAuSw/oi68dJfA7S+6XrTmeFDQzYxACHyOzj24RjLi/31+Fc/wiqQXNu9O6oWl8p5+GVoz2xtU4aRqLxVh73L6WAAef/WDeKDMfIge1BtMrxYw==OID.1.2.840.113549.1.9.2=Responsable: ACDMA, OID.2.5.4.45=SAT970701NN3, L=Coyoac?n, S=Distrito Federal, C=MX, PostalCode=06300, STREET=\"Av. Hidalgo 77, Col. Guerrero\", E=asisnet@pruebas.sat.gob.mx, OU=Administraci?n de Seguridad de la Informaci?n, O=Servicio de Administraci?n Tributaria, CN=A.C. 2 de pruebas(4096)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"; //CSD diff --git a/src/test/java/Tests/Stamp/SWStampServiceTest.java b/src/test/java/Tests/Stamp/SWStampServiceTest.java index 4efe334..dc578b3 100644 --- a/src/test/java/Tests/Stamp/SWStampServiceTest.java +++ b/src/test/java/Tests/Stamp/SWStampServiceTest.java @@ -18,8 +18,11 @@ public class SWStampServiceTest extends TestCase { //STANDARD XML public void testStampREAL_XML_STRING_USER_PASSWORD_AUTH_V1() throws Exception { - SWStampService api = new SWStampService("T2lYQ0t4L0RHVkR4dHZ5Nkk1VHNEakZ3Y0J4Nk9GODZuRyt4cE1wVm5tbXB3YVZxTHdOdHAwVXY2NTdJb1hkREtXTzE3dk9pMmdMdkFDR2xFWFVPUXpTUm9mTG1ySXdZbFNja3FRa0RlYURqbzdzdlI2UUx1WGJiKzViUWY2dnZGbFloUDJ6RjhFTGF4M1BySnJ4cHF0YjUvbmRyWWpjTkVLN3ppd3RxL0dJPQ.T2lYQ0t4L0RHVkR4dHZ5Nkk1VHNEakZ3Y0J4Nk9GODZuRyt4cE1wVm5tbFlVcU92YUJTZWlHU3pER1kySnlXRTF4alNUS0ZWcUlVS0NhelhqaXdnWTRncklVSWVvZlFZMWNyUjVxYUFxMWFxcStUL1IzdGpHRTJqdS9Zakw2UGRiMTFPRlV3a2kyOWI5WUZHWk85ODJtU0M2UlJEUkFTVXhYTDNKZVdhOXIySE1tUVlFdm1jN3kvRStBQlpLRi9NeWJrd0R3clhpYWJrVUMwV0Mwd3FhUXdpUFF5NW5PN3J5cklMb0FETHlxVFRtRW16UW5ZVjAwUjdCa2g0Yk1iTExCeXJkVDRhMGMxOUZ1YWlIUWRRVC8yalFTNUczZXdvWlF0cSt2UW0waFZKY2gyaW5jeElydXN3clNPUDNvU1J2dm9weHBTSlZYNU9aaGsvalpQMUxsekZtK1Q3N25hd09CZmJ1K2RMVlRkandoUmE3c2gvanFxTUkwQmtmYURMQ2o0WjVqajlhVXRFejFHTHpVN211dFl6cE9iTFFOV1JKZFJ2dDZnaytXNktncDVKa1hlVElzM2VUenNXQ1dnVU4zc05pM0cyaXZLYWsxMFlVbHE2d1ZpeWgxWTRIdGhibG1seXg4UllCMm89.uMq7ctwyL9rXfh06z5mJ5Co0WDvanjOiITzzQCFxDfQ","http://services.test.sw.com.mx" - ,"127.0.0.1","8888"); + SWStampService api = new SWStampService( + "T2lYQ0t4L0RHVkR4dHZ5Nkk1VHNEakZ3Y0J4Nk9GODZuRyt4cE1wVm5tbXB3YVZxTHdOdHAwVXY2NTdJb1hkREtXTzE3dk9pMmdMdkFDR2xFWFVPUXpTUm9mTG1ySXdZbFNja3FRa0RlYURqbzdzdlI2UUx1WGJiKzViUWY2dnZGbFloUDJ6RjhFTGF4M1BySnJ4cHF0YjUvbmRyWWpjTkVLN3ppd3RxL0dJPQ.T2lYQ0t4L0RHVkR4dHZ5Nkk1VHNEakZ3Y0J4Nk9GODZuRyt4cE1wVm5tbFlVcU92YUJTZWlHU3pER1kySnlXRTF4alNUS0ZWcUlVS0NhelhqaXdnWTRncklVSWVvZlFZMWNyUjVxYUFxMWFxcStUL1IzdGpHRTJqdS9Zakw2UGRiMTFPRlV3a2kyOWI5WUZHWk85ODJtU0M2UlJEUkFTVXhYTDNKZVdhOXIySE1tUVlFdm1jN3kvRStBQlpLRi9NeWJrd0R3clhpYWJrVUMwV0Mwd3FhUXdpUFF5NW5PN3J5cklMb0FETHlxVFRtRW16UW5ZVjAwUjdCa2g0Yk1iTExCeXJkVDRhMGMxOUZ1YWlIUWRRVC8yalFTNUczZXdvWlF0cSt2UW0waFZKY2gyaW5jeElydXN3clNPUDNvU1J2dm9weHBTSlZYNU9aaGsvalpQMUxsekZtK1Q3N25hd09CZmJ1K2RMVlRkandoUmE3c2gvanFxTUkwQmtmYURMQ2o0WjVqajlhVXRFejFHTHpVN211dFl6cE9iTFFOV1JKZFJ2dDZnaytXNktncDVKa1hlVElzM2VUenNXQ1dnVU4zc05pM0cyaXZLYWsxMFlVbHE2d1ZpeWgxWTRIdGhibG1seXg4UllCMm89.uMq7ctwyL9rXfh06z5mJ5Co0WDvanjOiITzzQCFxDfQ", + "http://services.test.sw.com.mx", + "127.0.0.1", + "8888"); SuccessV4Response response = null; Utils ut = new Utils();