Exemple #1
0
        public void ShouldTryToDeserializeXMLToGenericTypeArgument()
        {
            string xml;

            using (var ms = new MemoryStream())
                using (var sw = new StreamWriter(ms))
                {
                    new XmlSerializer(typeof(AModel)).Serialize(sw, new AModel {
                        D = 0.1, I = 1, L = 2, S = "s"
                    });
                    sw.Flush();
                    ms.Position = 0;
                    using (var sr = new StreamReader(ms))
                    {
                        xml = sr.ReadToEnd();
                    }
                }
            var test = TestWebRequestCreate.CreateTestRequest(xml);

            test.ContentType = "application/xml";
            dynamic me = new RESTClient();

            me.Url = "test://test";
            var a = me.GetTest <AModel>();

            Assert.AreEqual(typeof(AModel), a.GetType());
        }
Exemple #2
0
        public void ShouldBeAbleToChangeTheWayURLsAreBuiltUp()
        {
            TestWebRequestCreate.CreateTestRequest("dummy");

            var client = new RESTClient();

            dynamic me = client;

            me.Url        = "test://base";
            me.GetTest.In = new Func <Response, Stream> (r =>
            {
                Assert.AreEqual(r.ResponseUri, "test://base/test/param/");
                return(r.ResponseStream);
            });
            me.GetTest("param");

            TestWebRequestCreate.CreateTestRequest("dummy");

            me.GetTest.In = new Func <Response, Stream> (r =>
            {
                Assert.AreEqual(new Uri("test://base/test/param1/param2/"), r.ResponseUri);
                return(r.ResponseStream);
            });
            me.GetTest("param1", "param2");
        }
Exemple #3
0
        public void ShouldExecutePipeLineEntries()
        {
            TestWebRequestCreate.CreateTestRequest("dummy");
            dynamic me = new RESTClient();

            me.Url = "test://test";

            var pipelinetest  = "apeshit";
            var pipelinetest2 = "apeshit";

            me.InputPipeLine.Add(2.5,
                                 Tuple.Create("pipelineitem", new Action <Response>(resp => { pipelinetest = "yep"; })));
            me.OutputPipeLine.Add(0.002,
                                  Tuple.Create("pipelineitem",
                                               new Action <Request>(resp => { pipelinetest2 = "yep"; })));

            me.GetTest.In = new Func <Response, string>(w =>
            {
                string test;
                using (var sr = new StreamReader(w.ResponseStream))
                    test = sr.ReadToEnd();

                Assert.AreEqual(test, "dummy");
                return("");
            });
            me.GetTest();

            Assert.AreEqual("yep", pipelinetest);
            Assert.AreEqual("yep", pipelinetest2);
        }
Exemple #4
0
        public void OutputEditorInArgumentWithLotsOfArguments()
        {
            TestWebRequestCreate.CreateTestRequest("dummy");

            dynamic me = new RESTClient();

            me.Url = "test://base";

            var result = me.GetTest(1, 2, 3, 4, 5, (long)6, "7", "8", true,
                                    new Func <bool, string, long, string, int, int, int, int, int, Request>(
                                        (a, b, c, d, e, f, g, h, i) =>
            {
                Assert.IsTrue(a);
                Assert.AreEqual(b, "7");
                Assert.AreEqual(c, 6);
                Assert.AreEqual(d, "8");
                Assert.AreEqual(e, 1);
                Assert.AreEqual(f, 2);
                Assert.AreEqual(g, 3);
                Assert.AreEqual(h, 4);
                Assert.AreEqual(i, 5);
                return(new Request {
                    Body = new byte[16]
                });
            }),
                                    new Func <WebResponse, WebResponse>(r => r));

            Assert.AreEqual(new Uri("test://base/test"), result.ResponseUri);
        }
Exemple #5
0
        public void ShouldBeAbleToDeserializeADateTime()
        {
            var test = TestWebRequestCreate.CreateTestRequest(@"""/Date(1307871513107)/""");

            test.ContentType = "application/json";
            dynamic me = new RESTClient();

            me.Url = "test://test";
            var a = me.GetTest <DateTime>();

            Assert.AreEqual(typeof(DateTime), a.GetType());
        }
Exemple #6
0
        public void ShouldBeAbleToAddAHeaderInAOutputPipeLine()
        {
            var     req = TestWebRequestCreate.CreateTestRequest("dummy");
            dynamic me  = new RESTClient();

            me.Url = "test://test";

            me.OutputPipeLine.Add(0.002, Tuple.Create("pipelineitem", new Action <Request>(r => r.Headers.Add("Authorization", "yes"))));

            me.GetTest();
            Assert.AreEqual("yes", req.Headers["Authorization"]);
        }
Exemple #7
0
        public void PutVerbTest()
        {
            var     request = TestWebRequestCreate.CreateTestRequest("");
            dynamic me      = new RESTClient();

            me.Url         = "test://base";
            me.PutTest.Out = new Func <int, Request>(i => new Request {
                Body = BitConverter.GetBytes(i)
            });
            me.PutTest(1);
            Assert.AreEqual(BitConverter.ToInt32(((MemoryStream)request.GetRequestStream()).ToArray(), 0), 1);
        }
Exemple #8
0
        public void ShouldBeAbleToDeserializeAGuid()
        {
            var test = TestWebRequestCreate.CreateTestRequest(@"""378eb2ddc6d4461b9b4cf77ef0098daf""");

            test.ContentType = "application/json";
            dynamic me = new RESTClient();

            me.Url = "test://test";
            var a = me.GetTest <Guid>();

            Assert.AreEqual(typeof(Guid), a.GetType());
        }
Exemple #9
0
        public void EnsureThatTheSpecifiedOuputEditorGetsUsed()
        {
            TestWebRequestCreate.CreateTestRequest("dummy");
            dynamic me = new RESTClient();

            me.Url         = "test://test";
            me.GetTest.Out = new Func <string, Request>(s =>
            {
                Assert.AreEqual(s, "test");
                return(new Request {
                    Body = Encoding.UTF8.GetBytes(s)
                });
            });
            me.GetTest("test");
        }
Exemple #10
0
        public void ShouldTryToDeserializeJsonOnConvert()
        {
            var test =
                TestWebRequestCreate.CreateTestRequest(
                    SimpleJson.SerializeObject(new AModel {
                D = 0.1, I = 1, L = 2, S = "s"
            }));

            test.ContentType = "application/json";
            dynamic me = new RESTClient();

            me.Url = "test://test";
            AModel a = me.GetTest();

            Assert.AreEqual(typeof(AModel), a.GetType());
        }
Exemple #11
0
        public void ShouldReturnTheContentsAsAStringWhenConvertedToOneEvenIfTheContentTypeIsSerialiazble()
        {
            var test =
                TestWebRequestCreate.CreateTestRequest(
                    SimpleJson.SerializeObject(new AModel {
                D = 0.1, I = 1, L = 2, S = "s"
            }));

            test.ContentType = "application/json";
            dynamic me = new RESTClient();

            me.Url = "test://test";
            string a = me.GetTest();

            Assert.AreEqual(typeof(string), a.GetType());
            Assert.AreEqual("{\"I\":1,\"S\":\"s\",\"L\":2,\"D\":0.1}", a);
        }
Exemple #12
0
        public void EnsureThatTheSpecifiedInputEditorGetsUsed()
        {
            TestWebRequestCreate.CreateTestRequest("dummy");
            dynamic me = new RESTClient();

            me.Url        = "test://test";
            me.GetTest.In = new Func <Response, string>(w =>
            {
                string test;
                using (var sr = new StreamReader(w.ResponseStream))
                    test = sr.ReadToEnd();

                Assert.AreEqual(test, "dummy");
                return("");
            });
            me.GetTest();
        }
Exemple #13
0
        public void EnsureArgumentDelegatesTakePrecedenceOverPredefinedDelegates()
        {
            TestWebRequestCreate.CreateTestRequest(5);
            dynamic me = new RESTClient();

            me.Url        = "test://test";
            me.GetTest.In = new Func <Response, int>(s =>
            {
                Assert.Fail("Wrong delegate got called!");
                using (var sr = new BinaryReader(s.ResponseStream))
                    return(sr.ReadInt32());
            });

            var result = me.GetTest(new Func <Response, int>(s => 4));

            Assert.AreEqual(result, 4);
        }
Exemple #14
0
        public void MultipleNounTest()
        {
            TestWebRequestCreate.CreateTestRequest("");

            dynamic me = new RESTClient();

            me.Url = "test://base";
            var check = false;

            me.GetMultipleNounTest.In = new Func <Response, string>(w =>
            {
                Assert.AreEqual(new Uri("test://base/multiple/noun/test"), w.ResponseUri);
                check = true;
                return("yes");
            });
            me.GetMultipleNounTest();
            Assert.IsTrue(check);
        }
Exemple #15
0
        public void ShouldUseSpecifiedUrl()
        {
            TestWebRequestCreate.CreateTestRequest("dummy");
            dynamic me = new RESTClient();

            me.Url = "test://test";

            me.GetTest.Url = "bananas/overthere";

            me.OutputPipeLine.Add(0.1,
                                  Tuple.Create("hi",
                                               new Action <Request>(
                                                   r =>
                                                   Assert.AreEqual("test://test/bananas/overthere",
                                                                   r.Uri))));

            me.GetTest();
        }
Exemple #16
0
        public void EnsureCorrenctFillingOfOutputEditorArguments()
        {
            TestWebRequestCreate.CreateTestRequest("dummy");
            dynamic me = new RESTClient();

            me.Url         = "test://test";
            me.GetTest.Out =
                new Func <int, int, string, long, int, string, string, Request>((i1, i2, s1, l1, i3, s2, s3) =>
            {
                Assert.AreEqual(i1, 1);
                Assert.AreEqual(i2, 2);
                Assert.AreEqual(s1, "3");
                Assert.AreEqual(l1, 4);
                Assert.AreEqual(i3, 5);
                Assert.AreEqual(s2, "6");
                Assert.AreEqual(s3, "7");
                return(new Request());
            });
            me.GetTest(1, 2, "3", (long)4, 5, "6", "7");
        }
Exemple #17
0
        public void EnsureAFunctionCallWithEverythingAlsoWorks()
        {
            TestWebRequestCreate.CreateTestRequest("dummy");

            dynamic me = new RESTClient();

            me.Container.Register(typeof(IUriComposer), typeof(DefaultUriComposer));

            me.Url = "test://base";

            var result = me.GetTest <string>(
                /*QueryString*/
                new { page = "1", items = "50" },
                /*OutputEditorArguments*/
                1, 2, 3, 4, "5", "6",
                /*URLParam*/
                "param",
                /*OutputEditor*/
                new Func <int, string, int, string, int, int, Request>(
                    (i1, s1, i2, s2, i3, i4) =>
            {
                Assert.AreEqual(i1, 1);
                Assert.AreEqual(s1, "5");
                Assert.AreEqual(i2, 2);
                Assert.AreEqual(s2, "6");
                Assert.AreEqual(i3, 3);
                Assert.AreEqual(i4, 4);
                return(new Request {
                    Body = new byte[16]
                });
            }),
                /*InputEditor*/
                new Func <Response, string>(w =>
            {
                Assert.AreEqual(w.ResponseUri, "test://base/test/param?page=1&items=50");
                using (var sr = new StreamReader(w.ResponseStream))
                    return(sr.ReadToEnd());
            }));

            Assert.AreEqual(result, "dummy");
        }
Exemple #18
0
        public void OneWordFunctionsShouldAlwaysBeGetFunctions()
        {
            var request = TestWebRequestCreate.CreateTestRequest("");

            var client = new RESTClient();

            //register the default URI composer because the one below automaticaly takes precedence over the default one.

            client.Container.Register(typeof(IUriComposer), typeof(DefaultUriComposer));

            dynamic me = client;

            me.Url     = "test://base";
            me.Noun.In = new Func <Response, string> (w =>
            {
                Assert.AreEqual(new Uri("test://base/noun/test"), w.ResponseUri);
                return("yes");
            });
            me.Noun("test");
            Assert.AreEqual("GET", request.Method);
        }
Exemple #19
0
        public void UrlParameterArguments()
        {
            TestWebRequestCreate.CreateTestRequest("dummy");

            dynamic me = new RESTClient();

            me.Container.Register(typeof(IUriComposer), typeof(DefaultUriComposer));
            me.Url        = "test://base";
            me.GetTest.In = new Func <Response, Stream>(r =>
            {
                Assert.AreEqual(new Uri("test://base/test/param"), r.ResponseUri);
                return(r.ResponseStream);
            });
            me.GetTest("param");

            TestWebRequestCreate.CreateTestRequest("dummy");

            me.GetTest.In = new Func <Response, Stream>(r =>
            {
                Assert.AreEqual(new Uri("test://base/test/param1/param2"), r.ResponseUri);
                return(r.ResponseStream);
            });
            me.GetTest("param1", "param2");
        }
Exemple #20
0
        public void EnsureCorrenctFillingOfOutputEditorArgumentsWhenTheyArentCorrectlySorted()
        {
            var isused = false;

            TestWebRequestCreate.CreateTestRequest("dummy");
            dynamic me = new RESTClient();

            me.Url         = "test://test";
            me.GetTest.Out =
                new Func <int, int, string, long, int, string, string, Request>((i1, i2, s1, l1, i3, s2, s3) =>
            {
                isused = true;
                Assert.AreEqual(i1, 1);
                Assert.AreEqual(i2, 2);
                Assert.AreEqual(s1, "3");
                Assert.AreEqual(l1, 4);
                Assert.AreEqual(i3, 5);
                Assert.AreEqual(s2, "6");
                Assert.AreEqual(s3, "7");
                return(new Request());
            });
            me.GetTest(1, 2, 5, "3", "6", "7", (long)4);
            Assert.IsTrue(isused);
        }