public void Given_FakeModel_When_ToOpenApiSchemas_Invoked_Then_It_Should_Return_Result()
        {
            var type     = typeof(FakeModel);
            var subType  = typeof(FakeSubModel);
            var enumType = typeof(FakeEnum);

            var strategy = new CamelCaseNamingStrategy();

            var schemas = OpenApiSchemaExtensions.ToOpenApiSchemas(type, strategy);

            schemas.Count.Should().Be(3);

            var schema     = schemas[type.Name];
            var subSchema  = schemas[subType.Name];
            var enumSchema = schemas[enumType.Name];

            schema.Type.Should().Be("object");
            schema.Properties["fakeProperty"].Type.Should().BeEquivalentTo("string");
            schema.Properties["nullableInt"].Type.Should().BeEquivalentTo("integer");
            schema.Properties["nullableInt"].Nullable.Should().BeTrue();
            schema.Properties["subProperty"].Reference.Id.Should().BeEquivalentTo(subType.Name);
            schema.Properties["enumProperty"].Reference.Id.Should().BeEquivalentTo(enumType.Name);

            subSchema.Type.Should().Be("object");
            subSchema.Properties["fakeSubModelProperty"].Type.Should().BeEquivalentTo("integer");

            enumSchema.Type.Should().Be("string");
            enumSchema.Enum.Count.Should().Be(2);
        }
Ejemplo n.º 2
0
        public void Given_Type_JToken_It_Should_Return_Result()
        {
            var type = typeof(JToken);

            var schema = OpenApiSchemaExtensions.ToOpenApiSchema(type);

            schema.Type.Should().BeEquivalentTo("object");
        }
        public void Given_Type_JToken_It_Should_Return_Result()
        {
            var type     = typeof(JToken);
            var strategy = new CamelCaseNamingStrategy();

            var schema = OpenApiSchemaExtensions.ToOpenApiSchema(type, strategy);

            schema.Type.Should().BeEquivalentTo("object");
        }
Ejemplo n.º 4
0
        public void Given_Type_Simple_It_Should_Return_Result()
        {
            var type = typeof(int);

            var schema = OpenApiSchemaExtensions.ToOpenApiSchema(type);

            schema.Type.Should().BeEquivalentTo("integer");
            schema.Format.Should().BeEquivalentTo("int32");
        }
Ejemplo n.º 5
0
        public void Given_IDictionaryWithFakeModel_It_Should_Return_Result()
        {
            var type = typeof(Dictionary <string, FakeModel>);

            var schema = OpenApiSchemaExtensions.ToOpenApiSchema(type);

            schema.Type.Should().BeEquivalentTo("object");
            schema.AdditionalProperties.Type.Should().BeEquivalentTo("object");
        }
Ejemplo n.º 6
0
        public void Given_IDictionary_It_Should_Return_Result()
        {
            var type = typeof(Dictionary <string, int>);

            var schema = OpenApiSchemaExtensions.ToOpenApiSchema(type);

            schema.Type.Should().BeEquivalentTo("object");
            schema.AdditionalProperties.Type.Should().BeEquivalentTo("integer");
            schema.AdditionalProperties.Format.Should().BeEquivalentTo("int32");
        }
        public void Given_Type_Nullable_It_Should_Return_Result()
        {
            var type     = typeof(int?);
            var strategy = new CamelCaseNamingStrategy();

            var schema = OpenApiSchemaExtensions.ToOpenApiSchema(type, strategy);

            schema.Nullable.Should().BeTrue();
            schema.Type.Should().BeEquivalentTo("integer");
            schema.Format.Should().BeEquivalentTo("int32");
        }
        public void Defensive()
        {
            Assert.Empty(OpenApiSchemaExtensions.GetSchemaReferenceIds(null));
            var schema = new OpenApiSchema {
                AnyOf = null
            };

            Assert.Null(schema.AnyOf);
            Assert.Empty(schema.GetSchemaReferenceIds());
            schema = new() {
                AllOf = null
            };
            Assert.Null(schema.AllOf);
            Assert.Empty(schema.GetSchemaReferenceIds());
            schema = new() {
                OneOf = null
            };
            Assert.Null(schema.OneOf);
            Assert.Empty(schema.GetSchemaReferenceIds());
            schema = new() {
                Properties = null
            };
            Assert.Null(schema.Properties);
            Assert.Empty(schema.GetSchemaReferenceIds());
            Assert.False(OpenApiSchemaExtensions.IsAllOf(null));
            Assert.False(OpenApiSchemaExtensions.IsAnyOf(null));
            Assert.False(OpenApiSchemaExtensions.IsOneOf(null));
            Assert.False(OpenApiSchemaExtensions.IsArray(null));
            Assert.False(OpenApiSchemaExtensions.IsObject(null));
            Assert.False(OpenApiSchemaExtensions.IsReferencedSchema(null));

            Assert.False(new OpenApiSchema {
                Reference = null
            }.IsReferencedSchema());
            Assert.False(new OpenApiSchema {
                Type = null
            }.IsArray());
            Assert.False(new OpenApiSchema {
                Type = null
            }.IsObject());
            Assert.False(new OpenApiSchema {
                AnyOf = null
            }.IsAnyOf());
            Assert.False(new OpenApiSchema {
                AllOf = null
            }.IsAllOf());
            Assert.False(new OpenApiSchema {
                OneOf = null
            }.IsOneOf());
        }

        [Fact]
Ejemplo n.º 9
0
        public void Given_Visibility_It_Should_Return_Result()
        {
            var type           = typeof(int);
            var visibilityType = OpenApiVisibilityType.Important;
            var visibility     = new OpenApiSchemaVisibilityAttribute(visibilityType);

            var schema = OpenApiSchemaExtensions.ToOpenApiSchema(type, visibility);

            schema.Extensions.ContainsKey("x-ms-visibility").Should().BeTrue();
            schema.Extensions["x-ms-visibility"].Should().BeEquivalentTo(new OpenApiString(visibilityType.ToDisplayName()));
            schema.Type.Should().BeEquivalentTo("integer");
            schema.Format.Should().BeEquivalentTo("int32");
        }
Ejemplo n.º 10
0
        public void Given_Instance_When_IsOpenApiSchemaDictionary_Invoked_Then_It_Should_Return_Result(string type, string format, bool items, bool additionalProperties, bool expected)
        {
            var schema = new OpenApiSchema()
            {
                Type   = type,
                Format = format,
                Items  = items ? new OpenApiSchema() : null,
                AdditionalProperties = additionalProperties ? new OpenApiSchema() : null,
            };

            var result = OpenApiSchemaExtensions.IsOpenApiSchemaDictionary(schema);

            result.Should().Be(expected);
        }
        public void Given_FakeModelWithCircularRef_It_Should_Return_Result()
        {
            var type     = typeof(FakeModelWithCircularRef);
            var strategy = new CamelCaseNamingStrategy();

            var schemas = OpenApiSchemaExtensions.ToOpenApiSchemas(type, strategy);

            schemas.Count.Should().Be(2);
            var fmSchema  = schemas[type.Name];
            var fsmType   = typeof(FakeModelWithCircularRefSub);
            var fsmSchema = schemas[fsmType.Name];

            fmSchema.Type.Should().Be("object");
            fmSchema.Properties["subProperty"].Reference.Id.Should().BeEquivalentTo(fsmType.Name);

            fsmSchema.Type.Should().Be("object");
            fsmSchema.Properties["circle"].Reference.Id.Should().BeEquivalentTo(type.Name);
        }
        public void Given_FakeModelWithList_It_Should_Return_Result()
        {
            var type     = typeof(FakeModelWithList);
            var strategy = new CamelCaseNamingStrategy();

            var schemas = OpenApiSchemaExtensions.ToOpenApiSchemas(type, strategy);

            schemas.Count.Should().Be(2);
            var fmSchema  = schemas[type.Name];
            var fsmType   = typeof(FakeSubModel);
            var fsmSchema = schemas[fsmType.Name];

            fmSchema.Type.Should().Be("object");
            fmSchema.Properties["parent"].Reference.Id.Should().BeEquivalentTo(fsmType.Name);
            fmSchema.Properties["items"].Type.Should().BeEquivalentTo("array");
            fmSchema.Properties["items"].Items.Reference.Id.Should().BeEquivalentTo(fsmType.Name);

            fsmSchema.Type.Should().Be("object");
            fsmSchema.Properties["fakeSubModelProperty"].Type.Should().BeEquivalentTo("integer");
        }
        public void Given_Type_Null_It_Should_Throw_Exception()
        {
            Action action = () => OpenApiSchemaExtensions.ToOpenApiSchema(null, null, null);

            action.Should().Throw <ArgumentNullException>();
        }