Files
upstream-watermill/components/forwarder/envelope_test.go
2026-09-15 21:27:46 +05:00

47 lines
1.4 KiB
Go

package forwarder
import (
"context"
"testing"
"github.com/ThreeDotsLabs/watermill"
"github.com/ThreeDotsLabs/watermill/message"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
type contextKey string
func TestEnvelope(t *testing.T) {
expectedUUID := watermill.NewUUID()
marshaler := DefaultMarshaler{}
expectedPayload := message.Payload("msg content")
expectedMetadata := message.Metadata{"key": "value"}
expectedDestinationTopic := "dest_topic"
ctx := context.WithValue(context.Background(), contextKey("key"), "value")
msg := message.NewMessage(expectedUUID, expectedPayload)
msg.Metadata = expectedMetadata
msg.SetContext(ctx)
wrappedMsg, err := wrapMessageInEnvelope(expectedDestinationTopic, msg, marshaler)
require.NoError(t, err)
require.NotNil(t, wrappedMsg)
v, ok := wrappedMsg.Context().Value(contextKey("key")).(string)
require.True(t, ok)
require.Equal(t, "value", v)
destinationTopic, unwrappedMsg, err := unwrapMessageFromEnvelope(wrappedMsg, marshaler)
require.NoError(t, err)
require.NotNil(t, unwrappedMsg)
assert.Equal(t, expectedUUID, unwrappedMsg.UUID)
assert.Equal(t, expectedPayload, unwrappedMsg.Payload)
assert.Equal(t, expectedMetadata, unwrappedMsg.Metadata)
assert.Equal(t, expectedDestinationTopic, destinationTopic)
v, ok = unwrappedMsg.Context().Value(contextKey("key")).(string)
require.True(t, ok)
require.Equal(t, "value", v)
}