Example #1
0
        public void Evaluate_WhenRequestHeaderMatchesButRequestContentDoesNotMatchTheCondition_ReturnsPreDefinedResponse()
        {
            string headerKey    = "Accept";
            var    headerValues = new string[]
            {
                "text/xml",
                "text/plain"
            };

            string requestContent  = "this content will not match the condition";
            string responseContent = "dummy response.";

            var imposter = new ImposterDefinition("test")
                           .DeclareResource("/test", HttpMethod.Post)
                           .When(r => r.RequestHeader.ContainsKeyAndValues(headerKey, headerValues))
                           .Then(new DummyResponseCreator(responseContent, STATUS_CODE_OK))
                           .When(r => r.Content.Contains(requestContent))
                           .Then(new DummyResponseCreator(responseContent, STATUS_CODE_OK))
                           .Build();

            var request = new RequestBuilder()
                          .WithRequestHeader(headerKey, headerValues)
                          .WithRequestContent("dummy request")
                          .Build();

            var response = RulesEvaluator.Evaluate(imposter, request, out _);

            response.StatusCode.Should().Be(STATUS_CODE_OK);
            response.Content.Should().Be(responseContent);
        }
Example #2
0
        public void Evaluate_PredefinedResponseCorrespondingToTheMatchedContentConditionIsReturned()
        {
            string headerKey    = "this_key_doesnt_not_match";
            var    headerValues = new string[]
            {
                "text1/xml1",
                "text1/plain1"
            };

            string requestContent  = "dummy request";
            string responseContent = "dummy response for matched header";

            var imposter = new ImposterDefinition("test")
                           .DeclareResource("/test", HttpMethod.Post)
                           .When(r => r.RequestHeader.ContainsKeyAndValues("Accept", new[] { "test" }))
                           .Then(new DummyResponseForMatchedHeader(responseContent, STATUS_CODE_OK))
                           .When(r => r.Content.Contains(requestContent))
                           .Then(new DummyResponseCreator(responseContent, STATUS_CODE_OK))
                           .Build();

            var request = new RequestBuilder()
                          .WithRequestHeader(headerKey, headerValues)
                          .WithRequestContent(requestContent)
                          .Build();

            var response = RulesEvaluator.Evaluate(imposter, request, out _);

            response.StatusCode.Should().Be(STATUS_CODE_OK);
            response.Content.Should().Be(responseContent);
        }
Example #3
0
        public void ImposterDefinition_MultipleRules_CorrectlyGetsAddedToTheImposter()
        {
            ImposterDefinition imposterDefinition = CreateSut();

            var imposter = imposterDefinition.DeclareResource("/test", HttpMethod.Post)
                           .When(r => r.Content.Contains(""))
                           .Then(new DefaultResponseCreator())
                           .When(r => r.Content.StartsWith("test"))
                           .Then(new TestResponseCreator())
                           .Build();

            var firstRule = new Rule();

            firstRule.SetCondition(r => r.Content.Contains(""));
            firstRule.SetAction(new DefaultResponseCreator());

            var secondRule = new Rule();

            secondRule.SetCondition(r => r.Content.StartsWith("test"));
            secondRule.SetAction(new TestResponseCreator());

            imposter.Rules
            .Should().BeEquivalentTo(new[]
            {
                firstRule,
                secondRule
            });
        }
Example #4
0
        public void ImposterDefinition_AllowsToDefineHttpMethod()
        {
            ImposterDefinition imposterDefinition = CreateSut();

            var imposter = imposterDefinition.DeclareResource("/test", HttpMethod.Post)
                           .Build();

            imposter.Method
            .Should().Be(HttpMethod.Post);
        }
Example #5
0
        public void ImposterDefinition_ImposterResponseIsCorrectlyAddedToImposter()
        {
            ImposterDefinition imposterDefinition = CreateSut();

            var imposter = imposterDefinition.DeclareResource("/test", HttpMethod.Post)
                           .When(r => r.Content.Contains(""))
                           .Then(new DefaultResponseCreator())
                           .Build();

            var expectedAction = new DefaultResponseCreator();

            imposter.Rules.First().ResponseCreatorAction.CreateResponse()
            .Should().BeEquivalentTo(expectedAction.CreateResponse());
        }
Example #6
0
        public void ImposterDefinition_WhenConditionDefinedOnRequestHeader_ConditionGetsAddedToImposter()
        {
            ImposterDefinition imposterDefinition = CreateSut();

            var imposter = imposterDefinition.DeclareResource("/test", HttpMethod.Post)
                           .When(r => r.RequestHeader.Contains("Accept"))
                           .Then(new DefaultResponseCreator())
                           .Build();

            Expression <Func <Request, bool> > requestCondition = r => r.RequestHeader.Contains("Accept");

            imposter.Rules.First().Condition
            .Should().BeEquivalentTo(requestCondition);
        }
Example #7
0
        public void ImposterDefinition_ImposterConditionsAreCorrectlyAddedToImposter()
        {
            ImposterDefinition imposterDefinition = CreateSut();

            var imposter = imposterDefinition.DeclareResource("/test", HttpMethod.Post)
                           .When(r => r.Content.Contains(""))
                           .Then(new DefaultResponseCreator())
                           .Build();

            Expression <Func <Request, bool> > expectedCondition = r => r.Content.Contains("");

            imposter.Rules.First().Condition
            .Should().BeEquivalentTo(expectedCondition);
        }
Example #8
0
        public void Evaluate_WhenRequestContentDoesNotExistsAndConditionIsDefinedForRequestContent_ReturnsInternalServerError()
        {
            string responseContent = "None of evaluators could create a response.";

            var imposter = new ImposterDefinition("test")
                           .DeclareResource("/test", HttpMethod.Post)
                           .When(r => r.Content.Contains("none of the imposter conditions will be able to " +
                                                         "match this text"))
                           .Then(new DummyResponseCreator(responseContent, INTERNAL_SERVER_ERROR))
                           .Build();

            var request = new RequestBuilder()
                          .Build();

            var response = RulesEvaluator.Evaluate(imposter, request, out _);

            response.StatusCode.Should().Be(INTERNAL_SERVER_ERROR);
            response.Content.Should().Be(responseContent);
        }
Example #9
0
        public void Evaluate_WhenRequestContentMatchesTheCondition_ReturnsPreDefinedResponse()
        {
            string requestContent  = "dummy request";
            string responseContent = "dummy response.";

            var imposter = new ImposterDefinition("test")
                           .DeclareResource("/test", HttpMethod.Post)
                           .When(r => r.Content.Contains(requestContent))
                           .Then(new DummyResponseCreator(responseContent, STATUS_CODE_OK))
                           .Build();

            var request = new RequestBuilder()
                          .WithRequestContent(requestContent)
                          .Build();

            var response = RulesEvaluator.Evaluate(imposter, request, out _);

            response.StatusCode.Should().Be(STATUS_CODE_OK);
            response.Content.Should().Be(responseContent);
        }
Example #10
0
        public void Evaluate_WhenRequestHeaderDoesNotExistsAndConditionIsDefinedForRequestHeader_ReturnsInternalServerError()
        {
            string responseContent = "None of evaluators could create a response.";

            var imposter = new ImposterDefinition("test")
                           .DeclareResource("/test", HttpMethod.Post)
                           .When(r => r.RequestHeader.ContainsKeyAndValues("Accept", new []
            {
                "text/plain",
                "test/xml"
            }))
                           .Then(new DummyResponseCreator(responseContent, INTERNAL_SERVER_ERROR))
                           .Build();

            var request = new RequestBuilder()
                          .Build();

            var response = RulesEvaluator.Evaluate(imposter, request, out _);

            response.StatusCode.Should().Be(INTERNAL_SERVER_ERROR);
            response.Content.Should().Be(responseContent);
        }