use of com.redhat.cloud.notifications.ingress.Action in project notifications-backend by RedHatInsights.
the class EventConsumerTest method testDuplicatePayload.
@Test
void testDuplicatePayload() {
EventType eventType = mockGetEventTypeAndCreateEvent();
Action action = buildValidAction();
String payload = serializeAction(action);
UUID messageId = UUID.randomUUID();
Message<String> message = buildMessageWithId(messageId.toString().getBytes(UTF_8), payload);
inMemoryConnector.source(INGRESS_CHANNEL).send(message);
inMemoryConnector.source(INGRESS_CHANNEL).send(message);
micrometerAssertionHelper.awaitAndAssertTimerIncrement(CONSUMED_TIMER_NAME, 2);
assertEquals(2L, registry.timer(CONSUMED_TIMER_NAME, "bundle", action.getBundle(), "application", action.getApplication()).count());
micrometerAssertionHelper.assertCounterIncrement(MESSAGE_ID_VALID_COUNTER_NAME, 2);
micrometerAssertionHelper.assertCounterIncrement(DUPLICATE_COUNTER_NAME, 1);
assertNoCounterIncrement(REJECTED_COUNTER_NAME, PROCESSING_ERROR_COUNTER_NAME, PROCESSING_EXCEPTION_COUNTER_NAME, MESSAGE_ID_INVALID_COUNTER_NAME, MESSAGE_ID_MISSING_COUNTER_NAME);
verifyExactlyOneProcessing(eventType, payload, action);
verify(kafkaMessageDeduplicator, times(1)).registerMessageId(messageId);
}
use of com.redhat.cloud.notifications.ingress.Action in project notifications-backend by RedHatInsights.
the class CamelTypeProcessorTest method buildEvent.
private static Event buildEvent() {
Action action = new Action();
action.setVersion("v1.0.0");
action.setBundle("bundle");
action.setApplication("app");
action.setEventType("event-type");
action.setTimestamp(LocalDateTime.now());
action.setAccountId("account-id");
action.setRecipients(List.of());
action.setContext(new Context.ContextBuilder().build());
action.setEvents(List.of(new com.redhat.cloud.notifications.ingress.Event.EventBuilder().withMetadata(new Metadata.MetadataBuilder().build()).withPayload(new Payload.PayloadBuilder().withAdditionalProperty("k1", "v1").withAdditionalProperty("k2", "v2").withAdditionalProperty("k3", "v3").build()).build()));
Event event = new Event();
event.setAction(action);
return event;
}
use of com.redhat.cloud.notifications.ingress.Action in project notifications-backend by RedHatInsights.
the class RhosakEmailAggregatorTest method createUpgradeEmailAggregation.
private static EmailAggregation createUpgradeEmailAggregation(String kafkaName, String kafkaVersion) {
EmailAggregation aggregation = new EmailAggregation();
aggregation.setBundleName(APPLICATION_SERVICES);
aggregation.setApplicationName(RHOSAK);
aggregation.setAccountId(ACCOUNT_ID);
Action emailActionMessage = new Action();
emailActionMessage.setBundle(APPLICATION_SERVICES);
emailActionMessage.setApplication(RHOSAK);
emailActionMessage.setTimestamp(NOW);
emailActionMessage.setEventType(SCHEDULED_UPGRADE);
emailActionMessage.setContext(new Context.ContextBuilder().withAdditionalProperty("kafka_version", kafkaVersion).withAdditionalProperty("upgrade_time", LocalDateTime.now().toString()).build());
emailActionMessage.setEvents(List.of(new Event.EventBuilder().withMetadata(new Metadata.MetadataBuilder().build()).withPayload(new Payload.PayloadBuilder().withAdditionalProperty("id", kafkaName).withAdditionalProperty("name", kafkaName).build()).build()));
emailActionMessage.setAccountId(ACCOUNT_ID);
JsonObject payload = baseTransformer.transform(emailActionMessage);
aggregation.setPayload(payload);
return aggregation;
}
use of com.redhat.cloud.notifications.ingress.Action in project notifications-backend by RedHatInsights.
the class WebhookTest method buildWebhookAction.
private static Action buildWebhookAction() {
Action webhookActionMessage = new Action();
webhookActionMessage.setBundle("mybundle");
webhookActionMessage.setApplication("WebhookTest");
webhookActionMessage.setTimestamp(LocalDateTime.of(2020, 10, 3, 15, 22, 13, 25));
webhookActionMessage.setEventType("testWebhook");
webhookActionMessage.setAccountId("tenant");
Payload payload1 = new Payload.PayloadBuilder().withAdditionalProperty("any", "thing").withAdditionalProperty("we", 1).withAdditionalProperty("want", "here").build();
Context context = new Context.ContextBuilder().withAdditionalProperty("free", "more").withAdditionalProperty("format", 1).withAdditionalProperty("here", "stuff").build();
webhookActionMessage.setEvents(List.of(new com.redhat.cloud.notifications.ingress.Event.EventBuilder().withMetadata(new Metadata.MetadataBuilder().build()).withPayload(payload1).build(), new com.redhat.cloud.notifications.ingress.Event.EventBuilder().withMetadata(new Metadata.MetadataBuilder().build()).withPayload(new Payload.PayloadBuilder().build()).build()));
webhookActionMessage.setContext(context);
return webhookActionMessage;
}
use of com.redhat.cloud.notifications.ingress.Action in project notifications-backend by RedHatInsights.
the class WebhookTest method testWebhook.
@Test
void testWebhook() {
String url = getMockServerUrl() + "/foobar";
final List<String> bodyRequests = new ArrayList<>();
ExpectationResponseCallback verifyEmptyRequest = req -> {
bodyRequests.add(req.getBodyAsString());
return response().withStatusCode(200);
};
HttpRequest postReq = getMockHttpRequest(verifyEmptyRequest);
Action webhookActionMessage = buildWebhookAction();
Event event = new Event();
event.setAction(webhookActionMessage);
Endpoint ep = buildWebhookEndpoint(url);
try {
List<NotificationHistory> process = webhookTypeProcessor.process(event, List.of(ep));
NotificationHistory history = process.get(0);
assertTrue(history.isInvocationResult());
} catch (Exception e) {
e.printStackTrace();
fail(e);
} finally {
// Remove expectations
MockServerLifecycleManager.getClient().clear(postReq);
}
assertEquals(1, bodyRequests.size());
JsonObject webhookInput = new JsonObject(bodyRequests.get(0));
assertEquals("mybundle", webhookInput.getString("bundle"));
assertEquals("WebhookTest", webhookInput.getString("application"));
assertEquals("testWebhook", webhookInput.getString("event_type"));
assertEquals("tenant", webhookInput.getString("account_id"));
JsonObject webhookInputContext = webhookInput.getJsonObject("context");
assertEquals("more", webhookInputContext.getString("free"));
assertEquals(1, webhookInputContext.getInteger("format"));
assertEquals("stuff", webhookInputContext.getString("here"));
JsonArray webhookInputEvents = webhookInput.getJsonArray("events");
assertEquals(2, webhookInputEvents.size());
JsonObject webhookInputPayload1 = webhookInputEvents.getJsonObject(0).getJsonObject("payload");
assertEquals("thing", webhookInputPayload1.getString("any"));
assertEquals(1, webhookInputPayload1.getInteger("we"));
assertEquals("here", webhookInputPayload1.getString("want"));
}
Aggregations