public static string GetStandardPayloadAsText(FiksRequest fiksRequest) { var basepath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); var payLoadFilePath = fiksRequest.TestCase.PayloadFilePath; return(File.ReadAllText(basepath + "/" + payLoadFilePath)); }
public static void CreateCustomPayload(FiksRequest fiksRequest, List <IPayload> payloads) { IPayload payload = new StreamPayload(new MemoryStream(fiksRequest.CustomPayloadFile.Payload), fiksRequest.CustomPayloadFile.Filename); payloads.Add(payload); }
public Guid Send(FiksRequest fiksRequest, Guid receiverId) { var ttl = new TimeSpan(0, TTLMinutes, 0); var messageRequest = new MeldingRequest(_senderId, receiverId, fiksRequest.TestCase.MessageType, ttl); var payloads = new List <IPayload>(); if (fiksRequest.CustomPayloadFile != null) { PayloadHelper.CreateCustomPayload(fiksRequest, payloads); } else { PayloadHelper.CreateStandardPayload(fiksRequest, payloads); } var attachmentFileNames = fiksRequest.TestCase.PayloadAttachmentFileNames; if (!string.IsNullOrEmpty(attachmentFileNames)) { foreach (var payloadFileName in attachmentFileNames.Split(";")) { var testCaseDirectory = Path.Combine(TestSeeder.TestsDirectory, fiksRequest.TestCase.Protocol, fiksRequest.TestCase.Operation + fiksRequest.TestCase.Situation); var fileStream = File.OpenRead(Path.Combine(testCaseDirectory, "Attachments", payloadFileName)); payloads.Add(new StreamPayload(fileStream, payloadFileName)); } } fiksRequest.SentAt = DateTime.Now; var result = _client.Send(messageRequest, payloads).Result; return(result.MeldingId); }
public static void CreateStandardPayload(FiksRequest fiksRequest, List <IPayload> payloads) { var payLoadFileName = fiksRequest.TestCase.PayloadFileName; if (string.IsNullOrEmpty(payLoadFileName)) { return; } IPayload payload = new StringPayload(GetStandardPayloadAsText(fiksRequest), payLoadFileName); payloads.Add(payload); }
private static void ValidateExistenceOfExpectedResponseMessageTypes(FiksRequest fiksRequest, IEnumerable <string> expectedResponseMessageTypes) { foreach (var expectedResponseMessageType in expectedResponseMessageTypes) { if (!fiksRequest.FiksResponses.Any(r => r.Type.Equals(expectedResponseMessageType))) { var validationError = string.Format( ValidationErrorMessages.MissingResponseMessage, expectedResponseMessageType ); fiksRequest.FiksResponseValidationErrors.Add(validationError); } } }
public void TestValidateSokBetweenDatesXmlWithCorrectResult() { var responseXml = File.ReadAllText(Directory.GetCurrentDirectory() + "/TestData/ValidatorTests/NySokN4/sokeresultatMinimum.xml"); var validationErrors = new List <string>(); var fiksRequest = new FiksRequest { TestCase = new TestCase { MessageType = ArkivintegrasjonMeldingTypeV1.Sok, PayloadFilePath = "/TestData/ValidatorTests/NySokN4/sok.xml" } }; FiksResponseValidator.ValidateXmlPayloadContent(responseXml, fiksRequest, validationErrors); foreach (var validationError in validationErrors) { Console.Out.WriteLine(validationError); } Assert.True(validationErrors.Count == 0); }
public static string GetStandardRequestXml(FiksRequest fiksRequest) { return(PayloadHelper.GetStandardPayloadAsText(fiksRequest)); }
public static string GetCustomRequestXml(FiksRequest fiksRequest) { var stream = new StreamReader(new MemoryStream(fiksRequest.CustomPayloadFile.Payload)); return(stream.ReadToEnd()); }
public async Task <ActionResult <TestSession> > PostTestSession([FromBody] TestRequest testRequest) { Log.Information("PostTestSession start"); TestSession testSession; var isNewTestSession = false; var testSessionId = Request.Cookies["_testSessionId"]; //Trim recipient for leading and trailing white-spaces testRequest.RecipientId = testRequest.RecipientId.Trim(); if (!string.IsNullOrEmpty(testSessionId)) { Log.Debug("Finding session with sessionId {SessionId}", testRequest.SessionId); testSession = GetAndUpdateTestSession(testRequest, testSessionId); } else { Log.Debug("Create new TestSession from incoming request"); try { testSession = JsonSerializer.Deserialize <TestSession>(JsonSerializer.Serialize(testRequest)); } catch (Exception e) { var message = e.Message; if (e.InnerException != null) { message = e.InnerException.Message; } Log.Error("Error with deserializing the test request: {}", JsonSerializer.Serialize(testRequest)); return(BadRequest(message)); } testSession.Id = Guid.NewGuid(); isNewTestSession = true; } testSession.CreatedAt = DateTime.Now; testSession.FiksRequests ??= new List <FiksRequest>(); foreach (var testId in testSession.SelectedTestCaseIds) { var testCase = await _context.TestCases.FindAsync(testId); var isNewFiksRequest = false; var fiksRequest = testSession.FiksRequests.Find(fr => fr.TestCase == testCase); if (fiksRequest == null) { fiksRequest = new FiksRequest { Id = Guid.NewGuid(), TestCase = testCase }; isNewFiksRequest = true; } try { fiksRequest.MessageGuid = _fiksRequestMessageService.Send(fiksRequest, testSession.RecipientId); } catch (Exception e) { Log.Error(e, "Noe gikk galt ved sending av request til {FiksKonto}", testSession.RecipientId); if (e.InnerException != null && e.InnerException.Message.Contains("Ingen konto med id")) { Log.Error("TestSession FIKS-account {FiksKonto} is illegal", testSession.RecipientId); return(BadRequest("Ugyldig konto: " + testSession.RecipientId)); } Log.Error("An Error occured when sending FIKS request with recipient ID {RecipientId}", testSession.RecipientId); return(StatusCode(500, e.Message)); } if (isNewFiksRequest) { testSession.FiksRequests.Add(fiksRequest); await _context.FiksRequest.AddAsync(fiksRequest); } else { _context.FiksRequest.Update(fiksRequest); } } testSession.SelectedTestCaseIds.Clear(); if (isNewTestSession) { _context.TestSessions.Add(testSession); } else { _context.TestSessions.Update(testSession); } await _context.SaveChangesAsync(); Log.Debug("Session successfully created with id {Id} and recipientId {RecipientId}", testSession.Id, testSession.RecipientId); return(CreatedAtAction("GetTestSession", new { id = testSession.Id }, testSession)); }
private static void ValidatePayload(FiksResponse fiksResponse, FiksRequest fiksRequest, List <string> validationErrors) { var fiksPayload = GetFiksPayload(fiksResponse.FiksPayloads); var receivedPayloadFileName = fiksPayload != null ? fiksPayload.Filename : null; var messageType = fiksResponse.Type; // Ingen payload forventet og heller ingen payload mottatt. Alt ok. if (!ShouldHavePayload(messageType) && receivedPayloadFileName == null) { return; } // Forventet payload men ingen mottatt. Feil! if (ShouldHavePayload(messageType) && receivedPayloadFileName == null) { validationErrors.Add(string.Format( ValidationErrorMessages.MissingPayloadFileMessage, messageType )); return; } // Ingen paylod forventet men det er mottatt fil. Feil! if (!ShouldHavePayload(messageType) && receivedPayloadFileName != null) { validationErrors.Add(string.Format( ValidationErrorMessages.UnexpectedPayloadFileMessage, messageType )); return; } // Payload mottat som forventet men feil filformat. Feil! if (receivedPayloadFileName != null && !PayloadChecksHelper.HasValidFileFormat(receivedPayloadFileName)) { validationErrors.Add(string.Format( ValidationErrorMessages.InvalidPayloadFileFormatMessage, receivedPayloadFileName.Split('.').Last() )); return; } // Payload har ikke korrekt filnavn i forhold til meldingstype. Feil! if (!HasCorrectFilename(fiksResponse.Type, receivedPayloadFileName)) { validationErrors.Add(string.Format( ValidationErrorMessages.InvalidPayloadFilename, receivedPayloadFileName, GetExpectedFileName(messageType) )); return; } if (receivedPayloadFileName != null && receivedPayloadFileName.EndsWith(".xml")) { var xmlContent = System.Text.Encoding.Default.GetString(fiksPayload.Payload); ValidateXmlWithSchema(xmlContent, validationErrors, messageType); ValidateXmlPayloadContent(xmlContent, fiksRequest, validationErrors); } else { if (receivedPayloadFileName != null && receivedPayloadFileName.EndsWith(".json")) { ValidateJsonPayloadContent(System.Text.Encoding.Default.GetString(fiksPayload.Payload), fiksRequest.TestCase.FiksResponseTests, validationErrors); } } }
public void Setup() { _validator = new FiksResponseValidator(); _fiksResponseTest = new FiksResponseTest { PayloadQuery = "/arkivmelding/registrering", ExpectedValue = "someValue", ValueType = SearchValueType.Attribute, }; var requestPayloadFilePath = "./TestData/Requests/ny_inngaaende.xml"; _testCase = new TestCase { MessageType = ArkivintegrasjonMeldingTypeV1.Arkivmelding, TestName = "testTestCase", FiksResponseTests = new List <FiksResponseTest>(), PayloadFileName = requestPayloadFilePath, ExpectedResponseMessageTypes = new List <FiksExpectedResponseMessageType>() { new FiksExpectedResponseMessageType() { ExpectedResponseMessageType = "no.ks.fiks.gi.arkivintegrasjon.mottatt.v1" }, new FiksExpectedResponseMessageType() { ExpectedResponseMessageType = "no.ks.fiks.gi.arkivintegrasjon.kvittering.v1" } } }; _testCase.FiksResponseTests.Add(_fiksResponseTest); _fiksResponseMottatt = new FiksResponse { Type = ArkivintegrasjonMeldingTypeV1.ArkivmeldingMottatt, }; var responsePayloadFilePath = "./TestData/Responses/svar_paa_ny_inngaaende.xml"; byte[] fileAsBytes; using (MemoryStream ms = new MemoryStream()) { Stream s = File.OpenRead(responsePayloadFilePath); s.CopyTo(ms); fileAsBytes = ms.ToArray(); } _fiksResponseKvittering = new FiksResponse { Type = ArkivintegrasjonMeldingTypeV1.ArkivmeldingKvittering, ReceivedAt = DateTime.Now, FiksPayloads = new List <FiksPayload> { new FiksPayload() { Filename = "svar_paa_ny_inngaaende.xml", Payload = fileAsBytes } }, }; _fiksRequest = new FiksRequest { MessageGuid = new Guid("F15D3D0D-FA20-41D7-B762-A718ACE95A0B"), FiksResponses = new List <FiksResponse>(), SentAt = DateTime.Now, IsFiksResponseValidated = false, FiksResponseValidationErrors = new List <string>(), TestCase = _testCase, }; _fiksRequest.FiksResponses.Add(_fiksResponseMottatt); _fiksRequest.FiksResponses.Add(_fiksResponseKvittering); _testSession = new TestSession { Id = new Guid("0459C8B6-EAF1-4186-8FCB-BEC3AC311404"), FiksRequests = new List <FiksRequest>(), CreatedAt = DateTime.Now, }; _testSession.FiksRequests.Add(_fiksRequest); }
public async Task <ActionResult> UploadCustomPayload(string testcaseId) { Log.Information("UploadCustomPayload start"); // Get testSessionId from cookie var testSessionId = Request.Cookies["_testSessionId"]; var newTestSession = false; var testSession = new TestSession(); if (string.IsNullOrEmpty(testSessionId)) { Log.Information("UploadCustomPayload could not find a testSessionId from cookie. Creating a new TestSession"); testSession = new TestSession() { Id = Guid.NewGuid(), CreatedAt = DateTime.Now }; newTestSession = true; } else { testSession = _context.TestSessions.FirstAsync(s => s.Id == Guid.Parse(testSessionId)).Result ?? new TestSession() { Id = Guid.NewGuid(), }; } var file = Request.Form.Files[0]; if (file.Length <= 0) { Log.Error("File size is zero"); return(BadRequest()); } var stream = new MemoryStream(); await file.CopyToAsync(stream); var fiksRequest = testSession.FiksRequests?.Find(fr => fr.TestCase.TestId.Equals(testcaseId)); if (fiksRequest == null) { fiksRequest = new FiksRequest { Id = Guid.NewGuid(), TestCase = await _context.TestCases.FindAsync(testcaseId), CustomPayloadFile = new FiksRequestPayload { Filename = file.FileName, Payload = stream.ToArray() } }; } else { fiksRequest.CustomPayloadFile = new FiksRequestPayload { Filename = file.FileName, Payload = stream.ToArray() }; } if (testSession.FiksRequests == null) { testSession.FiksRequests = new List <FiksRequest> { fiksRequest }; } else { testSession.FiksRequests.Add(fiksRequest); } if (newTestSession) { await _context.TestSessions.AddAsync(testSession); } await _context.FiksRequest.AddAsync(fiksRequest); await _context.SaveChangesAsync(); Log.Information("UploadCustomPayload finished"); return(new OkResult()); }
public static void ValidateXmlPayloadWithSokRequest(string xmlPayloadContent, FiksRequest fiksRequest, List <string> validationErrors) { var sokXml = ""; if (fiksRequest.CustomPayloadFile != null) { sokXml = GetCustomRequestXml(fiksRequest); } else { sokXml = GetStandardRequestXml(fiksRequest); } using (var sokTextReader = (TextReader) new StringReader(sokXml)) { //Parse the sok request var sok = (Sok) new XmlSerializer(typeof(Sok)).Deserialize(sokTextReader); //Parse the sok response using (var sokResponseTextReader = (TextReader) new StringReader(xmlPayloadContent)) { switch (sok.ResponsType) { case ResponsType.Utvidet: SokeresultatUtvidetValidator.Validate(sokResponseTextReader, sok, validationErrors); break; case ResponsType.Noekler: SokeresultatNoeklerValidator.Validate(sokResponseTextReader, sok, validationErrors); break; case ResponsType.Minimum: default: SokeresultatMinimumValidator.Validate(sokResponseTextReader, sok, validationErrors); break; } } } }