public void VersionTypeDeserialization() { List<Tuple<VersionType, string>> testCases = new List<Tuple<VersionType, string>>() { new Tuple<VersionType, string>(new VersionType { Version = "0x0004F" }, "{\"__version\":\"0x0004F\"}"), new Tuple<VersionType, string>(new VersionType { Version = null }, "{\"__version\":null}"), }; // Need to ensure that the type is registered as a table to force the id property check DefaultSerializer.SerializerSettings.ContractResolver.ResolveTableName(typeof(VersionType)); foreach (var testCase in testCases) { var input = testCase.Item2; var expected = testCase.Item1; VersionType actual = new VersionType(); DefaultSerializer.Deserialize(input, actual); Assert.AreEqual(actual.Version, expected.Version); } }
public async Task VersionSystemPropertySetsIfMatchHeader() { List<Tuple<string, string>> testCases = new List<Tuple<string,string>>() { new Tuple<string, string>("AAAAAAAAH2o=", "\"AAAAAAAAH2o=\""), new Tuple<string, string>("a version", "\"a version\""), new Tuple<string, string>("a version with a \" quote", "\"a version with a \\\" quote\""), new Tuple<string, string>("a version with an already escaped \\\" quote", "\"a version with an already escaped \\\" quote\""), new Tuple<string, string>("\"a version with a quote at the start", "\"\\\"a version with a quote at the start\""), new Tuple<string, string>("a version with a quote at the end\"", "\"a version with a quote at the end\\\"\""), new Tuple<string, string>("datetime'2013-10-08T04%3A12%3A36.96Z'", "\"datetime'2013-10-08T04%3A12%3A36.96Z'\""), }; foreach (Tuple<string, string> testcase in testCases) { TestHttpHandler hijack = new TestHttpHandler(); hijack.SetResponseContent("{\"id\":\"an id\",\"__version\":\"AAAAAAAAH2o=\"}"); IMobileServiceClient service = new MobileServiceClient("http://www.test.com", "secret...", hijack); IMobileServiceTable<VersionType> table = service.GetTable<VersionType>(); hijack.OnSendingRequest = async (request) => { string content = await request.Content.ReadAsStringAsync(); JObject jobject = JObject.Parse(content); Assert.AreEqual(request.Headers.IfMatch.First().Tag, testcase.Item2); return request; }; VersionType item = new VersionType() { Id = "an id", Version = testcase.Item1 }; await table.UpdateAsync(item); } }
public async Task VersionSystemPropertySetFromEtagHeader() { List<Tuple<string, string>> testCases = new List<Tuple<string, string>>() { new Tuple<string, string>("AAAAAAAAH2o=", "\"AAAAAAAAH2o=\""), new Tuple<string, string>("a version", "\"a version\""), new Tuple<string, string>("a version with a \" quote", "\"a version with a \\\" quote\""), new Tuple<string, string>("a version with an already escaped \" quote", "\"a version with an already escaped \\\" quote\""), new Tuple<string, string>("\"a version with a quote at the start", "\"\\\"a version with a quote at the start\""), new Tuple<string, string>("a version with a quote at the end\"", "\"a version with a quote at the end\\\"\""), new Tuple<string, string>("datetime'2013-10-08T04%3A12%3A36.96Z'", "\"datetime'2013-10-08T04%3A12%3A36.96Z'\""), }; foreach (Tuple<string, string> testcase in testCases) { TestHttpHandler hijack = new TestHttpHandler(); hijack.SetResponseContent("{\"id\":\"an id\"}"); hijack.Response.Headers.ETag = new EntityTagHeaderValue(testcase.Item2); IMobileServiceClient service = new MobileServiceClient("http://www.test.com", "secret...", hijack); IMobileServiceTable<VersionType> table = service.GetTable<VersionType>(); VersionType item = new VersionType() { Id = "an id" }; await table.UpdateAsync(item); Assert.AreEqual(item.Version, testcase.Item1); } }
private static async Task TestIfMatchHeaderIsSet(Func<IMobileServiceTable<VersionType>, VersionType, Task> action) { List<Tuple<string, string>> testCases = new List<Tuple<string,string>>() { new Tuple<string, string>("AAAAAAAAH2o=", "\"AAAAAAAAH2o=\""), new Tuple<string, string>("a version", "\"a version\""), new Tuple<string, string>("a version with a \" quote", "\"a version with a \\\" quote\""), new Tuple<string, string>("a version with an already escaped \\\" quote", "\"a version with an already escaped \\\" quote\""), new Tuple<string, string>("\"a version with a quote at the start", "\"\\\"a version with a quote at the start\""), new Tuple<string, string>("a version with a quote at the end\"", "\"a version with a quote at the end\\\"\""), new Tuple<string, string>("datetime'2013-10-08T04%3A12%3A36.96Z'", "\"datetime'2013-10-08T04%3A12%3A36.96Z'\""), }; foreach (Tuple<string, string> testcase in testCases) { TestHttpHandler hijack = new TestHttpHandler(); hijack.SetResponseContent("{\"id\":\"an id\",\"__version\":\"AAAAAAAAH2o=\"}"); IMobileServiceClient service = new MobileServiceClient("http://www.test.com", "secret...", hijack); IMobileServiceTable<VersionType> table = service.GetTable<VersionType>(); hijack.OnSendingRequest = (request) => { Assert.AreEqual(request.Headers.IfMatch.First().Tag, testcase.Item2); return Task.FromResult(request); }; var item = new VersionType() { Id = "an id", Version = testcase.Item1 }; await action(table, item); } }