Files
raven-test-integration/PickList/PickListAllTests.cs
2020-03-17 19:43:51 +00:00

222 lines
10 KiB
C#

using System;
using Xunit;
using Newtonsoft.Json.Linq;
using FluentAssertions;
using System.Collections.Generic;
using System.Collections.Concurrent;
namespace raven_integration
{
public class PickListAllTests
{
//NOTE: in order not to interfere in each other will use Widget picklist to test with standard unmodified picklist template
//and will use User PickList to test the template functionality
/// <summary>
/// Test all Template editing related routes
/// </summary>
[Fact]
public async void UserPickListTemplates()
{
//NOTE: Due to there being only one possible template per type, this test will need to test ALL potential tests in one function
//and only for the User picklist in order to not step over other potential tests running in parallel
//REPLACE USER TEMPLATE
dynamic d = new JObject();
d.Id = 3;//User type
//template, simple test, nothing fancy
dynamic dTemplateArray = new JArray();
dynamic df = new JObject();
df.fld = "useremployeenumber";
dTemplateArray.Add(df);
d.Template = dTemplateArray.ToString(Newtonsoft.Json.Formatting.None);
//replace the User template at the server
ApiResponse a = await Util.PostAsync("PickList/Template", await Util.GetTokenAsync("BizAdminFull"), d.ToString(Newtonsoft.Json.Formatting.None));
Util.ValidateHTTPStatusCode(a, 204);
//RETRIEVE
//Get one
a = await Util.GetAsync("PickList/Template/3/", await Util.GetTokenAsync("BizAdminFull"));
Util.ValidateDataReturnResponseOk(a);
//assert contains ONE record ONLY and it's the one we set
var templateArray = JArray.Parse(a.ObjectResponse["data"]["template"].Value<string>());
templateArray.Count.Should().Be(1);
templateArray[0]["fld"].Value<string>().Should().Be("useremployeenumber"); ;
// RESET TO DEFAULT
a = await Util.DeleteAsync("PickList/Template/3/", await Util.GetTokenAsync("BizAdminFull"));
Util.ValidateHTTPStatusCode(a, 204);
//RETRIEVE (Confirm it's back to default)
//Get one
a = await Util.GetAsync("PickList/Template/3/", await Util.GetTokenAsync("BizAdminFull"));
Util.ValidateDataReturnResponseOk(a);
//assert contains default template record ONLY and it's the one we set
templateArray = JArray.Parse(a.ObjectResponse["data"]["template"].Value<string>());
templateArray.Count.Should().Be(3);
templateArray[0]["fld"].Value<string>().Should().Be("username"); ;
//Now test error conditions....
//bad field name
//no such list
//no rights? (might need to make some changes at server, right now maybe anyone can modify template (bad))
//empty template
//malformed template bad json?
// //UPDATE
// //PUT, make private
// d["public"] = false;
// d.name = Util.Uniquify("Put - Test DataListView (privatized)");
// d.concurrencyToken = a.ObjectResponse["data"]["concurrencyToken"].Value<uint>();
// a = await Util.PutAsync("DataListView/" + Id.ToString(), await Util.GetTokenAsync("BizAdminFull"), d.ToString());
// Util.ValidateHTTPStatusCode(a, 200);
// //check PUT worked
// a = await Util.GetAsync("DataListView/" + Id.ToString(), await Util.GetTokenAsync("BizAdminFull"));
// Util.ValidateNoErrorInResponse(a);
// a.ObjectResponse["data"]["name"].Value<string>().Should().Be(d.name.ToString());
// //FETCH DISALLOWED
// //Get as alternate user should fail for private filter
// a = await Util.GetAsync("DataListView/" + Id.ToString(), await Util.GetTokenAsync("SubContractorLimited"));
// Util.ValidateResponseNotFound(a);
// // //DELETE
// ApiResponse DELETETestResponse = await Util.DeleteAsync("DataListView/" + Id.ToString(), await Util.GetTokenAsync("BizAdminFull"));
// Util.ValidateHTTPStatusCode(DELETETestResponse, 204);
}
// /// <summary>
// ///
// /// </summary>
// [Fact]
// public async void 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("DataListView", await Util.GetTokenAsync("BizAdminFull"), 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("DataListView", await Util.GetTokenAsync("BizAdminFull"), d.ToString(Newtonsoft.Json.Formatting.None));
// Util.ValidateErrorCodeResponse(a, 2200, 400);
// Util.ShouldContainValidationError(a, "ListKey", "2203");
// }
// /// <summary>
// ///
// /// </summary>
// [Fact]
// public async void 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("DataListView", await Util.GetTokenAsync("BizAdminFull"), 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("DataListView", await Util.GetTokenAsync("BizAdminFull"), 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
// // /// <summary>
// // ///
// // /// </summary>
// // [Fact]
// // public async void 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("DataListView", await Util.GetTokenAsync("BizAdminFull"), d.ToString());
// // Util.ValidateErrorCodeResponse(a, 2200, 400);
// // Util.ShouldContainValidationError(a, "Filter", "2203");
// // }
//==================================================
}//eoc
}//eons