This commit is contained in:
@@ -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
|
||||
{
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Test Global routes
|
||||
/// </summary>
|
||||
[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<string>());
|
||||
templateArray.Count.Should().Be(1);
|
||||
templateArray[0]["fld"].Value<string>().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<long>();
|
||||
|
||||
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<long>();
|
||||
|
||||
|
||||
//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<long>().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<long>().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<string>());
|
||||
templateArray.Count.Should().Be(3);
|
||||
templateArray[0]["fld"].Value<string>().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
|
||||
|
||||
Reference in New Issue
Block a user