public async Task TestInvoiceHashMismatchShouldReturnFalse() { var dltPayload = new InvoicePayload(Encoding.UTF8.GetBytes("Somebody once told me"), Encoding.UTF8.GetBytes("the world is gonna roll me")); var invoiceRepository = new Mock <IInvoiceRepository>(); invoiceRepository.Setup(i => i.LoadInvoiceInformationAsync(It.IsAny <Hash>())).ReturnsAsync(dltPayload); var verificator = new InvoiceVerificator(invoiceRepository.Object, new Mock <IKvkRepository>().Object); Assert.IsFalse(await verificator.IsValid(new Invoice { Hash = Hash.Empty, KvkNumber = "123456789", Payload = Encoding.UTF8.GetBytes("Somebody once") })); }
public async Task SetupAsync() { var invoiceRepository = new IotaInvoiceRepository(IotaRepository); var kvkRepository = new RestKvkRepository(new RestClient("https://localhost:44381")); //var companyKeys = Encryption.Create(); //var document = Encoding.UTF8.GetBytes("NL63ABNA0265980487"); //var bundleHash = await invoiceRepository.PublishInvoiceHashAsync(document, companyKeys); //await kvkRepository.RegisterCompanyPublicKeyAsync("401196200", companyKeys); var parsedInvoice = await ImageParser.Parse("C:\\Projects\\Odyssey\\IMG_20190413_170510.jpg"); parsedInvoice.Hash = new Hash("EJKEGJVZVBCPWWSBCGGJUFNSXLVAPJSIUOUHEILDEIL9QTKZPKBIUWMHPALQDQ9IDWJEJCZSSBSPKVGB9"); parsedInvoice.KvkNumber = "401196200"; var invoiceVerificator = new InvoiceVerificator(invoiceRepository, kvkRepository); var result = await invoiceVerificator.IsValid(parsedInvoice); }
public async Task TestSignatureMatchShouldReturnTrue() { var invoice = new Invoice { Hash = Hash.Empty, KvkNumber = "123456789", Payload = Encoding.UTF8.GetBytes("Somebody once told me") }; var signatureScheme = Encryption.CreateSignatureScheme(Encryption.Create()); var dltPayload = new InvoicePayload(DocumentHash.Create(invoice.Payload), signatureScheme.SignData(invoice.Payload)); var invoiceRepository = new Mock <IInvoiceRepository>(); invoiceRepository.Setup(i => i.LoadInvoiceInformationAsync(It.IsAny <Hash>())).ReturnsAsync(dltPayload); var kvkRepository = new Mock <IKvkRepository>(); kvkRepository.Setup(k => k.GetCompanyPublicKeyAsync(It.IsAny <string>())) .ReturnsAsync(signatureScheme.Key.Export(CngKeyBlobFormat.EccFullPublicBlob)); var verificator = new InvoiceVerificator(invoiceRepository.Object, kvkRepository.Object); Assert.IsTrue(await verificator.IsValid(invoice)); }