public async Task Returns_With_Error_PMode_Not_Found_When_ReceivePMode_Is_Not_Defined(string id)
        {
            // Arrange
            var stub = new Mock <IConfig>();

            stub.Setup(c => c.GetReceivingPModes())
            .Returns(new[] { new ReceivingProcessingMode {
                                 Id = "existing-id"
                             } });

            var sut = new ReceiveMessageTransformer(stub.Object);

            sut.Configure(
                new Dictionary <string, string>
            {
                [ReceiveMessageTransformer.ReceivingPModeKey] = id
            });

            var msg = new ReceivedMessage(
                AS4Message.Empty.ToStream(),
                Constants.ContentTypes.Soap);

            // Act
            MessagingContext actual = await sut.TransformAsync(msg);

            // Assert
            MessageUnit primaryMessageUnit = actual.AS4Message.MessageUnits.First();

            Assert.IsType <Error>(primaryMessageUnit);
            var error = (Error)primaryMessageUnit;

            Assert.Equal(
                ErrorAlias.ProcessingModeMismatch,
                error.ErrorLines.First().ShortDescription);
        }
        public async Task Adds_ReceivePMode_When_PMode_Setting_Is_Defined(string id)
        {
            // Arrange
            var stub = new Mock <IConfig>();

            stub.Setup(c => c.GetReceivingPModes())
            .Returns(new[] { new ReceivingProcessingMode {
                                 Id = "existing-id"
                             } });

            var sut = new ReceiveMessageTransformer(stub.Object);

            sut.Configure(
                new Dictionary <string, string>
            {
                [ReceiveMessageTransformer.ReceivingPModeKey] = null
            });

            var msg = new ReceivedMessage(
                AS4Message.Empty.ToStream(),
                Constants.ContentTypes.Soap);

            // Act
            MessagingContext result = await sut.TransformAsync(msg);

            // Assert
            bool expectedNotConfiguredPMode = result.ReceivingPMode == null;
            bool expectedConfiguredPMode    = result.ReceivingPMode?.Id == id;

            Assert.True(expectedNotConfiguredPMode || expectedConfiguredPMode);
        }
        public void Throws_InvalidMessage_When_Receiving_SignalMessage_While_Having_A_ReceivingPMode_Configured(SignalMessage s)
        {
            // Arrange
            AS4Message receipt  = AS4Message.Create(s);
            var        incoming = new ReceivedMessage(receipt.ToStream(), Constants.ContentTypes.Soap);

            var sut = new ReceiveMessageTransformer(StubConfig.Default);

            sut.Configure(
                new Dictionary <string, string>
            {
                [ReceiveMessageTransformer.ReceivingPModeKey] = "pmode-id"
            });

            // Act / Assert
            Assert.Throws <InvalidMessageException>(
                () => sut.TransformAsync(incoming).GetAwaiter().GetResult());
        }