Export/Ebics: Add Tests to validate against schemas and fix issues
This commit is contained in:
113
Tests/HelperTests/EbicsTest.cs
Normal file
113
Tests/HelperTests/EbicsTest.cs
Normal file
@ -0,0 +1,113 @@
|
||||
using Elwig.Helpers;
|
||||
using Elwig.Helpers.Export;
|
||||
using Elwig.Models.Dtos;
|
||||
using Elwig.Models.Entities;
|
||||
using System.Reflection;
|
||||
using System.Xml;
|
||||
|
||||
namespace Tests.HelperTests {
|
||||
// see https://www.iso20022.org/iso-20022-message-definitions
|
||||
// and https://www.iso20022.org/catalogue-messages/iso-20022-messages-archive?search=pain
|
||||
[TestFixture]
|
||||
public class EbicsTest {
|
||||
|
||||
public static readonly string FileName = Path.Combine(Path.GetTempPath(), "test_ebics.xml");
|
||||
public static readonly string Iban = "AT123456789012345678";
|
||||
|
||||
private static void ValidateSchema(string xmlPath, int version) {
|
||||
XmlDocument xml = new();
|
||||
xml.Load(xmlPath);
|
||||
var schema = new XmlTextReader(Assembly.GetExecutingAssembly()
|
||||
.GetManifestResourceStream($"Tests.Resources.Schemas.pain.001.001.{version:00}.xsd")!);
|
||||
xml.Schemas.Add(null, schema);
|
||||
xml.Validate(null);
|
||||
}
|
||||
|
||||
private static async Task CreateXmlFile(int version) {
|
||||
var v = new PaymentVar() {
|
||||
Year = 2020,
|
||||
AvNr = 1,
|
||||
Name = "Endauszahlung",
|
||||
TransferDate = new DateOnly(2021, 6, 15),
|
||||
};
|
||||
using var ctx = new AppDbContext();
|
||||
var members = ctx.Members.ToList();
|
||||
Assert.That(members, Has.Count.GreaterThan(0));
|
||||
using var exporter = new Ebics(v, FileName, version);
|
||||
await exporter.ExportAsync(members.Select(m => new Transaction(m, 1234.56m, "EUR", m.MgNr % 100)));
|
||||
}
|
||||
|
||||
[TearDown]
|
||||
public static void RemoveXmlFile() {
|
||||
File.Delete(FileName);
|
||||
}
|
||||
|
||||
[Test]
|
||||
[Ignore("Version has no need to be supported")]
|
||||
public async Task Test_CustomerCreditTransferInitiationV01() {
|
||||
await CreateXmlFile(1);
|
||||
Assert.DoesNotThrow(() => ValidateSchema(FileName, 1));
|
||||
}
|
||||
|
||||
[Test]
|
||||
[Ignore("Version has no need to be supported")]
|
||||
public async Task Test_CustomerCreditTransferInitiationV02() {
|
||||
await CreateXmlFile(2);
|
||||
Assert.DoesNotThrow(() => ValidateSchema(FileName, 2));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task Test_CustomerCreditTransferInitiationV03() {
|
||||
await CreateXmlFile(3);
|
||||
Assert.DoesNotThrow(() => ValidateSchema(FileName, 3));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task Test_CustomerCreditTransferInitiationV04() {
|
||||
await CreateXmlFile(4);
|
||||
Assert.DoesNotThrow(() => ValidateSchema(FileName, 4));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task Test_CustomerCreditTransferInitiationV05() {
|
||||
await CreateXmlFile(5);
|
||||
Assert.DoesNotThrow(() => ValidateSchema(FileName, 5));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task Test_CustomerCreditTransferInitiationV06() {
|
||||
await CreateXmlFile(6);
|
||||
Assert.DoesNotThrow(() => ValidateSchema(FileName, 6));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task Test_CustomerCreditTransferInitiationV07() {
|
||||
await CreateXmlFile(7);
|
||||
Assert.DoesNotThrow(() => ValidateSchema(FileName, 7));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task Test_CustomerCreditTransferInitiationV08() {
|
||||
await CreateXmlFile(8);
|
||||
Assert.DoesNotThrow(() => ValidateSchema(FileName, 8));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task Test_CustomerCreditTransferInitiationV09() {
|
||||
await CreateXmlFile(9);
|
||||
Assert.DoesNotThrow(() => ValidateSchema(FileName, 9));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task Test_CustomerCreditTransferInitiationV10() {
|
||||
await CreateXmlFile(10);
|
||||
Assert.DoesNotThrow(() => ValidateSchema(FileName, 10));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task Test_CustomerCreditTransferInitiationV11() {
|
||||
await CreateXmlFile(11);
|
||||
Assert.DoesNotThrow(() => ValidateSchema(FileName, 11));
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user