Skip to content

Commit

Permalink
draft of integ test for HTTP response max size
Browse files Browse the repository at this point in the history
Signed-off-by: Dennis Toepker <[email protected]>
  • Loading branch information
toepkerd-zz committed Feb 23, 2024
1 parent 8c662a6 commit 7ce174d
Show file tree
Hide file tree
Showing 3 changed files with 81 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -155,7 +155,7 @@ internal object PluginSettings {
/**
* Default maximum HTTP response string length
*/
private val DEFAULT_MAX_HTTP_RESPONSE_SIZE = SETTING_HTTP_MAX_CONTENT_LENGTH.getDefault(Settings.EMPTY).getBytes().toInt()
private val DEFAULT_MAX_HTTP_RESPONSE_SIZE = SETTING_HTTP_MAX_CONTENT_LENGTH.getDefault(Settings.EMPTY).bytes.toInt()

/**
* Default email header length. minimum value from 100 reference emails
Expand Down
1 change: 1 addition & 0 deletions notifications/notifications/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -276,6 +276,7 @@ configurations {
}

dependencies {
testImplementation project(path: ':opensearch-notifications-core')
opensearchPlugin "org.opensearch.plugin:opensearch-notifications-core:${bwcPluginVersion}@zip"
opensearchPlugin "org.opensearch.plugin:notifications:${bwcPluginVersion}@zip"
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
/*
* Copyright OpenSearch Contributors
* SPDX-License-Identifier: Apache-2.0
*/

package org.opensearch.integtest

import com.sun.net.httpserver.HttpServer
import org.junit.AfterClass
import org.junit.Assert
import org.junit.BeforeClass
import org.opensearch.core.rest.RestStatus
import org.opensearch.notifications.core.NotificationCoreImpl
import org.opensearch.notifications.spi.model.DestinationMessageResponse
import org.opensearch.notifications.spi.model.MessageContent
import org.opensearch.notifications.spi.model.destination.CustomWebhookDestination
import org.opensearch.rest.RestRequest
import java.net.InetAddress
import java.net.InetSocketAddress

internal class MaxHTTPResponseSizeIT : PluginRestTestCase() {
fun `test HTTP response has truncated size`() {
// update max http response size setting
val updateSettingJsonString = """
{
"persistent": {
"opensearch.notifications.core.max_http_response_size": "10"
}
}
""".trimIndent()

val updateSettingsResponse = executeRequest(
RestRequest.Method.PUT.name,
"/_cluster/settings",
updateSettingJsonString,
RestStatus.OK.status
)
Assert.assertNotNull(updateSettingsResponse)
logger.info("update settings response: $updateSettingsResponse")
Thread.sleep(1000)

val title = "test custom webhook"
val messageText = "{\"Content\":\"sample message\"}"
val url = "http://${server.address.hostString}:${server.address.port}/webhook"

val destination = CustomWebhookDestination(url, mapOf("headerKey" to "headerValue"), "POST")
val message = MessageContent(title, messageText)

val actualCustomWebhookResponse: DestinationMessageResponse = NotificationCoreImpl.sendMessage(destination, message, "ref")

logger.info("response: ${actualCustomWebhookResponse.statusText}")
}

companion object {
private lateinit var server: HttpServer

@JvmStatic
@BeforeClass
fun setupWebhook() {
server = HttpServer.create(InetSocketAddress(InetAddress.getLoopbackAddress(), 0), 0)

server.createContext("/webhook") {
val response = "This is a longer than usual response that should be truncated"
it.sendResponseHeaders(200, response.length.toLong())
val os = it.responseBody
os.write(response.toByteArray())
os.close()
}

server.start()
}

@JvmStatic
@AfterClass
fun stopMockServer() {
server.stop(1)
}
}
}

0 comments on commit 7ce174d

Please sign in to comment.