@Test
public void shouldPopulateMessagesOnProcessMessage() {
JSONObject inputMessage = new JSONObject();
inputMessage.put("guid", "guid");
inputMessage.put("ip_src_addr", "192.168.1.1");
inputMessage.put("ip_dst_addr", "192.168.1.2");
inputMessage.put("field1", "value");
RawMessage rawMessage = new RawMessage("raw_message".getBytes(), new HashMap<>());
JSONObject expectedOutput = new JSONObject();
expectedOutput.put("guid", "guid");
expectedOutput.put("source.type", "bro");
expectedOutput.put("ip_src_addr", "192.168.1.1");
expectedOutput.put("ip_dst_addr", "192.168.1.2");
when(stellarFilter.emit(expectedOutput, parserRunner.getStellarContext())).thenReturn(true);
when(broParser.validate(expectedOutput)).thenReturn(true);
parserRunner.setSensorToParserComponentMap(new HashMap<String, ParserComponent>() {{
put("bro", new ParserComponent(broParser, stellarFilter));
}});
Optional<ParserRunnerImpl.ProcessResult> processResult = parserRunner.processMessage("bro", inputMessage, rawMessage, broParser, parserConfigurations);
Assert.assertTrue(processResult.isPresent());
Assert.assertFalse(processResult.get().isError());
Assert.assertEquals(expectedOutput, processResult.get().getMessage());
}