コード例 #1
0
 private RestData.Header find(ICollection <RestData.Header> actualHeaders,
                              RestData.Header expectedHeader)
 {
     foreach (RestData.Header h in actualHeaders)
     {
         bool   nameMatches          = h.Name.Equals(expectedHeader.Name);
         string expectedRegexPattern = expectedHeader.Value;
         if (!string.IsNullOrWhiteSpace(expectedRegexPattern))
         {
             expectedRegexPattern = expectedRegexPattern.Trim();
             // Was failing to match a URL with a query string because the "?" was parsed
             //  as a regex metacharacter.  So if the regex pattern appears to be a
             //  URL assume the "?" represents the start of the query string and escape it.
             if (expectedRegexPattern.ToLower().StartsWith("http://") ||
                 expectedRegexPattern.ToLower().StartsWith("https://"))
             {
                 expectedRegexPattern = expectedRegexPattern.Replace("?", @"\?");
             }
         }
         bool valueMatches = StringTools.regex(h.Value, expectedRegexPattern);
         if (nameMatches && valueMatches)
         {
             return(h);
         }
     }
     return(null);
 }
コード例 #2
0
        public override bool Equals(object expectedObj, object actualObj)
        {
            if (expectedObj == null || actualObj == null)
            {
                return(false);
            }
            // r1 and r2 are Map<String, String> containing either the header
            // from the HTTP response or the data value in the expected cell
            // equals checks for r1 being a subset of r2
            ICollection <RestData.Header> expected = (ICollection <RestData.Header>)expectedObj;
            ICollection <RestData.Header> actual   = (ICollection <RestData.Header>)actualObj;

            foreach (RestData.Header k in expected)
            {
                RestData.Header aHdr = find(actual, k);
                if (aHdr == null)
                {
                    addError("not found: [" + k.Name + " : " + k.Value + "]");
                }
            }
            return(Errors.Count == 0);
        }
コード例 #3
0
        public void Should_Match_Expected_Header_Containing_Regex()
        {
            // Arrange.
            RestData.Header expectedContentTypeHeaderWithRegex =
                new RestData.Header("content-type", "application/my-xml;.+");
            RestData.Header actualContentTypeHeader =
                new RestData.Header("content-type", "application/my-xml;charset=UTF-8");

            IList <RestData.Header> expectedHeaders =
                new List <RestData.Header> {
                expectedContentTypeHeaderWithRegex
            };
            IList <RestData.Header> actualHeaders =
                new List <RestData.Header> {
                actualContentTypeHeader
            };

            // Act.
            bool actualResult = _adapter.Equals(expectedHeaders, actualHeaders);

            // Assert.
            Assert.IsTrue(actualResult);
        }