diff --git a/Global/GlobalAll.cs b/Global/GlobalAll.cs index 458b2f1..b1d20b6 100644 --- a/Global/GlobalAll.cs +++ b/Global/GlobalAll.cs @@ -1,217 +1,28 @@ -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")); + //excercise the fetch and update routes but no actual changes because making a change of any kind to global will likely break other tests + //and we just need to see the routes are active really + + ApiResponse a = await Util.GetAsync("GlobalBizSettings", 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"); + a.ObjectResponse["data"]["searchCaseSensitiveOnly"].Should().NotBeNull(); + var g = a.ObjectResponse["data"]; + a = await Util.PostAsync("GlobalBizSettings", await Util.GetTokenAsync("BizAdminFull"), g.ToString(Newtonsoft.Json.Formatting.None)); + Util.ValidateHTTPStatusCode(a, 204); } - - - - - - //================================================== }//eoc