Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature/analytics #92

Merged
merged 5 commits into from
Nov 22, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions SW-sdk-45/Properties/AssemblyInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -32,5 +32,5 @@
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("0.0.16.2")]
[assembly: AssemblyFileVersion("0.0.16.2")]
[assembly: AssemblyVersion("0.0.16.3")]
[assembly: AssemblyFileVersion("0.0.16.3")]
3 changes: 2 additions & 1 deletion SW-sdk-45/Services/ResponseHandler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -176,7 +176,8 @@ internal virtual T TryGetResponse(HttpResponseMessage response)
{
if (response.StatusCode == HttpStatusCode.OK || response.StatusCode == HttpStatusCode.BadRequest)
{
return Newtonsoft.Json.JsonConvert.DeserializeObject<T>(response.Content.ReadAsStringAsync().Result);
var stringResult = response.Content.ReadAsStringAsync().Result;
return Newtonsoft.Json.JsonConvert.DeserializeObject<T>(stringResult);
}
else
return new T()
Expand Down
42 changes: 42 additions & 0 deletions SW-sdk-45/Services/Stamp/BaseStampV4XML.cs
Original file line number Diff line number Diff line change
Expand Up @@ -103,5 +103,47 @@ public virtual StampResponseV4 TimbrarV4(string xml, string email = null, string
}
return ConvertionHelper.ConvertV2ToV4Response(response);
}
public virtual StampResponseV4 TimbrarV4Analytics(string xml, string email = null, string customId = null, bool isb64 = false, string[] extras = null)
{
StampResponseHandlerV2XML handler = new StampResponseHandlerV2XML(xml);

var xmlBytes = Encoding.UTF8.GetBytes(xml);
var headers = GetHeaders(email, customId, extras);
var content = GetMultipartContent(xmlBytes);
var proxy = Helpers.RequestHelper.ProxySettings(this.Proxy, this.ProxyPort);
var response = handler.GetPostResponse(this.Url,
string.Format("v4/cfdi33/{0}/{1}/{2}",
"stamp",
StampTypes.v2.ToString(),
"analytics"), headers, content, proxy);
if (response.status == "error")
{
if (response.message == "CFDI3307 - Timbre duplicado. El customId proporcionado está duplicado.")
{
StorageResponseHandler storangeHandler = new StorageResponseHandler();
string uuid = XmlUtils.GetUUIDFromTFD(response.data.tfd);
var xmlFromStorange = storangeHandler.GetResponse(_apiUrl,
headers, $"datawarehouse/v1/live/{uuid}",
RequestHelper.ProxySettings(this.Proxy, this.ProxyPort));
var xmlStorange = xmlFromStorange.data.records.ElementAtOrDefault(0)?.urlXml;
if (string.IsNullOrEmpty(xmlStorange))
{
return new StampResponseV4()
{
data = null,
message = "No es posible obtener el url para descargar el XML",
status = "error",
messageDetail = "No esta disponible el URL de descarga del XML, intente más tarde"
};
}
var dataResult = DowloadFile.DowloadFileAsync(xmlStorange, RequestHelper.ProxySettings(this.Proxy, this.ProxyPort));
dataResult.data.tfd = response.data.tfd;
dataResult.message = response.message;
return ConvertionHelper.ConvertV2ToV4Response(dataResult);
}
return ConvertionHelper.ConvertV2ToV4Response(response);
}
return ConvertionHelper.ConvertV2ToV4Response(response);
}
}
}
4 changes: 2 additions & 2 deletions SW-sdk/Properties/AssemblyInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -32,5 +32,5 @@
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("0.0.16.2")]
[assembly: AssemblyFileVersion("0.0.16.2")]
[assembly: AssemblyVersion("0.0.16.3")]
[assembly: AssemblyFileVersion("0.0.16.3")]
72 changes: 72 additions & 0 deletions Test_SW-sdk-45/Services/Stamp/StampV4XML_test.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ namespace Test_SW.Services.Stamp_Test
public class StampV4XML_Test
{
[TestMethod]
[Ignore] //Debido a intermitencia en el servicio de storage.
public void Stamp_Test_StampV4XMLV2_SameCustomID_byToken_Ok()
{
string CustomId = Guid.NewGuid().ToString();
Expand All @@ -27,6 +28,7 @@ public void Stamp_Test_StampV4XMLV2_SameCustomID_byToken_Ok()
Assert.IsTrue(response.status == "error" && response.message == "CFDI3307 - Timbre duplicado. El customId proporcionado está duplicado.");
}
[TestMethod]
[Ignore] //Debido a intermitencia en el servicio de storage.
public void Stamp_Test_StampV4XMLV4_SameCustomID_byToken_Ok()
{
string CustomId = Guid.NewGuid().ToString();
Expand All @@ -43,6 +45,23 @@ public void Stamp_Test_StampV4XMLV4_SameCustomID_byToken_Ok()
Assert.IsTrue(response.status == "error" && response.message == "CFDI3307 - Timbre duplicado. El customId proporcionado está duplicado.");
}
[TestMethod]
[Ignore] //Debido a intermitencia en el servicio de storage.
public void Stamp_Test_StampV4XMLV4Analytics_SameCustomID_byToken_Ok()
{
string CustomId = Guid.NewGuid().ToString();
var build = new BuildSettings();
StampV4XML stamp = new StampV4XML(build.Url, build.UrlApi, build.Token);
var xml = GetXml(build, "file.xml");
var response = stamp.TimbrarV4Analytics(xml, null, CustomId);
Assert.IsTrue(response.data != null, "El resultado data viene vacio.");
Assert.IsTrue(!string.IsNullOrEmpty(response.data.cfdi), "El resultado data.cfdi viene vacio.");
System.Threading.Thread.Sleep(5000);
xml = GetXml(build, "file.xml");
response = stamp.TimbrarV4Analytics(xml, null, CustomId);
ValidateResponseV4(response);
Assert.IsTrue(response.status == "error" && response.message == "CFDI3307 - Timbre duplicado. El customId proporcionado está duplicado.");
}
[TestMethod]
public void Stamp_Test_StampV4XMLV2_SameCustomID_byToken_NoExistURLXML()
{
string CustomId = Guid.NewGuid().ToString();
Expand Down Expand Up @@ -71,6 +90,20 @@ public void Stamp_Test_StampV4XMLV4_SameCustomID_byToken_NoExistURLXML()
Assert.IsTrue(response.status == "error" && response.message == "No es posible obtener el url para descargar el XML");
}
[TestMethod]
public void Stamp_Test_StampV4XMLV4Analytics_SameCustomID_byToken_NoExistURLXML()
{
string CustomId = Guid.NewGuid().ToString();
var build = new BuildSettings();
StampV4XML stamp = new StampV4XML(build.Url, build.UrlApi, build.Token);
var xml = GetXml(build, "file.xml");
var response = stamp.TimbrarV4Analytics(xml, null, CustomId);
Assert.IsTrue(response.data != null, "El resultado data viene vacio.");
Assert.IsTrue(!string.IsNullOrEmpty(response.data.cfdi), "El resultado data.cfdi viene vacio.");
xml = GetXml(build, "file.xml");
response = stamp.TimbrarV4Analytics(xml, null, CustomId);
Assert.IsTrue(response.status == "error" && response.message == "No es posible obtener el url para descargar el XML");
}
[TestMethod]
public void Stamp_Test_StampV4XMLV2_DifCustomID_byToken()
{
string CustomIdfirstRequest = Guid.NewGuid().ToString();
Expand Down Expand Up @@ -101,6 +134,22 @@ public void Stamp_Test_StampV4XMLV4_DifCustomID_byToken()
Assert.IsTrue(response.status == "error" && response.message == "307. El comprobante contiene un timbre previo.");
}
[TestMethod]
public void Stamp_Test_StampV4XMLV4Analytics_DifCustomID_byToken()
{
string CustomIdfirstRequest = Guid.NewGuid().ToString();
string CustomIdSecondRequest = Guid.NewGuid().ToString();
var build = new BuildSettings();
BaseStampV4XML stamp = new StampV4XML(build.Url, build.UrlApi, build.Token);
var xml = GetXml(build, "file.xml");
var response = stamp.TimbrarV4Analytics(xml, null, CustomIdfirstRequest);
Assert.IsTrue(response.data != null, "El resultado data viene vacio.");
Assert.IsTrue(!string.IsNullOrEmpty(response.data.cfdi), "El resultado data.cfdi viene vacio.");
System.Threading.Thread.Sleep(5000);
response = stamp.TimbrarV4Analytics(xml, null, CustomIdSecondRequest);
ValidateResponseV4(response);
Assert.IsTrue(response.status == "error" && response.message == "307. El comprobante contiene un timbre previo.");
}
[TestMethod]
public void Stamp_Test_StampV4XMLV2_InvalidDate_byToken_Error()
{
string CustomIdfirstRequest = Guid.NewGuid().ToString();
Expand All @@ -125,6 +174,18 @@ public void Stamp_Test_StampV4XMLV4_InvalidDate_byToken_Error()
Assert.IsTrue(response.data is null);
}
[TestMethod]
public void Stamp_Test_StampV4XMLV4Analytics_InvalidDate_byToken_Error()
{
string CustomIdfirstRequest = Guid.NewGuid().ToString();
var build = new BuildSettings();
BaseStampV4XML stamp = new StampV4XML(build.Url, build.UrlApi, build.Token);
var xml = GetXml(build, "file.xml", false);
var response = (StampResponseV4)stamp.TimbrarV4Analytics(xml, null, CustomIdfirstRequest);
Assert.IsTrue(response.status == "error");
Assert.IsTrue(response.message == "401 - El rango de la fecha de generación no debe de ser mayor a 72 horas para la emisión del timbre.");
Assert.IsTrue(response.data is null);
}
[TestMethod]
public void Stamp_Test_StampV4XMLV2_InvalidCfdi_byToken_Error()
{
string CustomIdfirstRequest = Guid.NewGuid().ToString();
Expand All @@ -146,6 +207,17 @@ public void Stamp_Test_StampV4XMLV4_InvalidCfdi_byToken_Error()
Assert.IsTrue(response.status == "error");
Assert.IsTrue(response.data is null);
}
[TestMethod]
public void Stamp_Test_StampV4XMLV4Analytics_InvalidCfdi_byToken_Error()
{
string CustomIdfirstRequest = Guid.NewGuid().ToString();
var build = new BuildSettings();
BaseStampV4XML stamp = new StampV4XML(build.Url, build.UrlApi, build.Token);
var xml = GetXml(build, "error.xml");
var response = (StampResponseV4)stamp.TimbrarV4Analytics(xml, null, CustomIdfirstRequest);
Assert.IsTrue(response.status == "error");
Assert.IsTrue(response.data is null);
}
private string GetXml(BuildSettings build, string fileName, bool setDate = true)
{
var xml = Encoding.UTF8.GetString(File.ReadAllBytes(String.Format("Resources/{0}", fileName)));
Expand Down
1 change: 1 addition & 0 deletions Test_SW-sdk/Services/Stamp/StampV4XML_Test.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ namespace Test_SW.Services.StampV4XML_Test
public class StampV4XML_Test
{
[TestMethod]
[Ignore] //Debido a intermitencia en el servicio de storage.
public void Stamp_Test_StampV4XMLV4_SameCustomID_byTokenAsync()
{
string CustomId = Guid.NewGuid().ToString();
Expand Down