From f539ef41f5a7e9d08b42f90f2c3e304bd01b6e74 Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Wed, 25 Mar 2020 00:10:18 +0000 Subject: [PATCH] --- Global/GlobalAll.cs | 218 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 218 insertions(+) create mode 100644 Global/GlobalAll.cs diff --git a/Global/GlobalAll.cs b/Global/GlobalAll.cs new file mode 100644 index 0000000..458b2f1 --- /dev/null +++ b/Global/GlobalAll.cs @@ -0,0 +1,218 @@ +using System; +using Xunit; +using Newtonsoft.Json.Linq; +using FluentAssertions; +using System.Collections.Generic; +using System.Collections.Concurrent; + +namespace raven_integration +{ + public class GlobalAll + { + + + /// + /// Test Global routes + /// + [Fact] + public async void GlobalOps() + { + +TODO: this... + + //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 + + //custom template, only one field employee number + 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()); + templateArray.Count.Should().Be(1); + templateArray[0]["fld"].Value().Should().Be("useremployeenumber"); + + + //CONFIRM THE CUSTOM PICKLIST TEMPLATE WORKS PROPERLY + //MAKE THE TEST USERS + //First make a unique string for this iteration of this test only + var UniquePhrase = Util.Uniquify("pick").Replace(" ", ""); + d = new JObject(); + d.name = Util.Uniquify("UserPickListTemplatesOps") + UniquePhrase; + d.active = true; + d.login = Util.Uniquify("LOGIN"); + d.password = Util.Uniquify("PASSWORD"); + d.roles = 0;//norole + + d.userType = 3;//non scheduleable + //Required by form custom rules + d.notes = "notes"; + d.customFields = Util.UserRequiredCustomFieldsJsonString(); + + a = await Util.PostAsync("User", await Util.GetTokenAsync("manager", "l3tm3in"), d.ToString()); + Util.ValidateDataReturnResponseOk(a); + long InNameId = a.ObjectResponse["data"]["id"].Value(); + + d = new JObject(); + d.name = Util.Uniquify("UserPickListTemplatesOps"); + d.employeeNumber = UniquePhrase; + d.login = Util.Uniquify("LOGIN"); + d.password = Util.Uniquify("PASSWORD"); + d.roles = 0;//norole + d.userType = 3;//non scheduleable + d.active = true; + //Required by form custom rules + d.notes = "notes"; + d.customFields = Util.UserRequiredCustomFieldsJsonString(); + + a = await Util.PostAsync("User", await Util.GetTokenAsync("manager", "l3tm3in"), d.ToString()); + Util.ValidateDataReturnResponseOk(a); + long InEmployeeNumberId = a.ObjectResponse["data"]["id"].Value(); + + + //GET PICKLIST FOR unique phrase query sb only employee number due to custom template + a = await Util.GetAsync("PickList/List?ayaType=3&query=" + UniquePhrase, await Util.GetTokenAsync("BizAdminFull")); + Util.ValidateDataReturnResponseOk(a); + var pickList = ((JArray)a.ObjectResponse["data"]); + pickList.Count.Should().Be(1); + pickList[0]["id"].Value().Should().Be(InEmployeeNumberId); + + //custom template, only one field user name + d = new JObject(); + d.Id = 3;//User type + dTemplateArray = new JArray(); + df = new JObject(); + df.fld = "username"; + dTemplateArray.Add(df); + d.Template = dTemplateArray.ToString(Newtonsoft.Json.Formatting.None); + + //replace the User template at the server + a = await Util.PostAsync("PickList/Template", await Util.GetTokenAsync("BizAdminFull"), d.ToString(Newtonsoft.Json.Formatting.None)); + Util.ValidateHTTPStatusCode(a, 204); + + //GET PICKLIST FOR unique phrase query sb only user name field due to custom template + a = await Util.GetAsync("PickList/List?ayaType=3&query=" + UniquePhrase, await Util.GetTokenAsync("BizAdminFull")); + //"select auser.id as plId, auser.active as plActive, concat_ws(' ', auser.name) as plname from auser where auser.active = true and ((auser.name like '%pick1584556347748%')) order by auser.name limit 100" + Util.ValidateDataReturnResponseOk(a); + pickList = ((JArray)a.ObjectResponse["data"]); + pickList.Count.Should().Be(1); + pickList[0]["id"].Value().Should().Be(InNameId); + + //DELETE TEST USERS NO LONGER NEEDED + a = await Util.DeleteAsync("User/" + InNameId.ToString(), await Util.GetTokenAsync("manager", "l3tm3in")); + Util.ValidateHTTPStatusCode(a, 204); + + a = await Util.DeleteAsync("User/" + InEmployeeNumberId.ToString(), await Util.GetTokenAsync("manager", "l3tm3in")); + Util.ValidateHTTPStatusCode(a, 204); + + + // RESET TEMPLATE 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()); + templateArray.Count.Should().Be(3); + templateArray[0]["fld"].Value().Should().Be("username"); + + + //Now test error conditions.... + //BAD FIELD NAME VALIDATION ERROR + d = new JObject(); + d.Id = 3;//User type + //template, simple test, nothing fancy + dTemplateArray = new JArray(); + df = new JObject(); + df.fld = "DOES_NOT_EXIST";//<-- ERROR BAD FIELD NAME + dTemplateArray.Add(df); + d.Template = dTemplateArray.ToString(Newtonsoft.Json.Formatting.None); + a = await Util.PostAsync("PickList/Template", await Util.GetTokenAsync("BizAdminFull"), d.ToString(Newtonsoft.Json.Formatting.None)); + //"{\"error\":{\"code\":\"2200\",\"details\":[{\"message\":\"Template array item 0, fld property value \\\"DOES_NOT_EXIST\\\" is not a valid value for AyaType specified\",\"target\":\"Template\",\"error\":\"2203\"}],\"message\":\"Object did not pass validation\"}}" + Util.ValidateErrorCodeResponse(a, 2200, 400); + Util.ShouldContainValidationError(a, "Template", "2203"); + + //BAD AYATYPE ERROR + d = new JObject(); + d.Id = 0;//<==ERROR NO_TYPE, INVALID + //template, simple test, nothing fancy + dTemplateArray = new JArray(); + df = new JObject(); + df.fld = "useremployeenumber"; + dTemplateArray.Add(df); + d.Template = dTemplateArray.ToString(Newtonsoft.Json.Formatting.None); + //replace the User template at the server + a = await Util.PostAsync("PickList/Template", await Util.GetTokenAsync("BizAdminFull"), d.ToString(Newtonsoft.Json.Formatting.None)); + //"{\"error\":{\"code\":\"2200\",\"details\":[{\"message\":\"Template array item 0, fld property value \\\"DOES_NOT_EXIST\\\" is not a valid value for AyaType specified\",\"target\":\"Template\",\"error\":\"2203\"}],\"message\":\"Object did not pass validation\"}}" + Util.ValidateErrorCodeResponse(a, 2200, 400); + Util.ShouldContainValidationError(a, "ayaType", "2203"); + + //RIGHTS ISSUE, + //currently only bizadminfull can change a picklist template + d = new JObject(); + d.Id = 3;//User + //template, simple test, nothing fancy + dTemplateArray = new JArray(); + df = new JObject(); + df.fld = "useremployeenumber"; + dTemplateArray.Add(df); + d.Template = dTemplateArray.ToString(Newtonsoft.Json.Formatting.None); + //ERROR NO RIGHTS USER + a = await Util.PostAsync("PickList/Template", await Util.GetTokenAsync("CustomerLimited"), d.ToString(Newtonsoft.Json.Formatting.None)); + //"{\"error\":{\"code\":\"2004\",\"message\":\"User not authorized for this resource operation (insufficient rights)\"}}" + Util.ValidateErrorCodeResponse(a, 2004, 403); + + //EMPTY TEMPLATE VALIDATION ERROR + d = new JObject(); + d.Id = 3;//User + d.Template = "";//<-- ERROR no template + a = await Util.PostAsync("PickList/Template", await Util.GetTokenAsync("BizAdminFull"), d.ToString(Newtonsoft.Json.Formatting.None)); + Util.ValidateErrorCodeResponse(a, 2200, 400); + Util.ShouldContainValidationError(a, "Template", "2201"); + + + //MALFORMED TEMPLATE JSON ERROR + d = new JObject(); + d.Id = 3;//User type + dTemplateArray = new JArray(); + df = new JObject(); + df.fld = "useremployeenumber"; + dTemplateArray.Add(df); + string sTemplate = dTemplateArray.ToString(Newtonsoft.Json.Formatting.None); + d.Template = sTemplate.Substring(2);//<-- ERROR missing first two characters of json template array + a = await Util.PostAsync("PickList/Template", await Util.GetTokenAsync("BizAdminFull"), d.ToString(Newtonsoft.Json.Formatting.None)); + //"{\"error\":{\"code\":\"2200\",\"details\":[{\"message\":\"Template is not valid JSON string: Error reading JArray from JsonReader. Current JsonReader item is not an array: String. Path '', line 1, position 5.\",\"target\":\"Template\",\"error\":\"2203\"}],\"message\":\"Object did not pass validation\"}}" + Util.ValidateErrorCodeResponse(a, 2200, 400); + Util.ShouldContainValidationError(a, "Template", "2203"); + + } + + + + + + + + //================================================== + + }//eoc +}//eons