示例#1
0
        public void New_Disables_Unsupported_Protocols()
        {
            var request = new SodaRequest(exampleUri, "GET", null, null, null);

            Assert.False((ServicePointManager.SecurityProtocol & SecurityProtocolType.Ssl3) == SecurityProtocolType.Ssl3);
            Assert.False((ServicePointManager.SecurityProtocol & SecurityProtocolType.Tls) == SecurityProtocolType.Tls);
        }
示例#2
0
        public void New_Returns_Request_With_Unset_ContentLength_For_Empty_Payload()
        {
            var request = new SodaRequest(exampleUri, "POST", null, null, null);

            //The default is -1, which indicates the property has not been set and that there is no request data to send.
            //http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.contentlength(v=vs.110).aspx
            Assert.AreEqual(-1, request.webRequest.ContentLength);
        }
示例#3
0
        public void New_Sets_Timeout_To_HttpWebRequest_Timeout_If_Not_Given()
        {
            var newHttpRequest = WebRequest.Create(exampleUri) as HttpWebRequest;

            var request = new SodaRequest(exampleUri, "GET", null, null, null, SodaDataFormat.JSON, null, null);

            Assert.AreEqual(newHttpRequest.Timeout, request.webRequest.Timeout);
        }
示例#4
0
        public void New_Sets_Timeout_To_Given_Timeout()
        {
            int timeout = 100;

            var request = new SodaRequest(exampleUri, "GET", null, null, null, SodaDataFormat.JSON, null, timeout);

            Assert.AreEqual(timeout, request.webRequest.Timeout);
        }
示例#5
0
        public void New_Enables_Minimum_Protocol()
        {
            ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls;

            var request = new SodaRequest(exampleUri, "GET", null, null, null);

            Assert.True((ServicePointManager.SecurityProtocol & SecurityProtocolType.Tls11) == SecurityProtocolType.Tls11);
        }
示例#6
0
        public void New_Sets_Timeout_To_HttpWebRequest_Timeout_If_Not_Given()
        {
            var client = new HttpClient();

            var request = new SodaRequest(exampleUri, "GET", null, null, null, SodaDataFormat.JSON, null, null);

            Assert.AreEqual(client.Timeout, request.Client.Timeout);
        }
示例#7
0
        public void New_Sets_Timeout_To_Given_Timeout()
        {
            int timeout = 100;

            var request     = new SodaRequest(exampleUri, "GET", null, null, null, SodaDataFormat.JSON, null, timeout);
            var timeoutspan = new TimeSpan(0, 0, 0, 0, timeout);

            Assert.AreEqual(timeoutspan, request.Client.Timeout);
        }
示例#8
0
        public void ParseResponse_ReThrows_JSON_Parse_Exception_As_InvalidOperationException()
        {
            //expect a response of JSON data
            var request = new SodaRequest(exampleUri, "GET", null, null, null, SodaDataFormat.JSON);

            //we get html5 back from example.com
            //it can't be parsed to a json string
            request.ParseResponse <string>().ToLower();
        }
示例#9
0
        public void New_Maintains_Higher_Protocol()
        {
            ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

            var request = new SodaRequest(exampleUri, "GET", null, null, null);

            Assert.False((ServicePointManager.SecurityProtocol & SecurityProtocolType.Tls11) == SecurityProtocolType.Tls11);
            Assert.True((ServicePointManager.SecurityProtocol & SecurityProtocolType.Tls12) == SecurityProtocolType.Tls12);
        }
示例#10
0
        public void New_Returns_Request_With_Basic_Authorization_Header_From_Specified_Credentials()
        {
            string username = "******";
            string password = "******";
            var    expected = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(Encoding.UTF8.GetBytes(String.Format("{0}:{1}", username, password))));

            var request = new SodaRequest(exampleUri, "GET", null, username, password);

            Assert.AreEqual(expected, request.Client.DefaultRequestHeaders.Authorization);
        }
示例#11
0
        public void New_Sets_ContentLength_Header_To_Payload_Bytes_Length()
        {
            string payload = "This is the request payload to send";

            byte[] payloadBytes = Encoding.UTF8.GetBytes(payload);

            var request = new SodaRequest(exampleUri, "POST", null, null, null, SodaDataFormat.JSON, payload);

            Assert.AreEqual(payloadBytes.Length, request.webRequest.ContentLength);
        }
示例#12
0
        public void New_Returns_Request_With_Basic_Authorization_Header_From_Specified_Credentials()
        {
            string username = "******";
            string password = "******";
            string expected = String.Format("Basic {0}", Convert.ToBase64String(Encoding.UTF8.GetBytes(String.Format("{0}:{1}", username, password))));

            var request = new SodaRequest(exampleUri, "GET", null, username, password);

            Assert.AreEqual(expected, request.webRequest.Headers["Authorization"]);
        }
示例#13
0
        public void New_Returns_Request_With_Basic_Authorization_Header_From_Specified_Credentials()
        {
            string username = "******";
            string password = "******";
            string expected = String.Format("Basic {0}", Convert.ToBase64String(Encoding.UTF8.GetBytes(String.Format("{0}:{1}", username, password))));

            var request = new SodaRequest(exampleUri, "GET", null, username, password);

            Assert.AreEqual(expected, request.webRequest.Headers["Authorization"]);
        }
示例#14
0
        public void ParseResponse_Can_GET_Example()
        {
            var request = new SodaRequest(exampleUri, "GET", null, null, null, SodaDataFormat.XML);

            string result = request.ParseResponse <string>().ToLower();

            StringAssert.Contains("<!doctype", result);
            StringAssert.Contains("<html>", result);
            StringAssert.Contains("<head>", result);
            StringAssert.Contains("</head>", result);
            StringAssert.Contains("<body>", result);
            StringAssert.Contains("</body>", result);
            StringAssert.Contains("</html>", result);
        }
示例#15
0
        public void ParseResponse_Non_GET_Sends_Request_To_Example_Using_Method(string input)
        {
            var    request = new SodaRequest(exampleUri, input, null, null, null);
            string result;

            try
            {
                result = request.ParseResponse <string>();
            }
            catch (WebException webException)
            {
                var webResponse = webException.Response as HttpWebResponse;

                Assert.AreEqual(exampleUri, webResponse.ResponseUri);
                StringAssert.AreEqualIgnoringCase(input, webResponse.Method);
            }
        }
示例#16
0
        public void ParseResponse_Non_GET_Sends_Request_To_Example_Using_Method(string method)
        {
            var    request = new SodaRequest(exampleUri, method, null, null, null);
            string result;

            try
            {
                result = request.ParseResponse <string>();
            }
            catch (InvalidOperationException)
            {
            }
            finally
            {
                Assert.AreEqual(exampleUri, request.ResponseMessage.RequestMessage.RequestUri);
                StringAssert.AreEqualIgnoringCase(method, request.ResponseMessage.RequestMessage.Method.Method);
            }
        }
示例#17
0
        public void New_POST_PUT_With_CSV_DataFormat_Sets_ContentType_Header(string input)
        {
            var request = new SodaRequest(exampleUri, input, null, null, null, SodaDataFormat.CSV);

            Assert.AreEqual("text/csv", request.webRequest.ContentType);
        }
示例#18
0
        public void New_Returns_Request_Using_HTTP_1_1()
        {
            var request = new SodaRequest(exampleUri, "GET", null, null, null);

            Assert.AreEqual(new Version("1.1"), request.webRequest.ProtocolVersion);
        }
示例#19
0
        public void New_Non_GET_With_JSON_DataFormat_Sets_ContentType_Header(string input)
        {
            var request = new SodaRequest(exampleUri, input, null, null, null, SodaDataFormat.JSON);

            Assert.AreEqual("application/json", request.webRequest.ContentType);
        }
示例#20
0
        public void New_Returns_Request_With_Specified_Uri()
        {
            var request = new SodaRequest(exampleUri, "GET", null, null, null);

            Assert.AreEqual(exampleUri, request.webRequest.RequestUri);
        }
示例#21
0
        public void New_Returns_Request_With_Specified_Uri()
        {
            var request = new SodaRequest(exampleUri, "GET", null, null, null);

            Assert.AreEqual(exampleUri, request.webRequest.RequestUri);
        }
示例#22
0
        public void New_Returns_Request_Using_HTTP_1_1()
        {
            var request = new SodaRequest(exampleUri, "GET", null, null, null);

            Assert.AreEqual(new Version("1.1"), request.webRequest.ProtocolVersion);
        }
示例#23
0
        public void New_GET_With_XML_DataFormat_Sets_Accept_Header()
        {
            var request = new SodaRequest(exampleUri, "GET", null, null, null, SodaDataFormat.XML);

            Assert.AreEqual("application/rdf+xml", request.webRequest.Accept);
        }
示例#24
0
        public void New_With_JSON_DataFormat_Sets_Accept_Header(string input)
        {
            var request = new SodaRequest(exampleUri, input, null, null, null, SodaDataFormat.JSON);

            Assert.AreEqual("application/json", request.webRequest.Accept);
        }
示例#25
0
        public void New_POST_PUT_With_CSV_DataFormat_Sets_ContentType_Header(string input)
        {
            var request = new SodaRequest(exampleUri, input, null, null, null, SodaDataFormat.CSV);

            Assert.AreEqual("text/csv", request.webRequest.ContentType);
        }
示例#26
0
        public void New_GET_With_XML_DataFormat_Sets_Accept_Header()
        {
            var request = new SodaRequest(exampleUri, "GET", null, null, null, SodaDataFormat.XML);

            Assert.IsTrue(request.Client.DefaultRequestHeaders.Accept.Contains(new MediaTypeWithQualityHeaderValue("application/rdf+xml")));
        }
示例#27
0
        public void New_Returns_Request_With_Unset_Content_For_Empty_Payload()
        {
            var request = new SodaRequest(exampleUri, "POST", null, null, null);

            Assert.IsNull(request.RequestMessage.Content);
        }
示例#28
0
        public void New_GET_With_CSV_DataFormat_Sets_Accept_Header()
        {
            var request = new SodaRequest(exampleUri, "GET", null, null, null, SodaDataFormat.CSV);

            Assert.IsTrue(request.Client.DefaultRequestHeaders.Accept.Contains(new MediaTypeWithQualityHeaderValue("text/csv")));
        }
示例#29
0
        public void New_Returns_Request_With_No_Authorization_Header_When_No_Credentials_Specified()
        {
            var request = new SodaRequest(exampleUri, "GET", null, null, null);

            Assert.IsNull(request.webRequest.Headers["Authorization"]);
        }
示例#30
0
        public void New_Sets_Timeout_To_Given_Timeout()
        {
            int timeout = 100;

            var request = new SodaRequest(exampleUri, "GET", null, null, null, SodaDataFormat.JSON, null, timeout);

            Assert.AreEqual(timeout, request.webRequest.Timeout);
        }
示例#31
0
        public void New_GET_With_XML_DataFormat_Sets_Accept_Header()
        {
            var request = new SodaRequest(exampleUri, "GET", null, null, null, SodaDataFormat.XML);

            Assert.AreEqual("application/rdf+xml", request.webRequest.Accept);
        }
示例#32
0
        public void New_Returns_Request_With_No_Authorization_Header_When_No_Credentials_Specified()
        {
            var request = new SodaRequest(exampleUri, "GET", null, null, null);

            Assert.IsNull(request.webRequest.Headers["Authorization"]);
        }
示例#33
0
        public void New_Sets_ContentLength_Header_To_Payload_Bytes_Length()
        {
            string payload = "This is the request payload to send";
            byte[] payloadBytes = Encoding.UTF8.GetBytes(payload);

            var request = new SodaRequest(exampleUri, "POST", null, null, null, SodaDataFormat.JSON, payload);

            Assert.AreEqual(payloadBytes.Length, request.webRequest.ContentLength);
        }
示例#34
0
 public void ParseResponse_Can_GET_Example()
 {
     var request = new SodaRequest(exampleUri, "GET", null, null, null, SodaDataFormat.XML);
     
     string result = request.ParseResponse<string>().ToLower();
     
     StringAssert.Contains("<!doctype", result);
     StringAssert.Contains("<html>", result);
     StringAssert.Contains("<head>", result);
     StringAssert.Contains("</head>", result);
     StringAssert.Contains("<body>", result);
     StringAssert.Contains("</body>", result);
     StringAssert.Contains("</html>", result);
 }
示例#35
0
        public void New_Returns_Request_With_Unset_ContentLength_For_Empty_Payload()
        {
            var request = new SodaRequest(exampleUri, "POST", null, null, null);

            //The default is -1, which indicates the property has not been set and that there is no request data to send.
            //http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.contentlength(v=vs.110).aspx
            Assert.AreEqual(-1, request.webRequest.ContentLength);
        }
示例#36
0
        public void New_Returns_Request_With_Specified_X_App_Token_Header(string input)
        {
            var request = new SodaRequest(exampleUri, "GET", input, null, null);

            Assert.AreEqual(input, request.webRequest.Headers["X-App-Token"]);
        }
示例#37
0
        public void New_Returns_Request_With_Specified_Method(string input)
        {
            var request = new SodaRequest(exampleUri, input, null, null, null);

            StringAssert.AreEqualIgnoringCase(input, request.webRequest.Method);
        }
示例#38
0
        public void New_Returns_Request_Using_HTTP_1_1_Or_Greater()
        {
            var request = new SodaRequest(exampleUri, "GET", null, null, null);

            Assert.GreaterOrEqual(request.RequestMessage.Version, new Version("1.1"));
        }
示例#39
0
        public void ParseResponse_Non_GET_Sends_Request_To_Example_Using_Method(string input)
        {
            var request = new SodaRequest(exampleUri, input, null, null, null);
            string result;

            try
            {
                result = request.ParseResponse<string>();
            }
            catch (WebException webException)
            {
                var webResponse = webException.Response as HttpWebResponse;

                Assert.AreEqual(exampleUri, webResponse.ResponseUri);
                StringAssert.AreEqualIgnoringCase(input, webResponse.Method);
            }
        }
示例#40
0
        public void New_Returns_Request_With_Specified_X_App_Token_Header(string input)
        {
            var request = new SodaRequest(exampleUri, "GET", input, null, null);

            Assert.IsTrue(System.Linq.Enumerable.Contains(request.Client.DefaultRequestHeaders.GetValues("X-App-Token"), input));
        }
示例#41
0
        public void New_Returns_Request_With_Specified_Method(string input)
        {
            var request = new SodaRequest(exampleUri, input, null, null, null);

            StringAssert.AreEqualIgnoringCase(input, request.webRequest.Method);
        }
示例#42
0
        public void New_GET_With_CSV_DataFormat_Sets_Accept_Header()
        {
            var request = new SodaRequest(exampleUri, "GET", null, null, null, SodaDataFormat.CSV);

            Assert.AreEqual("text/csv", request.webRequest.Accept);
        }
示例#43
0
        public void New_Returns_Request_With_Specified_X_App_Token_Header(string input)
        {
            var request = new SodaRequest(exampleUri, "GET", input, null, null);

            Assert.AreEqual(input, request.webRequest.Headers["X-App-Token"]);
        }
示例#44
0
        public void New_With_JSON_DataFormat_Sets_Accept_Header(string input)
        {
            var request = new SodaRequest(exampleUri, input, null, null, null, SodaDataFormat.JSON);

            Assert.AreEqual("application/json", request.webRequest.Accept);
        }
示例#45
0
        public void New_Sets_Timeout_To_HttpWebRequest_Timeout_If_Not_Given()
        {
            var newHttpRequest = WebRequest.Create(exampleUri) as HttpWebRequest;

            var request = new SodaRequest(exampleUri, "GET", null, null, null, SodaDataFormat.JSON, null, null);

            Assert.AreEqual(newHttpRequest.Timeout, request.webRequest.Timeout);
        }
示例#46
0
 public void ParseResponse_ReThrows_JSON_Parse_Exception_As_InvalidOperationException()
 {
     //expect a response of JSON data
     var request = new SodaRequest(exampleUri, "GET", null, null, null, SodaDataFormat.JSON);
     //we get html5 back from example.com
     //it can't be parsed to a json string
     request.ParseResponse<string>().ToLower();
 }
示例#47
0
        public void New_Non_GET_With_JSON_DataFormat_Sets_ContentType_Header(string input)
        {
            var request = new SodaRequest(exampleUri, input, null, null, null, SodaDataFormat.JSON);

            Assert.AreEqual("application/json", request.webRequest.ContentType);
        }
示例#48
0
        public void New_GET_With_CSV_DataFormat_Sets_Accept_Header()
        {
            var request = new SodaRequest(exampleUri, "GET", null, null, null, SodaDataFormat.CSV);

            Assert.AreEqual("text/csv", request.webRequest.Accept);
        }