Пример #1
0
        internal Utils.Results Process(string userAgentPattern, string devicePattern, Validation state)
        {
            _dataSet.ResetCache();
            var provider    = new Provider(_dataSet);
            var match       = provider.CreateMatch();
            var results     = new FiftyOne.Tests.Integration.Utils.Results();
            var random      = new Random(0);
            var httpHeaders = _dataSet.HttpHeaders.Where(i => i.Equals("User-Agent") == false).ToArray();

            // Loop through setting 2 User-Agent headers.
            var userAgentIterator = UserAgentGenerator.GetEnumerable(20000, userAgentPattern).GetEnumerator();
            var deviceIterator    = UserAgentGenerator.GetEnumerable(20000, devicePattern).GetEnumerator();

            while (userAgentIterator.MoveNext() &&
                   deviceIterator.MoveNext())
            {
                var headers = new NameValueCollection();
                headers.Add(httpHeaders[random.Next(httpHeaders.Length)], deviceIterator.Current);
                headers.Add("User-Agent", userAgentIterator.Current);
                provider.Match(headers, match);
                Assert.IsTrue(match.Signature == null, "Signature not equal null");
                Assert.IsTrue(match.Difference == 0, "Match difference not equal to zero");
                Assert.IsTrue(match.Method == MatchMethods.Exact, "Match method not equal to Exact");
                Validate(match, state);
                results.Methods[match.Method]++;
            }

            return(results);
        }
Пример #2
0
        /// <summary>
        /// Sets random cookie values for properties which support JavaScript
        /// Property Value Override and checks that they are returned
        /// correctly.
        /// </summary>
        /// <remarks>
        /// The test checks that the multiple behaviours of <see cref="Values"/>
        /// work when dynamic values are provided.
        /// </remarks>
        /// <returns></returns>
        internal Utils.Results ProcessAll()
        {
            var target      = new Uri("http://localhost");
            var provider    = new Provider(_dataSet);
            var match       = provider.CreateMatch();
            var results     = new FiftyOne.Tests.Integration.Utils.Results();
            var random      = new Random(0);
            var httpHeaders = _dataSet.HttpHeaders.Where(i => i.Equals("User-Agent") == false).ToArray();

            // Loop through setting 2 User-Agent headers.
            var userAgentIterator = UserAgentGenerator.GetRandomUserAgents().GetEnumerator();

            while (userAgentIterator.MoveNext())
            {
                var headers = new NameValueCollection();
                headers.Add("User-Agent", userAgentIterator.Current);

                // Add a random value to the cookie.
                var cookies    = new CookieContainer();
                var testValues = new Dictionary <Property, string>();
                foreach (var property in _dataSet.JavaScriptProperties.Where(i =>
                                                                             i.Category.Equals(FiftyOne.Foundation.Mobile.Detection.Constants.PropertyValueOverrideCategory)))
                {
                    var propertyName = property.Name.Replace("JavaScript", "");
                    var key          = FiftyOne.Foundation.Mobile.Detection.Constants.PropertyValueOverrideCookiePrefix + propertyName;
                    var value        = UserAgentGenerator.GetRandomUserAgent(20);
                    cookies.Add(new Cookie(key, HttpUtility.UrlEncode(value), "/", target.Host));
                    testValues.Add(_dataSet.Properties[propertyName], value);
                }
                headers.Add("Cookie", cookies.GetCookieHeader(target));

                // Now check the match object returns the correct result
                // for the property. This is the primary test in this
                // integration test.

                // Note:
                // The value returned from the match accessor is passed through
                // UrlDecode as in this test .NET will not have already processed
                // the cookie and decoded it.
                provider.Match(headers, match);
                foreach (var test in testValues)
                {
                    Assert.IsTrue(
                        HttpUtility.UrlDecode(match[test.Key].ToString()).Equals(test.Value),
                        String.Format(
                            "Test failed for property '{0}'",
                            test.Key));
                }

                results.Methods[match.Method]++;
            }

            return(results);
        }
        internal Utils.Results Process(string userAgentPattern, string devicePattern, Validation state)
        {
            var results     = new FiftyOne.Tests.Integration.Utils.Results();
            var random      = new Random(0);
            var httpHeaders = _provider.HttpHeaders.Where(i => i.Equals("User-Agent") == false).ToArray();

            // Loop through setting 2 User-Agent headers.
            var userAgentIterator = UserAgentGenerator.GetEnumerable(20000, userAgentPattern).GetEnumerator();
            var deviceIterator    = UserAgentGenerator.GetEnumerable(20000, devicePattern).GetEnumerator();

            while (userAgentIterator.MoveNext() &&
                   deviceIterator.MoveNext())
            {
                var headers = new NameValueCollection();
                headers.Add(httpHeaders[random.Next(httpHeaders.Length)], deviceIterator.Current);
                headers.Add("User-Agent", userAgentIterator.Current);
                var indexes = _provider.GetDeviceIndexes(headers);
                Assert.IsTrue(indexes.Count > 0, "No indexes were found");
                Validate(indexes, state);
            }

            return(results);
        }