Search in sources :

Example 1 with Context

use of com.redhat.cloud.notifications.ingress.Context 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 2 with Context

use of com.redhat.cloud.notifications.ingress.Context 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 3 with Context

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

the class DbQuteEngineTest method testActionContextExtension.

@Test
void testActionContextExtension() {
    Template template = createTemplate("action-context-template", "{context.foo} {context.bar.baz}");
    Context context = new Context.ContextBuilder().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("context", context).render());
}
Also used : Context(com.redhat.cloud.notifications.ingress.Context) 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

Context (com.redhat.cloud.notifications.ingress.Context)3 Action (com.redhat.cloud.notifications.ingress.Action)2 Payload (com.redhat.cloud.notifications.ingress.Payload)2 Event (com.redhat.cloud.notifications.models.Event)2 QuarkusTest (io.quarkus.test.junit.QuarkusTest)2 Test (org.junit.jupiter.api.Test)2 MockServerLifecycleManager (com.redhat.cloud.notifications.MockServerLifecycleManager)1 MockServerLifecycleManager.getMockServerUrl (com.redhat.cloud.notifications.MockServerLifecycleManager.getMockServerUrl)1 TestLifecycleManager (com.redhat.cloud.notifications.TestLifecycleManager)1 Metadata (com.redhat.cloud.notifications.ingress.Metadata)1 Endpoint (com.redhat.cloud.notifications.models.Endpoint)1 EndpointType (com.redhat.cloud.notifications.models.EndpointType)1 HttpType (com.redhat.cloud.notifications.models.HttpType)1 NotificationHistory (com.redhat.cloud.notifications.models.NotificationHistory)1 Template (com.redhat.cloud.notifications.models.Template)1 WebhookProperties (com.redhat.cloud.notifications.models.WebhookProperties)1 WebhookTypeProcessor (com.redhat.cloud.notifications.processors.webhooks.WebhookTypeProcessor)1 TemplateInstance (io.quarkus.qute.TemplateInstance)1 QuarkusTestResource (io.quarkus.test.common.QuarkusTestResource)1 JsonArray (io.vertx.core.json.JsonArray)1