static void SendPrintableMessage(string ssn, string msgId, string msgText) { Console.WriteLine("--- Sending the printable test message to Viestit-Service (but not to printing) ---"); Console.WriteLine(" * Press enter to confirm action *"); Console.ReadLine(); var msg = new PrintableViestitMessage { SocialSecurityNumber = ssn, Id = msgId + "-1", Topic = "TestiViesti", SenderName = "HubClientTestingSoftware", Text = msgText, MsgId = "123", File = new ViestitMessageFile // Hardcoded file just to make sure everything works { Content = Base64Files.PDF, ContentType = "application/pdf", Name = "PDF-kirje.pdf", Size = 40 }, TestingOnlyDoNotSendPrinted = true, // NOTE: Very important to keep this true Address = new AddressInformation { RecipientName = "Testi Vastaanottaja", StreetAddress = "Testi Osoite Ei Ole Olemassa", PostalCode = "00000", City = "Testikaupunki", CountryCode = "FI" }, PrintingProvider = "Edita" // NOTE: Has to be a valid provider }; var msgState = _client.SendPrintableMessageToViestit(new List <PrintableViestitMessage> { msg }).GetAwaiter().GetResult(); Console.WriteLine(JsonConvert.SerializeObject(msgState[0]) + Environment.NewLine); }
public async void TestSendPrintableMessage(bool?sendToPrinting) { // ARRANGE const string ssn = "123456-7890"; const MessageStateCode msgCode = MessageStateCode.SuccessButInProcess; const string msgCodeDescription = "Asia on tallennettuna ja näkyy asiakkaalle."; const string sentMsgId = "SPAv2-1234-test"; const long timeStamp = 1568615412083; const string sanomaTunniste = "123-123"; // request const string sentMsgNumber = "ViestinTunniste"; const string sentTopic = "Otsikko"; const string sentName = "Lähettäjänimi"; const string sentText = "Sisältötekstiä."; const string recipientName = "Maisa Testaaja"; const string streetAddress = "Lähitie 123 a 36"; const string postalCode = "12345"; const string city = "Betonila"; const string countryCode = "FI"; const string printingProvider = "Printtifirma"; var file = new ViestitMessageFile { Name = "Filename", Size = 10, Content = "Base64 text", ContentType = "application/pdf" }; var printableMessage = new PrintableViestitMessage { SocialSecurityNumber = ssn, Id = sentMsgId, File = file, MsgId = sentMsgNumber, Topic = sentTopic, SenderName = sentName, Text = sentText, Address = new AddressInformation { RecipientName = recipientName, StreetAddress = streetAddress, PostalCode = postalCode, City = city, CountryCode = countryCode }, PrintingProvider = printingProvider }; if (sendToPrinting.HasValue) { printableMessage.TestingOnlyDoNotSendPrinted = sendToPrinting.Value; } // response dynamic responseMessage = new JObject(); responseMessage.aikaleima = timeStamp; responseMessage.tilaKoodi = msgCode; responseMessage.tilaKoodiKuvaus = msgCodeDescription; responseMessage.sanomaTunniste = sanomaTunniste; var mockResponse = new HttpResponseMessage(HttpStatusCode.OK) { Content = new StringContent(responseMessage.ToString()) }; var client = GetClient(mockResponse); // ACT var responseData = await client.SendPrintableMessageToViestit(new List <PrintableViestitMessage> { printableMessage }); // ASSERT Func <HttpContent, bool> requestContainsCorrectData = content => { var data = JsonConvert.DeserializeObject <dynamic>(content.ReadAsStringAsync().Result); return(data.asiakasTunnus == ssn && data.osoiteNimi == recipientName && data.osoiteLahiosoite == streetAddress && data.osoitePostinumero == postalCode && data.osoitePostitoimipaikka == city && data.osoiteMaakoodi == countryCode && data.tiedostot.Count == 1 && data.viranomaisTunniste == sentMsgId && data.asiaNumero == sentMsgNumber && data.nimeke == sentTopic && data.lahettajaNimi == sentName && data.kuvausTeksti == sentText && data.lukuKuittaus == false && data.vastaanottoVahvistus == false && data.paperi == false && data.lahetaTulostukseen == !(sendToPrinting ?? false)); // NOTE: Default must be true! }; Assert.Equal(responseData[0].StateCode, msgCode); Assert.Equal(responseData[0].StateDescription, msgCodeDescription); Assert.Equal(responseData[0].Id, sanomaTunniste); _handlerMock.Protected().Verify( "SendAsync", Times.Exactly(1), ItExpr.Is <HttpRequestMessage>(req => req.Method == HttpMethod.Post && req.RequestUri == GetExpectedUri("/lahetaviesti") && requestContainsCorrectData(req.Content) ), ItExpr.IsAny <CancellationToken>() ); }