public async Task EmitPublishesMessagesWithSourceIdAttribute(
            string message,
            string serializedMessage,
            Snowflake channelId,
            [Frozen] IAmazonSimpleNotificationService snsClient,
            [Frozen] ISerializer serializer,
            [Frozen, Options] IOptions <SnsMessageEmitterOptions> options,
            [Target] SnsMessageEmitter emitter
            )
        {
            var cancellationToken = new CancellationToken(false);

            await emitter.Emit(message, channelId, cancellationToken);

            serializer.Received().Serialize(Is(message));
            await snsClient.Received().PublishAsync(
                Is <PublishRequest>(req =>
                                    req.MessageAttributes.Any(attribute =>
                                                              attribute.Key == "Brighid.SourceId" &&
                                                              attribute.Value.DataType == "String" &&
                                                              attribute.Value.StringValue == channelId
                                                              )
                                    ),
                Is(cancellationToken)
                );
        }
        public async Task EmitSerializesMessageAndPublishesToTopic(
            string message,
            string serializedMessage,
            Snowflake channelId,
            [Frozen] IAmazonSimpleNotificationService snsClient,
            [Frozen] ISerializer serializer,
            [Frozen, Options] IOptions <SnsMessageEmitterOptions> options,
            [Target] SnsMessageEmitter emitter
            )
        {
            serializer.Serialize(Any <string>()).Returns(serializedMessage);
            var cancellationToken = new CancellationToken(false);

            await emitter.Emit(message, channelId, cancellationToken);

            serializer.Received().Serialize(Is(message));
            await snsClient.Received().PublishAsync(
                Is <PublishRequest>(req =>
                                    req.TopicArn == options.Value.TopicArn &&
                                    req.Message == serializedMessage
                                    ),
                Is(cancellationToken)
                );
        }