public void Base64MultiLine() { string xml = @"<?xml version=""1.0""?> <methodCall> <methodName>TestHex</methodName> <params> <param> <value> <base64>AQIDBAUGBwgJ AQIDBAUGBwg=</base64> </value> </param> </params> </methodCall>"; StringReader sr = new StringReader(xml); var deserializer = new XmlRpcRequestDeserializer(); XmlRpcRequest request = deserializer.DeserializeRequest(sr, null); Assert.AreEqual(request.args[0].GetType(), typeof(byte[]), "argument is byte[]"); byte[] ret = (byte[])request.args[0]; Assert.AreEqual(17, ret.Length, "argument is byte[17]"); for (int i = 0; i < 9; i++) { Assert.AreEqual(i + 1, ret[i], "first 9 members are 1 to 9"); } for (int i = 0; i < 8; i++) { Assert.AreEqual(i + 1, ret[i + 9], "last 8 members are 1 to 9"); } }
Stream TryInvoke(Stream requestStream) { var deserializer = new XmlRpcRequestDeserializer(); var serviceAttr = (XmlRpcServiceAttribute)Attribute.GetCustomAttribute(GetType(), typeof(XmlRpcServiceAttribute)); if (serviceAttr != null) { SetSerializerSettings(serviceAttr, deserializer); } var xmlRpcReq = deserializer.DeserializeRequest(requestStream, GetType()); XmlRpcResponse xmlRpcResp = null; if (xmlRpcReq.Method.Equals("system.multicall", StringComparison.OrdinalIgnoreCase)) { var resultList = InvokeMulticall(xmlRpcReq); xmlRpcResp = new XmlRpcResponse(resultList.Where(x => x != null).ToArray()); } else { var result = Invoke(xmlRpcReq); xmlRpcResp = new XmlRpcResponse(result); } var responseStream = new MemoryStream(); var serializer = new XmlRpcResponseSerializer(); serializer.SerializeResponse(responseStream, xmlRpcResp); responseStream.Seek(0, SeekOrigin.Begin); return(responseStream); }
public void DeserializeObjectParamsStrings() { string xml = @"<?xml version=""1.0""?> <methodCall> <methodName>Bar</methodName> <params> <param> <value> <string>one</string> </value> </param> <param> <value> <string>two</string> </value> </param> </params> </methodCall>"; StringReader sr = new StringReader(xml); var deserializer = new XmlRpcRequestDeserializer(); XmlRpcRequest request = deserializer.DeserializeRequest(sr, this.GetType()); Assert.AreEqual(request.method, "Bar", "method is Foo"); Assert.AreEqual(request.args[0].GetType(), typeof(string[]), "argument is string[]"); Assert.AreEqual((string[])request.args[0], new string[] { "one", "two" }, "argument is params array \"one\", \"two\""); }
public void DeserializeObjectParams1() { string xml = @"<?xml version=""1.0""?> <methodCall> <methodName>Foo1</methodName> <params> <param> <value> <i4>5678</i4> </value> </param> <param> <value> <i4>1</i4> </value> </param> <param> <value> <string>one</string> </value> </param> </params> </methodCall>"; StringReader sr = new StringReader(xml); var serializer = new XmlRpcRequestDeserializer(); XmlRpcRequest request = serializer.DeserializeRequest(sr, this.GetType()); Assert.AreEqual(request.method, "Foo1", "method is Foo"); Assert.AreEqual((int)request.args[0], 5678, "first argument is int"); Assert.AreEqual(request.args[1].GetType(), typeof(object[]), "argument is object[]"); Assert.AreEqual((object[])request.args[1], new object[] { 1, "one" }, "second argument is params array 1, \"one\""); }
public void DeserializeObjectInvalidParams() { string xml = @"<?xml version=""1.0""?> <methodCall> <methodName>Bar</methodName> <params> <param> <value> <string>string one</string> </value> </param> <param> <value> <i4>2</i4> </value> </param> </params> </methodCall>"; StringReader sr = new StringReader(xml); var deserializer = new XmlRpcRequestDeserializer(); try { XmlRpcRequest request = deserializer.DeserializeRequest(sr, this.GetType()); Assert.Fail("Should detect invalid type of parameter #2"); } catch (XmlRpcTypeMismatchException) { } }
public void MissingMethodCall() { string xml = @"<?xml version=""1.0"" ?> <elem/>"; StringReader sr = new StringReader(xml); var deserializer = new XmlRpcRequestDeserializer(); XmlRpcRequest request = deserializer.DeserializeRequest(sr, null); }
public void TooManyParameters() { string xml = @"<?xml version=""1.0""?> <methodCall> <methodName>blogger.getUsersBlogs</methodName> <params> <param> <value> <string>ffffffabffffffce6dffffff93ffffffac29ffffffc9fffffff826ffffffdefffff fc9ff\ ffffe43c0b763036ffffffa0fffffff3ffffffa963377716</string> </value> </param> <param> <value> <string>myusername</string> </value> </param> <param> <value> <string>mypassword</string> </value> </param> </params> </methodCall>"; StringReader sr = new StringReader(xml); var deserializer = new XmlRpcRequestDeserializer(); XmlRpcRequest request = deserializer.DeserializeRequest(sr, GetType()); }
public void InvalidXml() { string xml = @"<?xml version=""1.0"" ?> <methodCall> </duffMmethodCall>"; StringReader sr = new StringReader(xml); var deserializer = new XmlRpcRequestDeserializer(); XmlRpcRequest request = deserializer.DeserializeRequest(sr, null); }
public void StructProperties() { string xml = @"<?xml version=""1.0""?> <methodCall> <methodName>Foo</methodName> <params> <param> <value> <struct> <member> <name>member1</name> <value> <i4>1</i4> </value> </member> <member> <name>member2</name> <value> <i4>2</i4> </value> </member> <member> <name>member-3</name> <value> <i4>3</i4> </value> </member> <member> <name>member-4</name> <value> <i4>4</i4> </value> </member> </struct> </value> </param> </params> </methodCall>"; StringReader sr = new StringReader(xml); var deserializer = new XmlRpcRequestDeserializer(); XmlRpcRequest request = deserializer.DeserializeRequest(sr, null); Assert.AreEqual(request.args[0].GetType(), typeof(XmlRpcStruct), "argument is XmlRpcStruct"); XmlRpcStruct xrs = (XmlRpcStruct)request.args[0]; Assert.IsTrue(xrs.Count == 4, "XmlRpcStruct has 4 members"); Assert.IsTrue(xrs.ContainsKey("member1") && (int)xrs["member1"] == 1, "member1"); Assert.IsTrue(xrs.ContainsKey("member2") && (int)xrs["member2"] == 2, "member2"); Assert.IsTrue(xrs.ContainsKey("member-3") && (int)xrs["member-3"] == 3, "member-3"); Assert.IsTrue(xrs.ContainsKey("member-4") && (int)xrs["member-4"] == 4, "member-4"); }
public void MissingParams() { string xml = @"<?xml version=""1.0"" ?> <methodCall> <methodName>TestString</methodName> </methodCall>"; StringReader sr = new StringReader(xml); var deserializer = new XmlRpcRequestDeserializer(); XmlRpcRequest request = deserializer.DeserializeRequest(sr, null); }
public void NoParam1() { string xml = @"<?xml version=""1.0"" ?> <methodCall> <methodName>MethodNoArgs</methodName> <params/> </methodCall>"; StringReader sr = new StringReader(xml); var serializer = new XmlRpcRequestDeserializer(); XmlRpcRequest request = serializer.DeserializeRequest(sr, this.GetType()); }
/// <summary>Classes Main method.</summary> /// <remarks>This method opens an XML file as a <c>StreamReader</c> and then asks /// <c>XmlRpcRequestDeserializer.Parse</c> to deserialize it into an <c>XmlRpcRequest</c>. The /// resultant request is now displayed. /// </remarks> public static void Main(String[] args) { Logger.Delegate = new Logger.LoggerDelegate(WriteEntry); XmlRpcRequestDeserializer deserializer = new XmlRpcRequestDeserializer(); Console.WriteLine("Attempting to deserialize " + args[0]); StreamReader input = new StreamReader(args[0]); XmlRpcRequest req = (XmlRpcRequest)deserializer.Deserialize(input); Console.WriteLine(req); }
public void DeserializeMassimo() { StringReader sr = new StringReader(massimoRequest); var deserializer = new XmlRpcRequestDeserializer(); XmlRpcRequest request = deserializer.DeserializeRequest(sr, this.GetType()); Assert.AreEqual(request.method, "Send_Param", "method is Send_Param"); Assert.AreEqual(typeof(string), request.args[0].GetType(), "argument is string"); Assert.AreEqual(typeof(object[]), request.args[1].GetType(), "argument is object[]"); }
public void DateTimeLocales() { CultureInfo oldci = Thread.CurrentThread.CurrentCulture; try { foreach (string locale in Utils.GetLocales()) { try { CultureInfo ci = new CultureInfo(locale); Thread.CurrentThread.CurrentCulture = ci; if (ci.LCID == 0x401 || // ar-SA (Arabic - Saudi Arabia) ci.LCID == 0x465 || // div-MV (Dhivehi - Maldives) ci.LCID == 0x41e) // th-TH (Thai - Thailand) { break; } DateTime dt = new DateTime(1900, 01, 02, 03, 04, 05); while (dt < DateTime.Now) { Stream stm = new MemoryStream(); XmlRpcRequest req = new XmlRpcRequest(); req.args = new Object[] { dt }; req.method = "Foo"; var ser = new XmlRpcRequestSerializer(); ser.SerializeRequest(stm, req); stm.Position = 0; var deserializer = new XmlRpcRequestDeserializer(); XmlRpcRequest request = deserializer.DeserializeRequest(stm, null); Assert.IsTrue(request.args[0] is DateTime, "argument is DateTime"); DateTime dt0 = (DateTime)request.args[0]; Assert.AreEqual(dt0, dt, "DateTime argument 0"); dt += new TimeSpan(100, 1, 1, 1); } } catch (Exception ex) { Assert.Fail(String.Format("unexpected exception {0}: {1}", locale, ex.Message)); } } } finally { Thread.CurrentThread.CurrentCulture = oldci; } }
[Ignore("Unsupported due to migration")] // [ExpectedException(typeof(XmlRpcInvalidParametersException))] public void DeserializeObjectParamsInsufficientParams() { string xml = @"<?xml version=""1.0""?> <methodCall> <methodName>Foo1</methodName> <params> </params> </methodCall>"; StringReader sr = new StringReader(xml); var deserializer = new XmlRpcRequestDeserializer(); XmlRpcRequest request = deserializer.DeserializeRequest(sr, this.GetType()); }
public void EmptyParam1() { string xml = @"<?xml version=""1.0"" ?> <methodCall> <methodName>TestString</methodName> <params> <param/> </params> </methodCall>"; StringReader sr = new StringReader(xml); var serializer = new XmlRpcRequestDeserializer(); XmlRpcRequest request = serializer.DeserializeRequest(sr, null); }
public void ISO_8859_1() { using (Stream stm = new FileStream("testdocuments/iso-8859-1_request.xml", FileMode.Open, FileAccess.Read)) { var deserializer = new XmlRpcRequestDeserializer(); XmlRpcRequest request = deserializer.DeserializeRequest(stm, null); Assert.AreEqual(request.args[0].GetType(), typeof(string), "argument is string"); Assert.AreEqual((string)request.args[0], "hæ hvað segirðu þá", "argument is 'hæ hvað segirðu þá'"); } }
public void FlatXml() { string xml = @"<?xml version=""1.0"" ?><methodCall><methodName>TestString</methodName><params><param><value>test string</value></param></params></methodCall>"; StringReader sr = new StringReader(xml); var deserializer = new XmlRpcRequestDeserializer(); XmlRpcRequest request = deserializer.DeserializeRequest(sr, null); Assert.AreEqual(request.method, "TestString", "method is TestString"); Assert.AreEqual(request.args[0].GetType(), typeof(string), "argument is string"); Assert.AreEqual((string)request.args[0], "test string", "argument is 'test string'"); }
public void NoParam2() { string xml = @"<?xml version=""1.0"" ?> <methodCall> <methodName>MethodNoArgs</methodName> <params> </params> </methodCall>"; StringReader sr = new StringReader(xml); var deserializer = new XmlRpcRequestDeserializer(); XmlRpcRequest request = deserializer.DeserializeRequest(sr, this.GetType()); //Console.WriteLine(""); }
[Ignore("Unsupported due to migration")] // [ExpectedException(typeof(XmlRpcInvalidXmlRpcException))] public void DeserializeLinisgreEmptyParam() { string xml = @"<?xml version=""1.0""?> <methodCall> <methodName>Linisgre</methodName> <params> <param/> </params> </methodCall>"; StringReader sr = new StringReader(xml); var deserializer = new XmlRpcRequestDeserializer(); XmlRpcRequest request = deserializer.DeserializeRequest(sr, this.GetType()); }
public void ZeroLengthMethodName() { string xml = @"<?xml version=""1.0"" ?> <methodCall> <methodName></methodName> <params> <param> <value>test string</value> </param> </params> </methodCall>"; StringReader sr = new StringReader(xml); var deserializer = new XmlRpcRequestDeserializer(); XmlRpcRequest request = deserializer.DeserializeRequest(sr, null); }
public void NegativeOverflowI8() { string xml = @"<?xml version=""1.0"" ?> <methodCall> <methodName>TestInt</methodName> <params> <param> <value><i8>-9999999999999999999999999999999999999999999</i8></value> </param> </params> </methodCall>"; StringReader sr = new StringReader(xml); var deserializer = new XmlRpcRequestDeserializer(); XmlRpcRequest request = deserializer.DeserializeRequest(sr, null); }
public void TwoLeadingSpace() { string xml = @"<?xml version=""1.0""?> <methodCall><methodName>rtx.EchoString</methodName> <params> <param><value> ddd</value></param> </params></methodCall>"; StringReader sr = new StringReader(xml); var deserializer = new XmlRpcRequestDeserializer(); XmlRpcRequest request = deserializer.DeserializeRequest(sr, GetType()); Assert.AreEqual(request.args[0].GetType(), typeof(string), "argument is string"); Assert.AreEqual(" ddd", request.args[0]); }
public void DeserializeZeroParameters() { string xml = @"<?xml version=""1.0""?> <methodCall> <methodName>FooZeroParameters</methodName> <params /> </methodCall>"; StringReader sr = new StringReader(xml); var serializer = new XmlRpcRequestDeserializer(); XmlRpcRequest request = serializer.DeserializeRequest(sr, this.GetType()); Assert.AreEqual(request.method, "FooZeroParameters", "method is FooZeroParameters"); Assert.AreEqual(0, request.args.Length, "no arguments"); }
public void InvalidInteger() { string xml = @"<?xml version=""1.0"" ?> <methodCall> <methodName>TestInt</methodName> <params> <param> <value><i4>12kiol</i4></value> </param> </params> </methodCall>"; StringReader sr = new StringReader(xml); var deserializer = new XmlRpcRequestDeserializer(); XmlRpcRequest request = deserializer.DeserializeRequest(sr, null); Assert.Fail("Invalid integer should cause exception"); }
public void DeserializeParamsEmpty() { string xml = @"<?xml version=""1.0""?> <methodCall> <methodName>Foo</methodName> <params/> </methodCall>"; StringReader sr = new StringReader(xml); var serializer = new XmlRpcRequestDeserializer(); XmlRpcRequest request = serializer.DeserializeRequest(sr, this.GetType()); Assert.AreEqual(request.method, "Foo", "method is Foo"); Assert.AreEqual(request.args[0].GetType(), typeof(object[]), "argument is obj[]"); Assert.AreEqual((request.args[0] as object[]).Length, 0, "argument is empty array of object"); }
public void TooFewParameters() { string xml = @"<?xml version=""1.0""?> <methodCall> <methodName>blogger.getUsersBlogs</methodName> <params> <param> <value> <string>myusername</string> </value> </param> </params> </methodCall>"; StringReader sr = new StringReader(xml); var deserializer = new XmlRpcRequestDeserializer(); XmlRpcRequest request = deserializer.DeserializeRequest(sr, GetType()); }
public void Class() { string xml = @"<?xml version=""1.0""?> <methodCall> <methodName>TestClassMethod</methodName> <params> <param> <value> <struct> <member> <name>_int</name> <value> <i4>456</i4> </value> </member> <member> <name>_string</name> <value> <string>Test Class</string> </value> </member> </struct> </value> </param> </params> </methodCall>"; StringReader sr = new StringReader(xml); var deserializer = new XmlRpcRequestDeserializer(); XmlRpcRequest request = deserializer.DeserializeRequest(sr, GetType()); Assert.AreEqual(request.args[0].GetType(), typeof(TestClass), "argument is TestClass"); // XmlRpcStruct xrs = (XmlRpcStruct)request.args[0]; // Assert.IsTrue(xrs.Count == 4, "XmlRpcStruct has 4 members"); // Assert.IsTrue(xrs.ContainsKey("member1") && (int)xrs["member1"] == 1, // "member1"); // Assert.IsTrue(xrs.ContainsKey("member2") && (int)xrs["member2"] == 2, // "member2"); // Assert.IsTrue(xrs.ContainsKey("member-3") && (int)xrs["member-3"] == 3, // "member-3"); // Assert.IsTrue(xrs.ContainsKey("member-4") && (int)xrs["member-4"] == 4, // "member-4"); }
public void DeserializeRequestStructWithNil() { string xml = @"<?xml version=""1.0""?> <methodCall> <methodName>StructWithArrayMethod</methodName> <params> <param> <value> <struct> <member> <name>ints</name> <value> <array> <data> <value> <i4>1</i4> </value> <value> <nil /> </value> <value> <i4>3</i4> </value> </data> </array> </value> </member> </struct> </value> </param> </params> </methodCall>"; StringReader sr = new StringReader(xml); var deserializer = new XmlRpcRequestDeserializer(); XmlRpcRequest request = deserializer.DeserializeRequest(sr, this.GetType()); Assert.AreEqual(request.method, "StructWithArrayMethod", "method is TestString"); Assert.AreEqual(1, request.args.Length); Assert.IsInstanceOf <StructWithArray>(request.args[0], "argument is StructWithArray"); int?[] arg = ((StructWithArray)request.args[0]).ints; Assert.AreEqual(1, arg[0]); Assert.IsNull(arg[1]); Assert.AreEqual(3, arg[2]); }
public void ZeroI8() { string xml = @"<?xml version=""1.0"" ?> <methodCall> <methodName>TestInt</methodName> <params> <param> <value><i8>0</i8></value> </param> </params> </methodCall>"; StringReader sr = new StringReader(xml); var deserializer = new XmlRpcRequestDeserializer(); XmlRpcRequest request = deserializer.DeserializeRequest(sr, null); Assert.AreEqual(request.args[0].GetType(), typeof(long), "argument is long"); Assert.AreEqual((long)request.args[0], 0, "argument is 0"); }