public void ConstructorGeneratesBytes() { //Arrange var message = new Forsendelse(DomainUtility.GetAvsender(), DomainUtility.GetDigitalPostInfoSimple(), DomainUtility.GetDokumentpakkeWithMultipleVedlegg()); var asiceArchive = DomainUtility.GetAsiceArchive(message); //Act var archiveBytes = asiceArchive.UnencryptedBytes; //Assert using (var memoryStream = new MemoryStream(archiveBytes)) { using (var archive = new ZipArchive(memoryStream, ZipArchiveMode.Read)) { Assert.True(archive.Entries.Any(entry => entry.FullName == "manifest.xml")); Assert.True(archive.Entries.Any(entry => entry.FullName == "META-INF/signatures.xml")); Assert.True(archive.Entries.Any(entry => entry.FullName == message.Dokumentpakke.Hoveddokument.Filnavn)); foreach (var document in message.Dokumentpakke.Vedlegg) { Assert.True(archive.Entries.Any(entry => entry.FullName == document.Filnavn)); } } } }
public void KonstruktørMedOptionalParametere() { //Arrange var prioritet = Prioritet.Normal; var mpcId = "mpcId"; var språkkode = "NO"; var forsendelse = new Forsendelse( DomainUtility.GetAvsender(), DomainUtility.GetDigitalPostInfoSimple(), DomainUtility.GetDokumentpakkeWithoutAttachments(), prioritet, mpcId, språkkode ); //Act //Assert Assert.NotNull(forsendelse.Avsender); Assert.NotNull(forsendelse.PostInfo); Assert.NotNull(forsendelse.Dokumentpakke); Assert.Equal(prioritet, forsendelse.Prioritet); Assert.Equal(mpcId, forsendelse.MpcId); Assert.Equal(språkkode, forsendelse.Språkkode); }
public void KonstruktørForIdentiskHash() { //Arrange var prioritet = Prioritet.Normal; var mpcId = "mpcId"; var språkkode = "NO"; var konversasjonsid = Guid.NewGuid(); var forsendelse = new Forsendelse( DomainUtility.GetAvsender(), DomainUtility.GetDigitalPostInfoSimple(), DomainUtility.GetDokumentpakkeWithoutAttachments(), konversasjonsid, prioritet, mpcId, språkkode); //Act //Assert Assert.Equal(konversasjonsid, forsendelse.KonversasjonsId); Assert.NotNull(forsendelse.Avsender); Assert.NotNull(forsendelse.PostInfo); Assert.NotNull(forsendelse.Dokumentpakke); Assert.Equal(prioritet, forsendelse.Prioritet); Assert.Equal(mpcId, forsendelse.MpcId); Assert.Equal(språkkode, forsendelse.Språkkode); }
public void VedleggTittelSkalSettesIManifestet() { //Arrange var resourceUtility = new ResourceUtility("Difi.SikkerDigitalPost.Klient.Tester.testdata"); var dokument = new Dokument("hoved", resourceUtility.ReadAllBytes(true, "hoveddokument", "Hoveddokument.pdf"), "application/pdf"); var vedleggTittel = "tittel"; var vedlegg = new Dokument(vedleggTittel, resourceUtility.ReadAllBytes(true, "hoveddokument", "Hoveddokument.pdf"), "application/pdf"); var dokumentPakke = new Dokumentpakke(dokument); dokumentPakke.LeggTilVedlegg(vedlegg); var message = new Forsendelse(DomainUtility.GetAvsender(), DomainUtility.GetDigitalPostInfoSimple(), dokumentPakke, Prioritet.Normal, Guid.NewGuid().ToString()); var asiceArkiv = DomainUtility.GetAsiceArchive(message); var manifestXml = new Manifest(message).Xml(); var namespaceManager = new XmlNamespaceManager(manifestXml.NameTable); namespaceManager.AddNamespace("ns9", NavneromUtility.DifiSdpSchema10); namespaceManager.AddNamespace("ds", NavneromUtility.XmlDsig); //Act //Assert var vedleggNodeInnerText = manifestXml.DocumentElement.SelectSingleNode("//ns9:vedlegg", namespaceManager).InnerText; Assert.Equal(vedleggTittel, vedleggNodeInnerText); }
public SmokeTestsHelper Create_digital_forsendelse_with_different_sender() { _forsendelse = DomainUtility.GetForsendelseSimple(); _forsendelse.Avsender = new Avsender("984661185") {Avsenderidentifikator = "digipost"}; return this; }
public void Prosesser(Forsendelse signatureJob, Stream bundleStream) { if (signatureJob == null || !bundleStream.CanRead) { throw new InvalidDataException("Properties not properly initialized in wrapping class."); } }
public void OppretteForsendelse() { var hoveddokument = new Dokument( tittel: "Dokumenttittel", dokumentsti: "/Dokumenter/Hoveddokument.pdf", mimeType: "application/pdf", språkkode: "NO", filnavn: "filnavn" ); var dokumentpakke = new Dokumentpakke(hoveddokument); var vedleggssti = "/Dokumenter/Vedlegg.pdf"; var vedlegg = new Dokument( tittel: "tittel", dokumentsti: vedleggssti, mimeType: "application/pdf", språkkode: "NO", filnavn: "filnavn"); dokumentpakke.LeggTilVedlegg(vedlegg); Avsender avsender = null; //Som initiert tidligere PostInfo postInfo = null; //Som initiert tidligere var forsendelse = new Forsendelse(avsender,postInfo,dokumentpakke); }
/// <summary> /// Settings for DigitalPostForsendelse /// </summary> public EnvelopeSettings(Forsendelse forsendelse, AsicEArkiv asicEArkiv, Databehandler databehandler, GuidUtility guidHandler, Klientkonfigurasjon konfigurasjon) { Forsendelse = forsendelse; AsicEArkiv = asicEArkiv; Databehandler = databehandler; GuidHandler = guidHandler; Konfigurasjon = konfigurasjon; }
/// <summary> /// Settings for DigitalPostForsendelse /// </summary> public EnvelopeSettings(Forsendelse forsendelse, DocumentBundle documentBundle, Databehandler databehandler, GuidUtility guidUtility, Klientkonfigurasjon konfigurasjon) { Forsendelse = forsendelse; DocumentBundle = documentBundle; Databehandler = databehandler; GuidUtility = guidUtility; Konfigurasjon = konfigurasjon; }
public void Prosesser(Forsendelse forsendelse, Stream bundleStream) { LastFileProcessed = FileNameWithTimeStamp(forsendelse.KonversasjonsId.ToString()); using (var fileStream = File.Create(Path.Combine(Directory, LastFileProcessed))) { bundleStream.CopyTo(fileStream); } }
public void Prosesser(Forsendelse forsendelse, Stream bundleStream) { Initialposition = bundleStream.Position; CouldReadBytesStream = bundleStream.CanRead; StreamLength = bundleStream.Length; DoSomeStreamMessing(bundleStream); }
public AsicEArkiv(Forsendelse forsendelse, GuidUtility guidHandler, X509Certificate2 avsenderSertifikat) { Manifest = new Manifest(forsendelse); Signatur = new Signatur(forsendelse, Manifest, avsenderSertifikat); _forsendelse = forsendelse; _dokumentpakke = _forsendelse.Dokumentpakke; _guidHandler = guidHandler; }
private void SendDokumentpakke(SikkerDigitalPostKlient sikkerDigitalPostKlient, Forsendelse forsendelse) { var transportkvittering = sikkerDigitalPostKlient.Send(forsendelse); if (transportkvittering.GetType() == typeof(TransportFeiletKvittering)) { var feilmelding = ((TransportFeiletKvittering)transportkvittering).Beskrivelse; Assert.Fail(feilmelding); } }
public void ThrowsExceptionOnInvalidManifest() { //Arrange const string invalidFileNameNotFourCharacters = "T"; var asiceConfiguration = new Klientkonfigurasjon(Miljø.FunksjoneltTestmiljø); var dokumentpakkeUtenVedlegg = new Dokumentpakke(new Dokument("", new byte[3], "application/pdf", "nb", invalidFileNameNotFourCharacters)); var forsendelse = new Forsendelse(new Avsender("123456789"), DomainUtility.GetDigitalPostInfoSimple(), dokumentpakkeUtenVedlegg, Guid.NewGuid()); //Act Assert.Throws<XmlValidationException>(() => AsiceGenerator.Create(forsendelse, new GuidUtility(), DomainUtility.GetAvsenderCertificate(), asiceConfiguration) ); }
public void EnkelKonstruktør() { //Arrange var forsendelse = new Forsendelse( DomainUtility.GetAvsender(), DomainUtility.GetDigitalPostInfoSimple(), DomainUtility.GetDokumentpakkeWithoutAttachments() ); //Act //Assert Assert.NotNull(forsendelse.Avsender); Assert.NotNull(forsendelse.PostInfo); Assert.NotNull(forsendelse.Dokumentpakke); }
private static async void SendPost(SikkerDigitalPostKlient _sikkerDigitalPostKlient, Forsendelse forsendelse) { Transportkvittering transportkvittering = await _sikkerDigitalPostKlient.SendAsync(forsendelse); Console.WriteLine(" > Post sendt. Status er ..."); if (transportkvittering.GetType() == typeof(TransportOkKvittering)) { WriteToConsoleWithColor(" > OK! En transportkvittering ble hentet og alt gikk fint."); } if (transportkvittering.GetType() == typeof(TransportFeiletKvittering)) { var feiletkvittering = (TransportFeiletKvittering)transportkvittering; WriteToConsoleWithColor(String.Format(" > {0}. Nå gikk det galt her. {1}", feiletkvittering.Alvorlighetsgrad, feiletkvittering.Beskrivelse), true); } }
private static async void SendPost(SikkerDigitalPostKlient sikkerDigitalPostKlient, Forsendelse forsendelse) { var transportkvittering = await sikkerDigitalPostKlient.SendAsync(forsendelse).ConfigureAwait(false); Log.Debug(@" > Post sendt. Status er ..."); if (transportkvittering.GetType() == typeof (TransportOkKvittering)) { WriteToConsoleWithColor(" > OK! En transportkvittering ble hentet og alt gikk fint."); } if (transportkvittering.GetType() == typeof (TransportFeiletKvittering)) { var feiletkvittering = (TransportFeiletKvittering) transportkvittering; WriteToConsoleWithColor( $" > {feiletkvittering.Alvorlighetsgrad}. Nå gikk det galt her. {feiletkvittering.Beskrivelse}", true); } }
public void SuccessfullySetsLanguageOnDocumentsWithNoLanguageCodeFromMessage() { //Arrange var sender = DomainUtility.GetAvsender(); var simpleDigitalPostInfo = DomainUtility.GetDigitalPostInfoSimple(); string undefinedLanguageCode = null; var primaryDocument = new Dokument("Tiitle", new byte[3], "application/pdf", undefinedLanguageCode); var documentBundle = new Dokumentpakke(primaryDocument); var definedLanguageCode = "en"; documentBundle.LeggTilVedlegg(new Dokument("Appendix", new byte[2], "application/pdf", definedLanguageCode)); var messageLanguageCode = "no"; //Act var forsendelse = new Forsendelse(sender, simpleDigitalPostInfo, documentBundle, Prioritet.Normal, "mpcId", messageLanguageCode); //Assert Assert.Equal(messageLanguageCode, documentBundle.Hoveddokument.Språkkode); Assert.Equal(definedLanguageCode, documentBundle.Vedlegg.First().Språkkode); }
internal static DocumentBundle Create(Forsendelse forsendelse, GuidUtility guidUtility, X509Certificate2 senderCertificate, IAsiceConfiguration asiceConfiguration) { var manifest = new Manifest(forsendelse); ValidateXmlAndThrowIfInvalid(manifest.Xml(), "Manifest"); var signature = new Signature(forsendelse, manifest, senderCertificate); ValidateXmlAndThrowIfInvalid(signature.Xml(), "Signatur"); var asiceAttachables = new List<IAsiceAttachable>(); asiceAttachables.AddRange(forsendelse.Dokumentpakke.Vedlegg); asiceAttachables.Add(forsendelse.Dokumentpakke.Hoveddokument); asiceAttachables.Add(manifest); asiceAttachables.Add(signature); var asiceAttachableProcessors = ConvertDocumentBundleProcessorsToAsiceAttachableProcessors(forsendelse, asiceConfiguration); var asiceArchive = new AsiceArchive(forsendelse.PostInfo.Mottaker.Sertifikat, guidUtility, asiceAttachableProcessors, asiceAttachables.ToArray()); return new DocumentBundle(asiceArchive.Bytes, asiceArchive.UnzippedContentBytesCount, asiceArchive.ContentId); }
public void SendDigitaltPåVegneAvIntegrasjon() { //Arrange const string testDepartementetAvsenderOrgnummer = "987656789"; const string postenDatabehandlerOrgnummer = "984661185"; var avsender = new Avsender(testDepartementetAvsenderOrgnummer); var databehandler = new Databehandler(postenDatabehandlerOrgnummer, DomeneUtility.GetAvsenderSertifikat()); var forsendelse = new Forsendelse(avsender, DomeneUtility.GetDigitalPostInfoEnkel(), DomeneUtility.GetDokumentpakkeUtenVedlegg(), Prioritet.Normal, Guid.NewGuid().ToString()); var klientKonfig = new Klientkonfigurasjon { MeldingsformidlerUrl = new Uri(Settings.Default.UrlMeldingsformidler), LoggXmlTilFil = true }; //Act var sdpKlient = new SikkerDigitalPostKlient(databehandler, klientKonfig); var transportkvittering = sdpKlient.Send(forsendelse, true); //Assert Assert.IsNotNull(transportkvittering); var kvittering = HentKvitteringOgBekreft(sdpKlient, "Send digital paa vegne av", forsendelse); Assert.IsTrue(kvittering is Leveringskvittering, "Klarte ikke hente kvittering eller feilet kvittering"); }
/// <summary> /// Sender en forsendelse til meldingsformidler. Dersom noe feilet i sendingen til meldingsformidler, vil det kastes en exception. /// </summary> /// <param name="forsendelse">Et objekt som har all informasjon klar til å kunne sendes (mottakerinformasjon, sertifikater, vedlegg mm), enten digitalt eller fysisk.</param> /// <param name="lagreDokumentpakke">Hvis satt til true, så lagres dokumentpakken på Klientkonfigurasjon.StandardLoggSti.</param> public async Task<Transportkvittering> SendAsync(Forsendelse forsendelse, bool lagreDokumentpakke = false) { Logging.Log(TraceEventType.Information, forsendelse.KonversasjonsId, "Sender ny forsendelse til meldingsformidler."); var guidHandler = new GuidUtility(); var arkiv = LagAsicEArkiv(forsendelse, lagreDokumentpakke, guidHandler); var forretningsmeldingEnvelope = LagForretningsmeldingEnvelope(forsendelse, arkiv, guidHandler); Logg(TraceEventType.Verbose, forsendelse.KonversasjonsId, arkiv.Signatur.Xml().OuterXml, true, true, "Sendt - Signatur.xml"); Logg(TraceEventType.Verbose, forsendelse.KonversasjonsId, arkiv.Manifest.Xml().OuterXml, true, true, "Sendt - Manifest.xml"); Logg(TraceEventType.Verbose, forsendelse.KonversasjonsId, forretningsmeldingEnvelope.Xml().OuterXml, true, true, "Sendt - Envelope.xml"); try { ValiderForretningsmeldingEnvelope(forretningsmeldingEnvelope.Xml()); ValiderArkivManifest(arkiv.Manifest.Xml()); ValiderArkivSignatur(arkiv.Signatur.Xml()); } catch (Exception e) { throw new Exception("Sending av forsendelse feilet under validering. Feilmelding: " + e.GetBaseException(), e.InnerException); } var soapContainer = LagSoapContainer(forretningsmeldingEnvelope, arkiv); var meldingsformidlerRespons = await SendSoapContainer(soapContainer); Logg(TraceEventType.Verbose, forsendelse.KonversasjonsId, meldingsformidlerRespons, true, true, "Mottatt - Meldingsformidlerespons.txt"); Logg(TraceEventType.Verbose, forsendelse.KonversasjonsId, new byte[1], true,false, "Sendt - SOAPContainer.txt"); Logging.Log(TraceEventType.Information, forsendelse.KonversasjonsId, "Kvittering for forsendelse" + Environment.NewLine + meldingsformidlerRespons); return ValiderTransportkvittering(meldingsformidlerRespons, forretningsmeldingEnvelope.Xml(), guidHandler); }
/// <summary> /// Sender en forsendelse til meldingsformidler. Dersom noe feilet i sendingen til meldingsformidler, vil det kastes en exception. /// </summary> /// <param name="forsendelse">Et objekt som har all informasjon klar til å kunne sendes (mottakerinformasjon, sertifikater, vedlegg mm), enten digitalt eller fysisk.</param> /// <param name="lagreDokumentpakke">Hvis satt til true, så lagres dokumentpakken på Klientkonfigurasjon.StandardLoggSti.</param> public Transportkvittering Send(Forsendelse forsendelse, bool lagreDokumentpakke = false) { return SendAsync(forsendelse, lagreDokumentpakke).Result; }
private AsicEArkiv LagAsicEArkiv(Forsendelse forsendelse, bool lagreDokumentpakke, GuidUtility guidHandler) { var arkiv = new AsicEArkiv(forsendelse, guidHandler, _databehandler.Sertifikat); if (lagreDokumentpakke) { arkiv.LagreTilDisk(_klientkonfigurasjon.StandardLoggSti, "dokumentpakke", DateUtility.DateForFile() + " - Dokumentpakke.zip"); } return arkiv; }
private static Forsendelse GenererForsendelse(Avsender avsender, PostInfo postInfo) { var resourceUtility = new ResourceUtility("Difi.SikkerDigitalPost.Klient.Testklient.Resources"); var hoveddokument = resourceUtility.ReadAllBytes(true, "Hoveddokument.pdf"); var vedlegg = resourceUtility.ReadAllBytes(true, "Vedlegg.txt"); //Forsendelse var dokumentpakke = new Dokumentpakke(new Dokument("Sendt" + DateTime.Now, hoveddokument, "application/pdf", "NO", "OWASP TOP 10.pdf")); dokumentpakke.LeggTilVedlegg(new Dokument("Vedlegg", vedlegg, "text/plain", "NO", "Vedlegg.txt")); var forsendelse = new Forsendelse(avsender, postInfo, dokumentpakke, Prioritet.Prioritert, MpcId); return forsendelse; }
public SmokeTestsHelper Create_Physical_Forsendelse() { _forsendelse = DomainUtility.GetFysiskPostSimple(); return this; }
public SmokeTestsHelper Create_Digital_Forsendelse_with_multiple_documents() { _forsendelse = DomainUtility.GetDigitalDigitalPostWithNotificationMultipleDocumentsAndHigherSecurity(3); return this; }
public Manifest(Forsendelse forsendelse) { Forsendelse = forsendelse; Avsender = forsendelse.Avsender; }
/// <summary> /// Sender en <see cref="Forsendelse" /> til Meldingsformidler. /// </summary> /// <param name="forsendelse"> /// All informasjon, klar til å kunne sendes (mottakerinformasjon, sertifikater, /// vedlegg mm), enten digitalt eller fysisk. /// </param> public Transportkvittering Send(Forsendelse forsendelse) { return SendAsync(forsendelse).Result; }
/// <summary> /// Sender en <see cref="Forsendelse" /> til Meldingsformidler. /// </summary> /// <param name="forsendelse"> /// All informasjon, klar til å kunne sendes (mottakerinformasjon, sertifikater, /// vedlegg mm), enten digitalt eller fysisk. /// </param> public async Task<Transportkvittering> SendAsync(Forsendelse forsendelse) { var guidUtility = new GuidUtility(); Log.Debug($"Utgående forsendelse, conversationId '{forsendelse.KonversasjonsId}', messageId '{guidUtility.MessageId}'."); var documentBundle = AsiceGenerator.Create(forsendelse, guidUtility, Databehandler.Sertifikat, Klientkonfigurasjon); var forretningsmeldingEnvelope = new ForretningsmeldingEnvelope(new EnvelopeSettings(forsendelse, documentBundle, Databehandler, guidUtility, Klientkonfigurasjon)); ValidateEnvelopeAndThrowIfInvalid(forretningsmeldingEnvelope, forretningsmeldingEnvelope.GetType().Name); var transportReceipt = (Transportkvittering) await RequestHelper.SendMessage(forretningsmeldingEnvelope, documentBundle).ConfigureAwait(false); transportReceipt.AntallBytesDokumentpakke = documentBundle.BillableBytes; var transportReceiptXml = XmlUtility.TilXmlDokument(transportReceipt.Rådata); if (transportReceipt is TransportOkKvittering) { Log.Debug($"{transportReceipt}"); var responsvalidator = new ResponseValidator(forretningsmeldingEnvelope.Xml(), transportReceiptXml, Klientkonfigurasjon.Miljø.CertificateChainValidator); responsvalidator.ValidateTransportReceipt(guidUtility); } else { Log.Error($"{transportReceipt}"); } return transportReceipt; }
private ForretningsmeldingEnvelope LagForretningsmeldingEnvelope(Forsendelse forsendelse, AsicEArkiv arkiv, GuidUtility guidHandler) { var forretningsmeldingEnvelope = new ForretningsmeldingEnvelope(new EnvelopeSettings(forsendelse, arkiv, _databehandler, guidHandler, _klientkonfigurasjon)); return forretningsmeldingEnvelope; }