Files
raven-test-integration/FormCustom/FormCustom.cs
2019-01-10 23:47:00 +00:00

245 lines
8.9 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 FormCustom
{
/// <summary>
/// Test create or update
/// </summary>
[Fact]
public async void FormCustomCreateUpdate()
{
//This is a special case, you can create or PUT a formcustom, but you can't delete one and you can't create one if one already exists
//so this test will either create or update depending upon if it's already created one or not
dynamic d = new JObject();
d.formkey = "widget";
/*
Example:
{template:[{fld:"ltkeyfieldname",hide:"true/false",required:"true/false", type:"bool"},{fld:"ltkeyfieldname",hide:"true/false",required:"true/false", type:"text"]}
*/
dynamic dtemplate = new JArray();
dynamic dt = new JObject();
dt.fld = "WidgetCustom1";
dt.hide = false;
dt.required = true;
dt.type = "date";
dtemplate.Add(dt);
dt = new JObject();
dt.fld = "WidgetCustom2";
dt.hide = true;
dt.required = false;
dt.type = "bool";
dtemplate.Add(dt);
d.template = dtemplate.ToString();//it expects it to be a json string, not actual json
//Is there one already?
//RETRIEVE
//Get one
ApiResponse a = await Util.GetAsync("FormCustom/widget", await Util.GetTokenAsync("BizAdminFull"));
bool Exists = ((int)a.HttpResponse.StatusCode) == 200;
if (Exists)
{
//Update
//update it
d.concurrencyToken = a.ObjectResponse["data"]["concurrencyToken"].Value<uint>();
a = await Util.PutAsync("FormCustom/widget", await Util.GetTokenAsync("BizAdminFull"), d.ToString());
Util.ValidateHTTPStatusCode(a, 200);
// //check PUT worked
// a = await Util.GetAsync("DataFilter/" + Id.ToString(), await Util.GetTokenAsync("BizAdminFull"));
// Util.ValidateNoErrorInResponse(a);
// a.ObjectResponse["data"]["name"].Value<string>().Should().Be(d.name.ToString());
}
else
{
//Create it
// a = await Util.PostAsync("FormCustom", await Util.GetTokenAsync("BizAdminFull"), d.ToString());
// Util.ValidateDataReturnResponseOk(a);
}
// a.ObjectResponse["data"]["name"].Value<string>().Should().StartWith("Test DataFilter");
// //CREATE
// dynamic d = new JObject();
// d.name = Util.Uniquify("Test DataFilter");
// // d.ownerId = 1L;
// d["public"] = true;
// d.listKey = "widget";
// //"[{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
// a = await Util.PostAsync("DataFilter", await Util.GetTokenAsync("BizAdminFull"), d.ToString());
// Util.ValidateDataReturnResponseOk(a);
// long Id = a.ObjectResponse["data"]["id"].Value<long>();
// //RETRIEVE
// //Get one
// a = await Util.GetAsync("DataFilter/" + Id.ToString(), await Util.GetTokenAsync("BizAdminFull"));
// Util.ValidateDataReturnResponseOk(a);
// a.ObjectResponse["data"]["name"].Value<string>().Should().StartWith("Test DataFilter");
// //Get as alternate user should work for public filter
// a = await Util.GetAsync("DataFilter/" + Id.ToString(), await Util.GetTokenAsync("SubContractorLimited"));
// Util.ValidateDataReturnResponseOk(a);
// a.ObjectResponse["data"]["name"].Value<string>().Should().StartWith("Test DataFilter");
// //UPDATE
// //PUT, make private
// d["public"] = false;
// d.name = Util.Uniquify("Put - Test DataFilter (privatized)");
// d.concurrencyToken = a.ObjectResponse["data"]["concurrencyToken"].Value<uint>();
// a = await Util.PutAsync("DataFilter/" + Id.ToString(), await Util.GetTokenAsync("BizAdminFull"), d.ToString());
// Util.ValidateHTTPStatusCode(a, 200);
// //check PUT worked
// a = await Util.GetAsync("DataFilter/" + 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("DataFilter/" + Id.ToString(), await Util.GetTokenAsync("SubContractorLimited"));
// Util.ValidateResponseNotFound(a);
// // //DELETE
// ApiResponse DELETETestResponse = await Util.DeleteAsync("DataFilter/" + Id.ToString(), await Util.GetTokenAsync("BizAdminFull"));
// Util.ValidateHTTPStatusCode(DELETETestResponse, 204);
}
/// <summary>
///
/// </summary>
[Fact]
public async void InvalidAvailableFieldsFormKeyShouldFail()
{
ApiResponse a = await Util.GetAsync("FormCustom/AvailableFields/nonexistent", await Util.GetTokenAsync("BizAdminFull"));
Util.ValidateErrorCodeResponse(a, 2010, 404);
}
/// <summary>
///
/// </summary>
[Fact]
public async void AvailableFieldsWorks()
{
ApiResponse a = await Util.GetAsync("FormCustom/AvailableFields/widget", await Util.GetTokenAsync("BizAdminFull"));
Util.ValidateDataReturnResponseOk(a);
((JArray)a.ObjectResponse["data"]).Count.Should().BeGreaterThan(25);
}
// /// <summary>
// ///
// /// </summary>
// [Fact]
// public async void InvalidFieldNameShouldFail()
// {
// //CREATE
// dynamic d = new JObject();
// d.name = Util.Uniquify("Test DataFilter");
// // d.ownerId = 1L;
// d["public"] = true;
// d.listKey = "widget";
// //"[{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("DataFilter", await Util.GetTokenAsync("BizAdminFull"), d.ToString());
// Util.ValidateErrorCodeResponse(a, 2200, 400);
// Util.ShouldContainValidationError(a, "Filter", "InvalidValue");
// }
// /// <summary>
// ///
// /// </summary>
// [Fact]
// public async void InvalidOperatorShouldFail()
// {
// //CREATE
// dynamic d = new JObject();
// d.name = Util.Uniquify("Test DataFilter");
// // d.ownerId = 1L;
// d["public"] = true;
// d.listKey = "widget";
// //"[{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("DataFilter", await Util.GetTokenAsync("BizAdminFull"), d.ToString());
// Util.ValidateErrorCodeResponse(a, 2200, 400);
// Util.ShouldContainValidationError(a, "Filter", "InvalidValue");
// }
//==================================================
}//eoc
}//eons