Exemplo n.º 1
0
        /// <summary>
        /// Initializes a new instance of the <see cref="T:Filter"/> class.
        /// </summary>
        /// <param name="context">The context.</param>
        /// <param name="variablesManager">The variables manager.</param>
        /// <param name="valueCheckers">The value checkers.</param>
        /// <exception cref="ArgumentNullException">If <paramref name="variablesManager"/> is <code>null</code>.</exception>
        public Filter(IExecutionContext context, PacketPropertyVariablesManager variablesManager, List<IValueChecker<object>> valueCheckers)
            : base(context)
        {
            if (null == variablesManager)
            {
                throw new ArgumentNullException("variablesManager", "Variables manager is required to function properly.");
            }

            this.variablesManager = variablesManager;
            // Clone list of value checkers
            this.valueCheckers = valueCheckers.ToArray();
        }
Exemplo n.º 2
0
        public virtual async Task TestStringFormattersInCustomActions()
        {
            IValueChecker valueChecker = A.Fake <IValueChecker>();

            IStringCorrector stringCorrector1 = A.Fake <IStringCorrector>();

            IStringCorrector stringCorrector2 = A.Fake <IStringCorrector>();

            A.CallTo(() => stringCorrector1.CorrectString(A <string> .Ignored))
            .ReturnsLazily(correctString =>
            {
                string arg = correctString.GetArgument <string>("input");

                return("ONE" + arg);
            });

            A.CallTo(() => stringCorrector2.CorrectString(A <string> .Ignored))
            .ReturnsLazily(correctString =>
            {
                string arg = correctString.GetArgument <string>("input");

                return("TWO" + arg);
            });

            using (BitOwinTestEnvironment testEnvironment = new BitOwinTestEnvironment(new TestEnvironmentArgs
            {
                AdditionalDependencies = (manager, services) =>
                {
                    manager.RegisterInstance(valueChecker);
                    manager.RegisterInstance(stringCorrector2, overwriteExisting: false);
                    manager.RegisterInstance(stringCorrector1, overwriteExisting: false);
                }
            }))
            {
                TokenResponse token = await testEnvironment.Server.Login("ValidUserName", "ValidPassword", clientId : "TestResOwner");

                IODataClient client = testEnvironment.Server.BuildODataClient(token: token);

                await client.TestModels()
                .StringFormattersTests(simpleString: "simpleString",
                                       stringsArray: new[] { "stringsArray1", "stringsArray2" },
                                       stringsArray2: new[] { "stringsArray1", "stringsArray2" },
                                       entitiesArray: new[]
                {
                    new TestModel
                    {
                        StringProperty = "StringProperty1", Id = 2, Version = 2
                    },
                    new TestModel
                    {
                        StringProperty = "StringProperty2", Id = 3, Version = 3
                    }
                },
                                       simpleDto: new TestModel {
                    StringProperty = "StringProperty", Id = 1, Version = 1
                })
                .ExecuteAsync();

                A.CallTo(() => valueChecker.CheckValue("ONETWOsimpleString"))
                .MustHaveHappenedOnceExactly();

                A.CallTo(() => valueChecker.CheckValue(A <List <string> > .That.Matches(strs => strs.SequenceEqual(new List <string> {
                    "ONETWOstringsArray1", "ONETWOstringsArray2"
                }))))
                .MustHaveHappenedOnceExactly();

                A.CallTo(() => valueChecker.CheckValue(A <TestModel> .That.Matches(tm => tm.StringProperty == "ONETWOStringProperty")))
                .MustHaveHappenedOnceExactly();

                A.CallTo(() => valueChecker.CheckValue(A <List <TestModel> > .That.Matches(tms => tms.First().StringProperty == "ONETWOStringProperty1" && tms.Last().StringProperty == "ONETWOStringProperty2")))
                .MustHaveHappenedOnceExactly();

                A.CallTo(() => stringCorrector1.CorrectString(A <string> .Ignored))
                .MustHaveHappenedANumberOfTimesMatching(times => times == 8);

                A.CallTo(() => stringCorrector2.CorrectString(A <string> .Ignored))
                .MustHaveHappenedANumberOfTimesMatching(times => times == 8);
            }
        }
        public virtual async Task TestStringFormattersInCustomActions()
        {
            IValueChecker valueChecker = A.Fake <IValueChecker>();

            IStringCorrector stringCorrector1 = A.Fake <IStringCorrector>();

            IStringCorrector stringCorrector2 = A.Fake <IStringCorrector>();

            A.CallTo(() => stringCorrector1.CorrectString(A <string> .Ignored))
            .ReturnsLazily(correctString =>
            {
                string arg = correctString.GetArgument <string>("source");

                return("ONE" + arg);
            });

            A.CallTo(() => stringCorrector2.CorrectString(A <string> .Ignored))
            .ReturnsLazily(correctString =>
            {
                string arg = correctString.GetArgument <string>("source");

                return("TWO" + arg);
            });

            using (TestEnvironment testEnvironment = new TestEnvironment(new TestEnvironmentArgs
            {
                AdditionalDependencies = manager =>
                {
                    manager.RegisterInstance(valueChecker);
                    manager.RegisterInstance(stringCorrector2, overwriteExciting: false);
                    manager.RegisterInstance(stringCorrector1, overwriteExciting: false);
                }
            }))
            {
                OAuthToken token = testEnvironment.Server.Login("ValidUserName", "ValidPassword");

                ODataClient client = testEnvironment.Server.BuildODataClient(token: token);

                await client.Controller <TestModelsController, TestModel>()
                .Action(nameof(TestModelsController.StringFormattersTests))
                .Set(new
                {
                    simpleString  = "simpleString",
                    stringsArray  = new[] { "stringsArray1", "stringsArray2" },
                    stringsArray2 = new[] { "stringsArray1", "stringsArray2" },
                    simpleEntity  = new TestModel {
                        StringProperty = "StringProperty", Id = 1, Version = 1
                    },
                    entitiesArray = new[]
                    {
                        new TestModel
                        {
                            StringProperty = "StringProperty1", Id = 2, Version = 2
                        },
                        new TestModel
                        {
                            StringProperty = "StringProperty2", Id = 3, Version = 3
                        }
                    }
                }).ExecuteAsync();

                A.CallTo(() => valueChecker.CheckValue("ONETWOsimpleString"))
                .MustHaveHappened(Repeated.Exactly.Once);

                A.CallTo(() => valueChecker.CheckValue(A <List <string> > .That.Matches(strs => strs.SequenceEqual(new List <string> {
                    "ONETWOstringsArray1", "ONETWOstringsArray2"
                }))))
                .MustHaveHappened(Repeated.Exactly.Once);

                A.CallTo(() => valueChecker.CheckValue(A <TestModel> .That.Matches(tm => tm.StringProperty == "ONETWOStringProperty")))
                .MustHaveHappened(Repeated.Exactly.Once);

                A.CallTo(() => valueChecker.CheckValue(A <List <TestModel> > .That.Matches(tms => tms.First().StringProperty == "ONETWOStringProperty1" && tms.Last().StringProperty == "ONETWOStringProperty2")))
                .MustHaveHappened(Repeated.Exactly.Once);

                A.CallTo(() => stringCorrector1.CorrectString(A <string> .Ignored))
                .MustHaveHappened(Repeated.Exactly.Times(6));

                A.CallTo(() => stringCorrector2.CorrectString(A <string> .Ignored))
                .MustHaveHappened(Repeated.Exactly.Times(6));
            }
        }