public void BackgroundHttpWebRequester_CreateRequest_Uses_Get_Under_2000_Bytes()
        {
            var shortUri = new Uri(BaseUriString);
            var request  = BackgroundHttpWebRequester.CreateRequest(shortUri);

            Assert.AreEqual("GET", request.Method);
            Assert.AreEqual(shortUri.AbsoluteUri, request.RequestUri.AbsoluteUri);
            Assert.AreEqual(-1, request.ContentLength);
        }
        public void BackgroundHttpWebRequester_CreateMessage_Uses_Post_Over_2000_Bytes()
        {
            var baseUri = new Uri(BaseUriString);
            var longUri = new Uri(baseUri.AbsoluteUri + "?" + TestHelpers.RandomChars(2000));

            var request = BackgroundHttpWebRequester.CreateRequest(longUri, false);

            Assert.AreEqual("POST", request.Method);
            Assert.AreEqual(baseUri.AbsoluteUri, request.RequestUri.AbsoluteUri);
            Assert.IsTrue(request.ContentLength > 100);
        }
        public void BackgroundHttpWebRequester_CreateRequest_Uses_Get_When_2000_Bytes()
        {
            var longUri       = new Uri(BaseUriString + "?" + TestHelpers.RandomChars(2000));
            var borderlineUri = new Uri(longUri.AbsoluteUri.Substring(0, 2000));

            var request = BackgroundHttpWebRequester.CreateRequest(borderlineUri);

            Assert.AreEqual("GET", request.Method);
            Assert.AreEqual(borderlineUri.AbsoluteUri, request.RequestUri.AbsoluteUri);
            Assert.AreEqual(-1, request.ContentLength);
        }
        public void BackgroundHttpWebRequester_Calls_Preprocessor()
        {
            const int expected = 19743587;
            var       actual   = 0;
            Action <HttpWebRequest> preprocessor = m => actual = expected;

            var requester = new BackgroundHttpWebRequester(preprocessor);

            requester.Start(TimeSpan.FromMilliseconds(10));
            requester.Add(new Uri(TestHelpers.Utm));

            TestHelpers.WaitForQueueToEmpty(requester);
            Assert.AreEqual(expected, actual);
        }