Search in sources :

Example 6 with Payload

use of com.redhat.cloud.notifications.ingress.Payload in project notifications-backend by RedHatInsights.

the class TestHelpers method createEmailAggregation.

public static EmailAggregation createEmailAggregation(String tenant, String bundle, String application, String policyId, String inventory_id) {
    EmailAggregation aggregation = new EmailAggregation();
    aggregation.setBundleName(bundle);
    aggregation.setApplicationName(application);
    aggregation.setAccountId(tenant);
    Action emailActionMessage = new Action();
    emailActionMessage.setBundle(bundle);
    emailActionMessage.setApplication(application);
    emailActionMessage.setTimestamp(LocalDateTime.now());
    emailActionMessage.setEventType(eventType);
    emailActionMessage.setContext(new Context.ContextBuilder().withAdditionalProperty("inventory_id", inventory_id).withAdditionalProperty("system_check_in", "2020-08-03T15:22:42.199046").withAdditionalProperty("display_name", "My test machine").withAdditionalProperty("tags", List.of()).build());
    emailActionMessage.setEvents(List.of(new Event.EventBuilder().withMetadata(new Metadata.MetadataBuilder().build()).withPayload(new Payload.PayloadBuilder().withAdditionalProperty("policy_id", policyId).withAdditionalProperty("policy_name", "not-tested-name").withAdditionalProperty("policy_description", "not-used-desc").withAdditionalProperty("policy_condition", "not-used-condition").build()).build()));
    emailActionMessage.setAccountId(tenant);
    JsonObject payload = baseTransformer.transform(emailActionMessage);
    aggregation.setPayload(payload);
    return aggregation;
}
Also used : Action(com.redhat.cloud.notifications.ingress.Action) Event(com.redhat.cloud.notifications.ingress.Event) JsonObject(io.vertx.core.json.JsonObject) Payload(com.redhat.cloud.notifications.ingress.Payload) EmailAggregation(com.redhat.cloud.notifications.models.EmailAggregation)

Example 7 with Payload

use of com.redhat.cloud.notifications.ingress.Payload 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;
}
Also used : Action(com.redhat.cloud.notifications.ingress.Action) Event(com.redhat.cloud.notifications.ingress.Event) JsonObject(io.vertx.core.json.JsonObject) Payload(com.redhat.cloud.notifications.ingress.Payload) EmailAggregation(com.redhat.cloud.notifications.models.EmailAggregation)

Example 8 with Payload

use of com.redhat.cloud.notifications.ingress.Payload 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;
}
Also used : Context(com.redhat.cloud.notifications.ingress.Context) Action(com.redhat.cloud.notifications.ingress.Action) Event(com.redhat.cloud.notifications.models.Event) Payload(com.redhat.cloud.notifications.ingress.Payload)

Example 9 with Payload

use of com.redhat.cloud.notifications.ingress.Payload 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"));
}
Also used : Assertions.fail(org.junit.jupiter.api.Assertions.fail) HttpType(com.redhat.cloud.notifications.models.HttpType) HttpRequest(org.mockserver.model.HttpRequest) Endpoint(com.redhat.cloud.notifications.models.Endpoint) WebhookTypeProcessor(com.redhat.cloud.notifications.processors.webhooks.WebhookTypeProcessor) TestLifecycleManager(com.redhat.cloud.notifications.TestLifecycleManager) LocalDateTime(java.time.LocalDateTime) NotificationHistory(com.redhat.cloud.notifications.models.NotificationHistory) MockServerLifecycleManager(com.redhat.cloud.notifications.MockServerLifecycleManager) QuarkusTest(io.quarkus.test.junit.QuarkusTest) ArrayList(java.util.ArrayList) MockServerLifecycleManager.getMockServerUrl(com.redhat.cloud.notifications.MockServerLifecycleManager.getMockServerUrl) Inject(javax.inject.Inject) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) Event(com.redhat.cloud.notifications.models.Event) WebhookProperties(com.redhat.cloud.notifications.models.WebhookProperties) JsonObject(io.vertx.core.json.JsonObject) Assertions.assertEquals(org.junit.jupiter.api.Assertions.assertEquals) Payload(com.redhat.cloud.notifications.ingress.Payload) Context(com.redhat.cloud.notifications.ingress.Context) QuarkusTestResource(io.quarkus.test.common.QuarkusTestResource) ExpectationResponseCallback(org.mockserver.mock.action.ExpectationResponseCallback) Test(org.junit.jupiter.api.Test) JsonArray(io.vertx.core.json.JsonArray) List(java.util.List) EndpointType(com.redhat.cloud.notifications.models.EndpointType) Assertions.assertTrue(org.junit.jupiter.api.Assertions.assertTrue) Metadata(com.redhat.cloud.notifications.ingress.Metadata) Action(com.redhat.cloud.notifications.ingress.Action) HttpResponse.response(org.mockserver.model.HttpResponse.response) HttpRequest(org.mockserver.model.HttpRequest) Action(com.redhat.cloud.notifications.ingress.Action) ExpectationResponseCallback(org.mockserver.mock.action.ExpectationResponseCallback) ArrayList(java.util.ArrayList) JsonObject(io.vertx.core.json.JsonObject) JsonArray(io.vertx.core.json.JsonArray) Endpoint(com.redhat.cloud.notifications.models.Endpoint) NotificationHistory(com.redhat.cloud.notifications.models.NotificationHistory) Event(com.redhat.cloud.notifications.models.Event) QuarkusTest(io.quarkus.test.junit.QuarkusTest) Test(org.junit.jupiter.api.Test)

Example 10 with Payload

use of com.redhat.cloud.notifications.ingress.Payload in project notifications-backend by RedHatInsights.

the class DbQuteEngineTest method testActionPayloadExtension.

@Test
void testActionPayloadExtension() {
    Template template = createTemplate("action-payload-template", "{payload.foo} {payload.bar.baz}");
    Payload payload = new Payload.PayloadBuilder().withAdditionalProperty("foo", "im foo").withAdditionalProperty("bar", Map.of("baz", "im baz")).build();
    TemplateInstance templateInstance = templateService.compileTemplate(template.getData(), template.getName());
    assertEquals("im foo im baz", templateInstance.data("payload", payload).render());
}
Also used : Payload(com.redhat.cloud.notifications.ingress.Payload) Template(com.redhat.cloud.notifications.models.Template) TemplateInstance(io.quarkus.qute.TemplateInstance) QuarkusTest(io.quarkus.test.junit.QuarkusTest) Test(org.junit.jupiter.api.Test)

Aggregations

Payload (com.redhat.cloud.notifications.ingress.Payload)12 Action (com.redhat.cloud.notifications.ingress.Action)11 JsonObject (io.vertx.core.json.JsonObject)10 Event (com.redhat.cloud.notifications.ingress.Event)8 EmailAggregation (com.redhat.cloud.notifications.models.EmailAggregation)8 Context (com.redhat.cloud.notifications.ingress.Context)6 Event (com.redhat.cloud.notifications.models.Event)3 MockServerLifecycleManager (com.redhat.cloud.notifications.MockServerLifecycleManager)2 Metadata (com.redhat.cloud.notifications.ingress.Metadata)2 Endpoint (com.redhat.cloud.notifications.models.Endpoint)2 EndpointType (com.redhat.cloud.notifications.models.EndpointType)2 NotificationHistory (com.redhat.cloud.notifications.models.NotificationHistory)2 QuarkusTest (io.quarkus.test.junit.QuarkusTest)2 JsonArray (io.vertx.core.json.JsonArray)2 LocalDateTime (java.time.LocalDateTime)2 ArrayList (java.util.ArrayList)2 List (java.util.List)2 Inject (javax.inject.Inject)2 Assertions.assertEquals (org.junit.jupiter.api.Assertions.assertEquals)2 Assertions.assertTrue (org.junit.jupiter.api.Assertions.assertTrue)2