public void LoadResponseReference()
        {
            // Arrange
            OpenApiDocument document;
            var             diagnostic = new OpenApiDiagnostic();

            using (var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "multipleReferences.v2.yaml")))
            {
                document = new OpenApiStreamReader().Read(stream, out diagnostic);
            }

            var reference = new OpenApiReference
            {
                Type = ReferenceType.Response,
                Id   = "NotFound"
            };

            // Act
            var referencedObject = document.ResolveReference(reference);

            // Assert
            referencedObject.ShouldBeEquivalentTo(
                new OpenApiResponse
            {
                Description = "Entity not found.",
                Reference   = new OpenApiReference
                {
                    Type = ReferenceType.Response,
                    Id   = "NotFound"
                }
            }
                );
        }
        public void LoadSecuritySchemeReference()
        {
            // Arrange
            OpenApiDocument document;
            var             diagnostic = new OpenApiDiagnostic();

            using (var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "multipleReferences.v2.yaml")))
            {
                document = new OpenApiStreamReader().Read(stream, out diagnostic);
            }

            var reference = new OpenApiReference
            {
                Type = ReferenceType.SecurityScheme,
                Id   = "api_key_sample"
            };

            // Act
            var referencedObject = document.ResolveReference(reference);

            // Assert
            referencedObject.ShouldBeEquivalentTo(
                new OpenApiSecurityScheme
            {
                Type      = SecuritySchemeType.ApiKey,
                Name      = "api_key",
                In        = ParameterLocation.Header,
                Reference = new OpenApiReference
                {
                    Type = ReferenceType.SecurityScheme,
                    Id   = "api_key_sample"
                }
            }
                );
        }
        public void LoadSchemaReference()
        {
            // Arrange
            OpenApiDocument document;
            var             diagnostic = new OpenApiDiagnostic();

            using (var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "multipleReferences.v2.yaml")))
            {
                document = new OpenApiStreamReader().Read(stream, out diagnostic);
            }

            var reference = new OpenApiReference
            {
                Type = ReferenceType.Schema,
                Id   = "SampleObject"
            };

            // Act
            var referencedObject = document.ResolveReference(reference);

            // Assert
            referencedObject.ShouldBeEquivalentTo(
                new OpenApiSchema
            {
                Required =
                {
                    "id",
                    "name"
                },
                Properties =
                {
                    ["id"] = new OpenApiSchema
                    {
                    Type   = "integer",
                    Format = "int64"
                    },
                    ["name"] = new OpenApiSchema
                    {
                    Type = "string"
                    },
                    ["tag"] = new OpenApiSchema
                    {
                    Type = "string"
                    }
                },
                Reference = new OpenApiReference
                {
                    Type = ReferenceType.Schema,
                    Id   = "SampleObject"
                }
            }
                );
        }
        public void LoadParameterReference()
        {
            // Arrange
            OpenApiDocument document;
            var             diagnostic = new OpenApiDiagnostic();

            using (var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "multipleReferences.v2.yaml")))
            {
                document = new OpenApiStreamReader().Read(stream, out diagnostic);
            }

            var reference = new OpenApiReference
            {
                Type = ReferenceType.Parameter,
                Id   = "skipParam"
            };

            // Act
            var referencedObject = document.ResolveReference(reference);

            // Assert
            referencedObject.ShouldBeEquivalentTo(
                new OpenApiParameter
            {
                Name        = "skip",
                In          = ParameterLocation.Query,
                Description = "number of items to skip",
                Required    = true,
                Schema      = new OpenApiSchema
                {
                    Type   = "integer",
                    Format = "int32"
                },
                Reference = new OpenApiReference
                {
                    Type = ReferenceType.Parameter,
                    Id   = "skipParam"
                }
            }
                );
        }
        public void LoadResponseAndSchemaReference()
        {
            // Arrange
            OpenApiDocument document;
            var             diagnostic = new OpenApiDiagnostic();

            using (var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "multipleReferences.v2.yaml")))
            {
                document = new OpenApiStreamReader().Read(stream, out diagnostic);
            }

            var reference = new OpenApiReference
            {
                Type = ReferenceType.Response,
                Id   = "GeneralError"
            };

            // Act
            var referencedObject = document.ResolveReference(reference);

            // Assert
            referencedObject.ShouldBeEquivalentTo(
                new OpenApiResponse
            {
                Description = "General Error",
                Content     =
                {
                    ["application/json"] = new OpenApiMediaType
                                {
                                Schema = new OpenApiSchema
                                {
                                Description = "Sample description",
                                Required    = new List <string> {
                                    "name"
                                },
                                Properties =
                                {
                                ["name"] = new OpenApiSchema()
                                {
                                Type = "string"
                                },
                                ["tag"] = new OpenApiSchema()
                                {
                                Type = "string"
                                }
                                },

                                Reference = new OpenApiReference
                                {
                                Type = ReferenceType.Schema,
                                Id   = "SampleObject2"
                                }
                                }
                                }
                },
                Reference = new OpenApiReference
                {
                    Type = ReferenceType.Response,
                    Id   = "GeneralError"
                }
            }
                );
        }