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()); }
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"); }
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); }
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); }
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()); }
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"]); }
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); }
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()); }
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"); }
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()); }
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); }
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(); }
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); }
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); }
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(); }
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"); }
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"); }
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); }
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"); }
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); }