public void TestDuplicateParameters(ParametersBulkCreate parameter, Values value)
        {
            var handler  = new BulkCreateManager();
            var response = handler.BulkCreate <BulkUpdateResponse>(value == Values.Same ? DuplicateParametersSameValue[parameter] : DuplicateParametersNotSameValue[parameter], System.Net.Http.HttpMethod.Post);

            PrAssert.That(response, PrIs.SuccessfulResponse().And.HttpCode(System.Net.HttpStatusCode.NoContent));
        }
        public void TestBulkCreateInjection(ParametersBulkCreate parameter, InjectionInput inputType)
        {
            var handler    = new BulkCreateManager();
            var request    = DefaultBulkCreateParameters(ResourceId.Client, "P_Name", "Test Name");
            var valueInput = InjectionInputData.InjectionInputMapper[inputType];

            request = GetRequestForBulkCreate(request, parameter, valueInput);
            var response = handler.BulkCreate <object>(request, System.Net.Http.HttpMethod.Post);

            PrAssert.That(response, PrIs.ErrorResponse().And.HttpCode(System.Net.HttpStatusCode.BadRequest));
        }
        public void TestBulkCreateGenarateInvalid(ParametersBulkCreate parameter, InvalidTestCases inputType, System.Net.HttpStatusCode resultCode)
        {
            var handler = new BulkCreateManager();
            var request = DefaultBulkCreateParameters(ResourceId.Client, "P_Name", "Test Name");

            request = GetRequestForBulkCreate(request, parameter, InvalidMaps[inputType].ToString(), inputType);
            var response = handler.BulkCreate <BulkUpdateResponse>(request, System.Net.Http.HttpMethod.Post);

            if (resultCode == System.Net.HttpStatusCode.OK)
            {
                PrAssert.That(response, PrIs.SuccessfulResponse().And.HttpCode(System.Net.HttpStatusCode.OK));
            }
            else
            {
                PrAssert.That(response, PrIs.ErrorResponse().And.HttpCode(System.Net.HttpStatusCode.BadRequest));
            }
        }
        private static Dictionary <string, object> GetRequestForBulkCreate(Dictionary <string, object> request, ParametersBulkCreate parameter, string valueInput, InvalidTestCases inputType = InvalidTestCases.Empty)
        {
            var tmpRequest = request["create"] as Dictionary <string, object>;
            var entries    = (tmpRequest["entries"] as List <Dictionary <string, object> >)[0];
            var merge      = entries["merge"] as Dictionary <string, object>;
            var records    = merge["records"] as Dictionary <string, object>;

            switch (parameter)
            {
            case ParametersBulkCreate.Ids:
                if (inputType != InvalidTestCases.Missing)
                {
                    records["ids"] = valueInput;
                }
                else
                {
                    records.Remove("ids");
                }
                break;

            case ParametersBulkCreate.PhpSearch:
                if (inputType != InvalidTestCases.Missing)
                {
                    records["phpSearch"] = valueInput;
                }
                else
                {
                    records.Remove("phpSearch");
                }
                break;

            case ParametersBulkCreate.FieldName:
                if (inputType != InvalidTestCases.Missing)
                {
                    entries["fields"] = new Dictionary <string, string>
                    {
                        [valueInput] = "Test"
                    };
                }
                else
                {
                    entries["fields"] = new Dictionary <string, string>();
                }
                break;

            case ParametersBulkCreate.Field:
                if (inputType != InvalidTestCases.Missing)
                {
                    merge["field"] = valueInput;
                }
                else
                {
                    merge.Remove("field");
                }
                break;

            case ParametersBulkCreate.Fields:
                if (inputType != InvalidTestCases.Missing)
                {
                    entries["fields"] = valueInput;
                }
                else
                {
                    merge.Remove("fields");
                }
                break;

            case ParametersBulkCreate.Resource:
                if (inputType != InvalidTestCases.Missing)
                {
                    entries["resource"] = valueInput;
                }
                else
                {
                    entries.Remove("resource");
                }
                break;

            case ParametersBulkCreate.Merge:
                if (inputType != InvalidTestCases.Missing)
                {
                    entries["merge"] = valueInput;
                }
                else
                {
                    entries.Remove("merge");
                }
                break;

            case ParametersBulkCreate.Records:
                if (inputType != InvalidTestCases.Missing)
                {
                    merge["records"] = valueInput;
                }
                else
                {
                    merge.Remove("records");
                }
                break;

            default:
                if (inputType != InvalidTestCases.Missing)
                {
                    tmpRequest[parameter.ToString().ToLower()] = valueInput;
                }
                else
                {
                    tmpRequest.Remove(parameter.ToString().ToLower());
                }
                break;
            }
            request["create"] = tmpRequest;
            return(request);
        }