public void RequestMessageBodyMatcher_GetMatchingScore_BodyAsString_IStringMatchers()
        {
            // Assign
            var body = new BodyData
            {
                BodyAsString     = "b",
                DetectedBodyType = BodyType.String
            };
            var stringMatcherMock1 = new Mock <IStringMatcher>();

            stringMatcherMock1.Setup(m => m.IsMatch(It.IsAny <string>())).Returns(0.2d);
            var stringMatcherMock2 = new Mock <IStringMatcher>();

            stringMatcherMock2.Setup(m => m.IsMatch(It.IsAny <string>())).Returns(0.8d);
            var matchers = new[] { stringMatcherMock1.Object, stringMatcherMock2.Object };

            var requestMessage = new RequestMessage(new UrlDetails("http://localhost"), "GET", "127.0.0.1", body);

            var matcher = new RequestMessageBodyMatcher(matchers.Cast <IMatcher>().ToArray());

            // Act
            var    result = new RequestMatchResult();
            double score  = matcher.GetMatchingScore(requestMessage, result);

            // Assert
            Check.That(score).IsEqualTo(0.8d);

            // Verify
            stringMatcherMock1.Verify(m => m.GetPatterns(), Times.Never);
            stringMatcherMock1.Verify(m => m.IsMatch("b"), Times.Once);
            stringMatcherMock2.Verify(m => m.GetPatterns(), Times.Never);
            stringMatcherMock2.Verify(m => m.IsMatch("b"), Times.Once);
        }
        public void RequestMessageBodyMatcher_GetMatchingScore_BodyAsBytes_IStringMatcher()
        {
            // Assign
            var body = new BodyData
            {
                BodyAsBytes      = new byte[] { 1 },
                DetectedBodyType = BodyType.Bytes
            };
            var stringMatcherMock = new Mock <IStringMatcher>();

            stringMatcherMock.Setup(m => m.IsMatch(It.IsAny <string>())).Returns(0.5d);

            var requestMessage = new RequestMessage(new UrlDetails("http://localhost"), "GET", "127.0.0.1", body);

            var matcher = new RequestMessageBodyMatcher(stringMatcherMock.Object);

            // Act
            var    result = new RequestMatchResult();
            double score  = matcher.GetMatchingScore(requestMessage, result);

            // Assert
            Check.That(score).IsEqualTo(0.0d);

            // Verify
            stringMatcherMock.Verify(m => m.GetPatterns(), Times.Never);
            stringMatcherMock.Verify(m => m.IsMatch(It.IsAny <string>()), Times.Never);
        }
        public void RequestMessageBodyMatcher_GetMatchingScore_BodyAsJson_IObjectMatcher()
        {
            // Assign
            var body = new BodyData
            {
                BodyAsJson       = 42,
                DetectedBodyType = BodyType.Json
            };
            var objectMatcherMock = new Mock <IObjectMatcher>();

            objectMatcherMock.Setup(m => m.IsMatch(It.IsAny <object>())).Returns(0.5d);

            var requestMessage = new RequestMessage(new UrlDetails("http://localhost"), "GET", "127.0.0.1", body);

            var matcher = new RequestMessageBodyMatcher(objectMatcherMock.Object);

            // Act
            var    result = new RequestMatchResult();
            double score  = matcher.GetMatchingScore(requestMessage, result);

            // Assert
            Check.That(score).IsEqualTo(0.5d);

            // Verify
            objectMatcherMock.Verify(m => m.IsMatch(42), Times.Once);
        }
        public void RequestMessageBodyMatcher_GetMatchingScore_BodyAsJson_IStringMatcher()
        {
            // Assign
            var body = new BodyData
            {
                BodyAsJson = new { value = 42 }
            };
            var stringMatcherMock = new Mock <IStringMatcher>();

            stringMatcherMock.Setup(m => m.IsMatch(It.IsAny <string>())).Returns(0.5d);

            var requestMessage = new RequestMessage(new Uri("http://localhost"), "GET", "127.0.0.1", body);

            var matcher = new RequestMessageBodyMatcher(stringMatcherMock.Object);

            // Act
            var    result = new RequestMatchResult();
            double score  = matcher.GetMatchingScore(requestMessage, result);

            // Assert
            Check.That(score).IsEqualTo(0.0d);

            // Verify
            stringMatcherMock.Verify(m => m.IsMatch("b"), Times.Never);
        }
예제 #5
0
        public void RequestMessageBodyMatcher_GetMatchingScore_BodyAsString_NotNullOrEmptyObjectMatcher(string data, double expected)
        {
            // Assign
            var body = new BodyData
            {
                BodyAsString     = data,
                DetectedBodyType = BodyType.String
            };
            var requestMessage = new RequestMessage(new UrlDetails("http://localhost"), "GET", "127.0.0.1", body);

            var matcher = new RequestMessageBodyMatcher(new NotNullOrEmptyMatcher());

            // Act
            var    result = new RequestMatchResult();
            double score  = matcher.GetMatchingScore(requestMessage, result);

            // Assert
            score.Should().Be(expected);
        }
예제 #6
0
        public void RequestMessageBodyMatcher_GetMatchingScore_BodyAsJson_CSharpCodeMatcher()
        {
            // Assign
            var body = new BodyData
            {
                BodyAsJson       = new { value = 42 },
                DetectedBodyType = BodyType.Json
            };

            var requestMessage = new RequestMessage(new UrlDetails("http://localhost"), "GET", "127.0.0.1", body);

            var matcher = new RequestMessageBodyMatcher(new CSharpCodeMatcher(MatchBehaviour.AcceptOnMatch, "return it.value == 42;"));

            // Act
            var    result = new RequestMatchResult();
            double score  = matcher.GetMatchingScore(requestMessage, result);

            // Assert
            Check.That(score).IsEqualTo(1.0d);
        }
        public async Task RequestMessageBodyMatcher_GetMatchingScore_Funcs_Matching(object body, RequestMessageBodyMatcher matcher, bool shouldMatch)
        {
            // assign
            BodyData bodyData;

            if (body is byte[] b)
            {
                bodyData = await BodyParser.Parse(new MemoryStream(b), null);
            }
            else if (body is string s)
            {
                bodyData = await BodyParser.Parse(new MemoryStream(Encoding.UTF8.GetBytes(s)), null);
            }
            else
            {
                throw new Exception();
            }

            var requestMessage = new RequestMessage(new UrlDetails("http://localhost"), "GET", "127.0.0.1", bodyData);

            // act
            var result = new RequestMatchResult();
            var score  = matcher.GetMatchingScore(requestMessage, result);

            // assert
            Check.That(score).IsEqualTo(shouldMatch ? 1d : 0d);
        }