// using System; // using Xunit; // using Newtonsoft.Json.Linq; // using FluentAssertions; // using System.Collections.Generic; // using System.Collections.Concurrent; // namespace raven_integration // { // public class DataListFilterCrud // { // /// // /// Test all CRUD routes // /// // [Fact] // public async Task CRUD() // { // //CREATE // dynamic d = new JObject(); // d.name = Util.Uniquify("Test DataListView"); // d["public"] = true; // d.listKey="TestWidgetDataList"; // //"[{fld:"name",op:"!=",value:"Notequaltothis"},{fld:"tags",op:"Eq",value:"[23,456,54]"}] // dynamic dListView = new JArray(); // // dynamic df = new JObject(); // // df.fld = "widgetname"; // // df.op = "%-"; // // df.value = "Generic";//lots of seed widgets start with Generic // // dListView.Add(df); // // d.filter = dListView.ToString();//it expects it to be a json string, not actual json // dListView.Add(Util.BuildSimpleFilterDataListViewColumn("widgetname", Util.OpStartsWith, "Generic")); // d.listView=dListView.ToString(Newtonsoft.Json.Formatting.None); // ApiResponse a = await Util.PostAsync("data-list-view", await Util.GetTokenAsync("BizAdmin"), d.ToString(Newtonsoft.Json.Formatting.None)); // Util.ValidateDataReturnResponseOk(a); // long Id = a.ObjectResponse["data"]["id"].Value(); // //RETRIEVE // //Get one // a = await Util.GetAsync("data-list-view/" + Id.ToString(), await Util.GetTokenAsync("BizAdmin")); // Util.ValidateDataReturnResponseOk(a); // a.ObjectResponse["data"]["name"].Value().Should().StartWith("Test DataListView"); // //Get as alternate user should work for public filter // a = await Util.GetAsync("data-list-view/" + Id.ToString(), await Util.GetTokenAsync("SubContractorRestricted")); // Util.ValidateDataReturnResponseOk(a); // a.ObjectResponse["data"]["name"].Value().Should().StartWith("Test DataListView"); // //UPDATE // //PUT, make private // d["public"] = false; // d.name = Util.Uniquify("Put - Test DataListView (privatized)"); // d.concurrency = a.ObjectResponse["data"]["concurrency"].Value(); // a = await Util.PutAsync("data-list-view/" + Id.ToString(), await Util.GetTokenAsync("BizAdmin"), d.ToString()); // Util.ValidateHTTPStatusCode(a, 200); // //check PUT worked // a = await Util.GetAsync("data-list-view/" + Id.ToString(), await Util.GetTokenAsync("BizAdmin")); // Util.ValidateNoErrorInResponse(a); // a.ObjectResponse["data"]["name"].Value().Should().Be(d.name.ToString()); // //FETCH DISALLOWED // //Get as alternate user should fail for private filter // a = await Util.GetAsync("data-list-view/" + Id.ToString(), await Util.GetTokenAsync("SubContractorRestricted")); // Util.ValidateResponseNotFound(a); // // //DELETE // ApiResponse DELETETestResponse = await Util.DeleteAsync("data-list-view/" + Id.ToString(), await Util.GetTokenAsync("BizAdmin")); // Util.ValidateHTTPStatusCode(DELETETestResponse, 204); // } // /// // /// // /// // [Fact] // public async Task InvalidListKeyShouldFail() // { // //CREATE // dynamic d = new JObject(); // d.name = Util.Uniquify("Test DataListView"); // d["public"] = true; // d.listKey = "nonexistant"; // //"[{fld:"name",op:"!=",value:"Notequaltothis"},{fld:"tags",op:"Eq",value:"[23,456,54]"}] // // dynamic dfilter = new JArray(); // // dynamic df = new JObject(); // // df.fld = "name"; // // df.op = "%-"; // // df.value = "Generic";//lots of seed widgets start with Generic // // dfilter.Add(df); // // d.filter = dfilter.ToString();//it expects it to be a json string, not actual json // // ApiResponse a = await Util.PostAsync("data-list-view", await Util.GetTokenAsync("BizAdmin"), d.ToString()); // dynamic dListView = new JArray(); // // dynamic df = new JObject(); // // df.fld = "widgetname"; // // df.op = "%-"; // // df.value = "Generic";//lots of seed widgets start with Generic // // dListView.Add(df); // // d.filter = dListView.ToString();//it expects it to be a json string, not actual json // dListView.Add(Util.BuildSimpleFilterDataListViewColumn("widgetname", Util.OpStartsWith, "Generic")); // d.listView=dListView.ToString(Newtonsoft.Json.Formatting.None); // ApiResponse a = await Util.PostAsync("data-list-view", await Util.GetTokenAsync("BizAdmin"), d.ToString(Newtonsoft.Json.Formatting.None)); // Util.ValidateErrorCodeResponse(a, 2200, 400); // Util.ShouldContainValidationError(a, "ListKey", "2203"); // } // /// // /// // /// // [Fact] // public async Task InvalidFieldNameShouldFail() // { // //CREATE // dynamic d = new JObject(); // d.name = Util.Uniquify("Test DataListView"); // d["public"] = true; // d.listKey="TestWidgetDataList"; // //"[{fld:"name",op:"!=",value:"Notequaltothis"},{fld:"tags",op:"Eq",value:"[23,456,54]"}] // // dynamic dfilter = new JArray(); // // dynamic df = new JObject(); // // df.fld = "doesntexist"; // // df.op = "%-"; // // df.value = "Generic";//lots of seed widgets start with Generic // // dfilter.Add(df); // // d.filter = dfilter.ToString();//it expects it to be a json string, not actual json // // ApiResponse a = await Util.PostAsync("data-list-view", await Util.GetTokenAsync("BizAdmin"), d.ToString()); // dynamic dListView = new JArray(); // // dynamic df = new JObject(); // // df.fld = "widgetname"; // // df.op = "%-"; // // df.value = "Generic";//lots of seed widgets start with Generic // // dListView.Add(df); // // d.filter = dListView.ToString();//it expects it to be a json string, not actual json // dListView.Add(Util.BuildSimpleFilterDataListViewColumn("doesntexist", Util.OpStartsWith, "Generic")); // d.listView=dListView.ToString(Newtonsoft.Json.Formatting.None); // ApiResponse a = await Util.PostAsync("data-list-view", await Util.GetTokenAsync("BizAdmin"), d.ToString(Newtonsoft.Json.Formatting.None)); // Util.ValidateErrorCodeResponse(a, 2200, 400); // Util.ShouldContainValidationError(a, "ListView", "2203"); // } // //REMOVED THIS VALIDATION TEST AS SWITCH TO DATALISTVIEW NO LONGER VALIDATES FILTER ANYWAY // //ONLY COLUMN NAMES AND LIST NAME // // /// // // /// // // /// // // [Fact] // // public async Task InvalidOperatorShouldFail() // // { // // //CREATE // // dynamic d = new JObject(); // // d.name = Util.Uniquify("Test DataListView"); // // d["public"] = true; // // d.listKey="TestWidgetDataList"; // // //"[{fld:"name",op:"!=",value:"Notequaltothis"},{fld:"tags",op:"Eq",value:"[23,456,54]"}] // // dynamic dfilter = new JArray(); // // dynamic df = new JObject(); // // df.fld = "name"; // // df.op = "wtf"; // // df.value = "Generic";//lots of seed widgets start with Generic // // dfilter.Add(df); // // d.filter = dfilter.ToString();//it expects it to be a json string, not actual json // // ApiResponse a = await Util.PostAsync("data-list-view", await Util.GetTokenAsync("BizAdmin"), d.ToString()); // // Util.ValidateErrorCodeResponse(a, 2200, 400); // // Util.ShouldContainValidationError(a, "Filter", "2203"); // // } // //================================================== // }//eoc // }//eons