public void NoNonStandardProductFormats(IJabApiOperation operation)
        {
            IList <string> nonStandardFormats =
                operation.Operation?.Produces?.Where(product => !StandardFormats.Contains(product)).ToList();

            Assert.That(
                nonStandardFormats,
                Is.Null.Or.Empty,
                $"Nonstandard formats produced: {(string.Join(", ", nonStandardFormats ?? new string[0]))}");
        }
Exemple #2
0
 public void DeleteMethodsMustContainIdAsKeyParameter(IJabApiOperation apiOperation)
 {
     Assume.That(
         apiOperation.Method,
         Is.EqualTo(NSwag.SwaggerOperationMethod.Delete));
     Assert.That(
         apiOperation,
         Has.Property("Operation").Property("Parameters").None.Property("Name").EqualTo("id"),
         "Must not pass ID parameter");
 }
        public void NoNonStandardConsumptionFormats(IJabApiOperation operation)
        {
            IList <string> nonStandardFormats =
                operation.Operation?.Consumes?.Where(consumption => !StandardFormats.Contains(consumption)).ToList();

            Assert.That(
                nonStandardFormats,
                Is.Null.Or.Empty,
                $"Nonstandard formats consumed: {(string.Join(", ", nonStandardFormats ?? new string[0]))}");
        }
 public void DeleteMethodsShouldNotTakeFormEncodedData(IJabApiOperation operation)
 {
     Assume.That(operation,
                 Has.Property("Method").EqualTo(SwaggerOperationMethod.Delete));
     Assert.That(
         operation.Operation,
         Has.Property("Consumes").Null
         .Or.Property("Consumes").Not.Contains(FormEncodedFormat)
         .And.Property("Consumes").Not.Contains(MultiPartFormFormat),
         $"'DELETE' verb but accepts data");
 }
        public void UseDeleteVerbForDelete(IJabApiOperation operation)
        {
            List <string> deleteSynonyms = new List <string>
            {
                "delete",
                "remove"
            };

            Assume.That(operation,
                        Has.Property("Method").EqualTo(SwaggerOperationMethod.Delete));
            Assert.That(
                operation,
                Has.Property("Path").Not.SubsetOf(deleteSynonyms),
                $"Should use 'DELETE' verb instead of '{operation.Method}'");
        }
        public async Task RangedIntegerParameterTesting(IJabApiOperation operation)
        {
            if (operation.Operation.ActualParameters.Any(
                    parameter => parameter.Kind == SwaggerParameterKind.Query && parameter.Type == JsonObjectType.Integer)
                &&
                operation.Method == SwaggerOperationMethod.Get)
            {
                HttpClient       client    = Configuration.GetClient();
                SwaggerParameter parameter = operation.Operation.Parameters.First(p => p.Type == JsonObjectType.Integer && p.Kind == SwaggerParameterKind.Query);

                HttpResponseMessage results = await client.GetAsync(operation.Path + "?" + parameter.Name + "=" + UInt64.MaxValue.ToString());

                Assert.That(
                    results.StatusCode,
                    Is.EqualTo(HttpStatusCode.InternalServerError));
            }
        }
        public void NoSecretsInQueryParameters(IJabApiOperation operation)
        {
            List <string> secretSynonyms = new List <string>
            {
                "password",
                "secret",
                "key"
            };

            IList <SwaggerParameter> queryParametersContainingSecrets =
                new List <SwaggerParameter>(operation.Operation.ActualParameters.Where(
                                                parameter => parameter.Kind == SwaggerParameterKind.Query &&
                                                secretSynonyms.Any(term => parameter.Name.IndexOf(term, 0, StringComparison.InvariantCultureIgnoreCase) != -1)));

            Assert.That(
                queryParametersContainingSecrets,
                Is.Not.Null.And.Empty,
                $"Query parameters containing secrets: {(string.Join(", ", queryParametersContainingSecrets.Select(p => p.Name)))}");
        }