2012-01-19 14:38:44 +00:00
|
|
|
/**
|
2016-01-25 10:16:14 +01:00
|
|
|
* Copyright (C) 2009-2016 Typesafe Inc. <http://www.typesafe.com>
|
2012-01-19 14:38:44 +00:00
|
|
|
*/
|
|
|
|
|
|
2011-05-23 11:37:56 -04:00
|
|
|
package akka.camel
|
|
|
|
|
|
2012-06-25 18:28:38 +02:00
|
|
|
import language.implicitConversions
|
|
|
|
|
|
2012-01-19 14:38:44 +00:00
|
|
|
import internal.CamelExchangeAdapter
|
|
|
|
|
import org.apache.camel.impl.DefaultExchange
|
|
|
|
|
import org.apache.camel.{ Exchange, ExchangePattern }
|
2012-07-24 12:12:06 +02:00
|
|
|
import akka.camel.TestSupport.{ SharedCamelSystem }
|
2012-01-19 14:38:44 +00:00
|
|
|
import org.scalatest.FunSuite
|
|
|
|
|
|
2012-07-24 12:12:06 +02:00
|
|
|
class CamelExchangeAdapterTest extends FunSuite with SharedCamelSystem {
|
2011-05-23 11:37:56 -04:00
|
|
|
|
2012-01-19 14:38:44 +00:00
|
|
|
//TODO: Get rid of implicit.
|
|
|
|
|
// It is here, as was easier to add this implicit than to rewrite the whole test...
|
|
|
|
|
implicit def exchangeToAdapter(e: Exchange) = new CamelExchangeAdapter(e)
|
2011-05-23 11:37:56 -04:00
|
|
|
|
2012-01-19 14:38:44 +00:00
|
|
|
test("mustSetInMessageFromRequestMessage") {
|
|
|
|
|
val e1 = sampleInOnly
|
2012-07-24 12:12:06 +02:00
|
|
|
e1.setRequest(CamelMessage("x", Map.empty))
|
2011-05-23 11:37:56 -04:00
|
|
|
assert(e1.getIn.getBody === "x")
|
2012-01-19 14:38:44 +00:00
|
|
|
val e2 = sampleInOut
|
2012-07-24 12:12:06 +02:00
|
|
|
e2.setRequest(CamelMessage("y", Map.empty))
|
2011-05-23 11:37:56 -04:00
|
|
|
assert(e2.getIn.getBody === "y")
|
|
|
|
|
}
|
|
|
|
|
|
2012-01-19 14:38:44 +00:00
|
|
|
test("mustSetOutMessageFromResponseMessage") {
|
2012-03-01 17:32:10 +01:00
|
|
|
val e1 = sampleInOut
|
2012-07-24 12:12:06 +02:00
|
|
|
e1.setResponse(CamelMessage("y", Map.empty))
|
2011-05-23 11:37:56 -04:00
|
|
|
assert(e1.getOut.getBody === "y")
|
|
|
|
|
}
|
|
|
|
|
|
2012-01-19 14:38:44 +00:00
|
|
|
test("mustSetInMessageFromResponseMessage") {
|
2012-03-01 17:32:10 +01:00
|
|
|
val e1 = sampleInOnly
|
2012-07-24 12:12:06 +02:00
|
|
|
e1.setResponse(CamelMessage("x", Map.empty))
|
2011-05-23 11:37:56 -04:00
|
|
|
assert(e1.getIn.getBody === "x")
|
|
|
|
|
}
|
|
|
|
|
|
2012-01-19 14:38:44 +00:00
|
|
|
test("mustSetExceptionFromFailureMessage") {
|
2012-03-01 17:32:10 +01:00
|
|
|
val e1 = sampleInOnly
|
2012-05-11 09:46:49 +02:00
|
|
|
e1.setFailure(FailureResult(new Exception("test1")))
|
2011-05-23 11:37:56 -04:00
|
|
|
assert(e1.getException.getMessage === "test1")
|
2012-03-01 17:32:10 +01:00
|
|
|
val e2 = sampleInOut
|
2012-05-11 09:46:49 +02:00
|
|
|
e2.setFailure(FailureResult(new Exception("test2")))
|
2011-05-23 11:37:56 -04:00
|
|
|
assert(e2.getException.getMessage === "test2")
|
|
|
|
|
}
|
|
|
|
|
|
2012-01-19 14:38:44 +00:00
|
|
|
test("mustCreateRequestMessageFromInMessage") {
|
2011-05-23 11:37:56 -04:00
|
|
|
val m = sampleInOnly.toRequestMessage
|
2012-07-24 12:12:06 +02:00
|
|
|
assert(m === CamelMessage("test-in", Map("key-in" -> "val-in")))
|
2011-05-23 11:37:56 -04:00
|
|
|
}
|
|
|
|
|
|
2012-01-19 14:38:44 +00:00
|
|
|
test("mustCreateResponseMessageFromInMessage") {
|
2011-05-23 11:37:56 -04:00
|
|
|
val m = sampleInOnly.toResponseMessage
|
2012-07-24 12:12:06 +02:00
|
|
|
assert(m === CamelMessage("test-in", Map("key-in" -> "val-in")))
|
2011-05-23 11:37:56 -04:00
|
|
|
}
|
|
|
|
|
|
2012-01-19 14:38:44 +00:00
|
|
|
test("mustCreateResponseMessageFromOutMessage") {
|
2011-05-23 11:37:56 -04:00
|
|
|
val m = sampleInOut.toResponseMessage
|
2012-07-24 12:12:06 +02:00
|
|
|
assert(m === CamelMessage("test-out", Map("key-out" -> "val-out")))
|
2011-05-23 11:37:56 -04:00
|
|
|
}
|
|
|
|
|
|
2012-01-19 14:38:44 +00:00
|
|
|
test("mustCreateFailureMessageFromExceptionAndInMessage") {
|
2011-05-23 11:37:56 -04:00
|
|
|
val e1 = sampleInOnly
|
|
|
|
|
e1.setException(new Exception("test1"))
|
2012-05-07 14:18:06 +02:00
|
|
|
assert(e1.toAkkaCamelException.getMessage === "test1")
|
|
|
|
|
assert(e1.toAkkaCamelException.headers("key-in") === "val-in")
|
2011-05-23 11:37:56 -04:00
|
|
|
assert(e1.toFailureMessage.cause.getMessage === "test1")
|
|
|
|
|
assert(e1.toFailureMessage.headers("key-in") === "val-in")
|
|
|
|
|
}
|
|
|
|
|
|
2012-01-19 14:38:44 +00:00
|
|
|
test("mustCreateFailureMessageFromExceptionAndOutMessage") {
|
2011-05-23 11:37:56 -04:00
|
|
|
val e1 = sampleInOut
|
|
|
|
|
e1.setException(new Exception("test2"))
|
2012-05-07 14:18:06 +02:00
|
|
|
assert(e1.toAkkaCamelException.getMessage === "test2")
|
|
|
|
|
assert(e1.toAkkaCamelException.headers("key-out") === "val-out")
|
2011-05-23 11:37:56 -04:00
|
|
|
assert(e1.toFailureMessage.cause.getMessage === "test2")
|
|
|
|
|
assert(e1.toFailureMessage.headers("key-out") === "val-out")
|
|
|
|
|
}
|
|
|
|
|
|
2012-01-19 14:38:44 +00:00
|
|
|
test("mustCreateRequestMessageFromInMessageWithAdditionalHeader") {
|
2011-05-23 11:37:56 -04:00
|
|
|
val m = sampleInOnly.toRequestMessage(Map("x" -> "y"))
|
2012-07-24 12:12:06 +02:00
|
|
|
assert(m === CamelMessage("test-in", Map("key-in" -> "val-in", "x" -> "y")))
|
2011-05-23 11:37:56 -04:00
|
|
|
}
|
|
|
|
|
|
2012-01-19 14:38:44 +00:00
|
|
|
test("mustCreateResponseMessageFromInMessageWithAdditionalHeader") {
|
2011-05-23 11:37:56 -04:00
|
|
|
val m = sampleInOnly.toResponseMessage(Map("x" -> "y"))
|
2012-07-24 12:12:06 +02:00
|
|
|
assert(m === CamelMessage("test-in", Map("key-in" -> "val-in", "x" -> "y")))
|
2011-05-23 11:37:56 -04:00
|
|
|
}
|
|
|
|
|
|
2012-01-19 14:38:44 +00:00
|
|
|
test("mustCreateResponseMessageFromOutMessageWithAdditionalHeader") {
|
2011-05-23 11:37:56 -04:00
|
|
|
val m = sampleInOut.toResponseMessage(Map("x" -> "y"))
|
2012-07-24 12:12:06 +02:00
|
|
|
assert(m === CamelMessage("test-out", Map("key-out" -> "val-out", "x" -> "y")))
|
2011-05-23 11:37:56 -04:00
|
|
|
}
|
|
|
|
|
|
2012-01-19 14:38:44 +00:00
|
|
|
test("mustCreateFailureMessageFromExceptionAndInMessageWithAdditionalHeader") {
|
2011-05-23 11:37:56 -04:00
|
|
|
val e1 = sampleInOnly
|
|
|
|
|
e1.setException(new Exception("test1"))
|
2012-05-07 14:18:06 +02:00
|
|
|
assert(e1.toAkkaCamelException.getMessage === "test1")
|
|
|
|
|
val headers = e1.toAkkaCamelException(Map("x" -> "y")).headers
|
2011-05-23 11:37:56 -04:00
|
|
|
assert(headers("key-in") === "val-in")
|
|
|
|
|
assert(headers("x") === "y")
|
2012-05-07 14:18:06 +02:00
|
|
|
|
|
|
|
|
assert(e1.toFailureMessage.cause.getMessage === "test1")
|
2012-05-11 09:46:49 +02:00
|
|
|
val failureHeaders = e1.toFailureResult(Map("x" -> "y")).headers
|
2012-05-07 14:18:06 +02:00
|
|
|
assert(failureHeaders("key-in") === "val-in")
|
|
|
|
|
assert(failureHeaders("x") === "y")
|
|
|
|
|
|
2011-05-23 11:37:56 -04:00
|
|
|
}
|
|
|
|
|
|
2012-01-19 14:38:44 +00:00
|
|
|
test("mustCreateFailureMessageFromExceptionAndOutMessageWithAdditionalHeader") {
|
2011-05-23 11:37:56 -04:00
|
|
|
val e1 = sampleInOut
|
|
|
|
|
e1.setException(new Exception("test2"))
|
2012-05-07 14:18:06 +02:00
|
|
|
assert(e1.toAkkaCamelException.getMessage === "test2")
|
|
|
|
|
val headers = e1.toAkkaCamelException(Map("x" -> "y")).headers
|
2011-05-23 11:37:56 -04:00
|
|
|
assert(headers("key-out") === "val-out")
|
|
|
|
|
assert(headers("x") === "y")
|
2012-05-07 14:18:06 +02:00
|
|
|
assert(e1.toFailureMessage.cause.getMessage === "test2")
|
2012-05-11 09:46:49 +02:00
|
|
|
val failureHeaders = e1.toFailureResult(Map("x" -> "y")).headers
|
2012-05-07 14:18:06 +02:00
|
|
|
assert(failureHeaders("key-out") === "val-out")
|
|
|
|
|
assert(failureHeaders("x") === "y")
|
2011-05-23 11:37:56 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private def sampleInOnly = sampleExchange(ExchangePattern.InOnly)
|
|
|
|
|
private def sampleInOut = sampleExchange(ExchangePattern.InOut)
|
|
|
|
|
|
|
|
|
|
private def sampleExchange(pattern: ExchangePattern) = {
|
2012-01-19 14:38:44 +00:00
|
|
|
val exchange = new DefaultExchange(camel.context)
|
2011-05-23 11:37:56 -04:00
|
|
|
exchange.getIn.setBody("test-in")
|
|
|
|
|
exchange.getOut.setBody("test-out")
|
|
|
|
|
exchange.getIn.setHeader("key-in", "val-in")
|
|
|
|
|
exchange.getOut.setHeader("key-out", "val-out")
|
|
|
|
|
exchange.setPattern(pattern)
|
|
|
|
|
exchange
|
|
|
|
|
}
|
|
|
|
|
}
|