Esempio n. 1
0
 public RootNode(
     ParsingContext context,
     OpenApiDiagnostic diagnostic,
     YamlDocument yamlDocument) : base(context, diagnostic)
 {
     _yamlDocument = yamlDocument;
 }
        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"
                }
            }
                );
        }
Esempio n. 3
0
        public void ParsePrimitiveStringSchemaFragmentShouldSucceed()
        {
            var input      = @"
{ ""type"": ""integer"",
""format"": ""int64"",
""default"": 88
}
";
            var reader     = new OpenApiStringReader();
            var diagnostic = new OpenApiDiagnostic();

            // Act
            var schema = reader.ReadFragment <OpenApiSchema>(input, OpenApiSpecVersion.OpenApi3_0, out diagnostic);

            // Assert
            diagnostic.ShouldBeEquivalentTo(new OpenApiDiagnostic());

            schema.ShouldBeEquivalentTo(
                new OpenApiSchema
            {
                Type    = "integer",
                Format  = "int64",
                Default = new OpenApiInteger(88)
            });
        }
Esempio n. 4
0
        public void EndpointsJsonIsValid()
        {
            OpenApiDocument   document   = Resources.OpenApiDefinition;
            OpenApiDiagnostic diagnostic = Resources.ApiDiagnostic;

            Assert.IsFalse(diagnostic.Errors.Any(), string.Join(",", diagnostic.Errors));
        }
Esempio n. 5
0
        public void ParsePrimitiveSchemaShouldSucceed()
        {
            using (var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "primitiveSchema.yaml")))
            {
                var yamlStream = new YamlStream();
                yamlStream.Load(new StreamReader(stream));
                var yamlNode = yamlStream.Documents.First().RootNode;

                var diagnostic = new OpenApiDiagnostic();
                var context    = new ParsingContext(diagnostic);

                var node = new MapNode(context, (YamlMappingNode)yamlNode);

                // Act
                var schema = OpenApiV3Deserializer.LoadSchema(node);

                // Assert
                diagnostic.Should().BeEquivalentTo(new OpenApiDiagnostic());

                schema.Should().BeEquivalentTo(
                    new OpenApiSchema
                {
                    Type   = "string",
                    Format = "email"
                });
            }
        }
Esempio n. 6
0
        public void ParseHttpSecuritySchemeShouldSucceed()
        {
            using (var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "httpSecurityScheme.yaml")))
            {
                var yamlStream = new YamlStream();
                yamlStream.Load(new StreamReader(stream));
                var yamlNode = yamlStream.Documents.First().RootNode;

                var diagnostic = new OpenApiDiagnostic();
                var context    = new ParsingContext(diagnostic);

                var node = new MapNode(context, (YamlMappingNode)yamlNode);

                // Act
                var securityScheme = OpenApiV3Deserializer.LoadSecurityScheme(node);

                // Assert
                securityScheme.Should().BeEquivalentTo(
                    new OpenApiSecurityScheme
                {
                    Type   = SecuritySchemeType.Http,
                    Scheme = "basic"
                });
            }
        }
Esempio n. 7
0
        public void LoadSecuritySchemeReference()
        {
            // Arrange
            var context    = new ParsingContext();
            var diagnostic = new OpenApiDiagnostic();

            using (var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "multipleReferences.v2.yaml")))
            {
                var yamlStream = new YamlStream();
                yamlStream.Load(new StreamReader(stream));
                var yamlDocument = yamlStream.Documents.First();

                context.RootNode = new RootNode(context, diagnostic, yamlDocument);
            }

            context.VersionService = new OpenApiV2VersionService();
            var reference = new OpenApiReference
            {
                Type = ReferenceType.SecurityScheme,
                Id   = "api_key_sample"
            };

            // Act
            context.VersionService.TryLoadReference(context, reference, out var referencedObject);

            // Assert
            referencedObject.ShouldBeEquivalentTo(
                new OpenApiSecurityScheme
            {
                Type = SecuritySchemeType.ApiKey,
                Name = "api_key",
                In   = ParameterLocation.Header
            }
                );
        }
Esempio n. 8
0
        public void ParseMinimalInfoShouldSucceed()
        {
            using (var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "minimalInfo.yaml")))
            {
                var yamlStream = new YamlStream();
                yamlStream.Load(new StreamReader(stream));
                var yamlNode = yamlStream.Documents.First().RootNode;

                var diagnostic = new OpenApiDiagnostic();
                var context    = new ParsingContext(diagnostic);

                var node = new MapNode(context, (YamlMappingNode)yamlNode);

                // Act
                var openApiInfo = OpenApiV3Deserializer.LoadInfo(node);

                // Assert
                openApiInfo.Should().BeEquivalentTo(
                    new OpenApiInfo
                {
                    Title   = "Minimal Info",
                    Version = "1.0.1"
                });
            }
        }
Esempio n. 9
0
        public void ParseCustomExtension()
        {
            var description = @"
openapi: 3.0.0
info: 
    title: A doc with an extension
    version: 1.0.0
    x-foo: 
        bar: hey
        baz: hi!
paths: {}
";
            var settings    = new OpenApiReaderSettings()
            {
                ExtensionParsers = { { "x-foo", (a, v) => {
                                           var fooNode = (OpenApiObject)a;
                                           return(new FooExtension()
                            {
                                Bar = (fooNode["bar"] as OpenApiString)?.Value,
                                Baz = (fooNode["baz"] as OpenApiString)?.Value
                            });
                                       } } }
            };

            var reader = new OpenApiStringReader(settings);

            var diag = new OpenApiDiagnostic();
            var doc  = reader.Read(description, out diag);

            var fooExtension = doc.Info.Extensions["x-foo"] as FooExtension;

            fooExtension.Should().NotBeNull();
            fooExtension.Bar.Should().Be("hey");
            fooExtension.Baz.Should().Be("hi!");
        }
        public void ParseOAuth2ImplicitSecuritySchemeShouldSucceed()
        {
            using (var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "oauth2ImplicitSecurityScheme.yaml")))
            {
                var document   = LoadYamlDocument(stream);
                var diagnostic = new OpenApiDiagnostic();
                var context    = new ParsingContext(diagnostic);

                var node = new MapNode(context, (YamlMappingNode)document.RootNode);

                // Act
                var securityScheme = OpenApiV2Deserializer.LoadSecurityScheme(node);

                // Assert
                securityScheme.Should().BeEquivalentTo(
                    new OpenApiSecurityScheme
                {
                    Type  = SecuritySchemeType.OAuth2,
                    Flows = new OpenApiOAuthFlows
                    {
                        Implicit = new OpenApiOAuthFlow
                        {
                            AuthorizationUrl = new Uri("http://swagger.io/api/oauth/dialog"),
                            Scopes           =
                            {
                                ["write:pets"] = "modify pets in your account",
                                ["read:pets"]  = "read your pets"
                            }
                        }
                    }
                });
            }
        }
Esempio n. 11
0
        public void ParseDictionarySchemaShouldSucceed()
        {
            using (var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "dictionarySchema.yaml")))
            {
                var yamlStream = new YamlStream();
                yamlStream.Load(new StreamReader(stream));
                var yamlNode = yamlStream.Documents.First().RootNode;

                var context    = new ParsingContext();
                var diagnostic = new OpenApiDiagnostic();

                var node = new MapNode(context, diagnostic, (YamlMappingNode)yamlNode);

                // Act
                var schema = OpenApiV3Deserializer.LoadSchema(node);

                // Assert
                diagnostic.ShouldBeEquivalentTo(new OpenApiDiagnostic());

                schema.ShouldBeEquivalentTo(
                    new OpenApiSchema
                {
                    Type = "object",
                    AdditionalProperties = new OpenApiSchema
                    {
                        Type = "string"
                    }
                });
            }
        }
Esempio n. 12
0
 public PropertyNode(ParsingContext context, OpenApiDiagnostic diagnostic, string name, YamlNode node) : base(
         context,
         diagnostic)
 {
     Name  = name;
     Value = Create(context, diagnostic, node);
 }
Esempio n. 13
0
        public void ParseExampleStringFragmentShouldSucceed()
        {
            var input      = @"
{ 
  ""foo"": ""bar"",
  ""baz"": [ 1,2]
}";
            var reader     = new OpenApiStringReader();
            var diagnostic = new OpenApiDiagnostic();

            // Act
            var openApiAny = reader.ReadFragment <IOpenApiAny>(input, OpenApiSpecVersion.OpenApi3_0, out diagnostic);

            // Assert
            diagnostic.ShouldBeEquivalentTo(new OpenApiDiagnostic());

            openApiAny.ShouldBeEquivalentTo(
                new OpenApiObject
            {
                ["foo"] = new OpenApiString("bar"),
                ["baz"] = new OpenApiArray()
                {
                    new OpenApiInteger(1),
                    new OpenApiInteger(2)
                }
            });
        }
        public void ParseOpenIdConnectSecuritySchemeShouldSucceed()
        {
            using (var stream = File.OpenRead(Path.Combine(SampleFolderPath, "openIdConnectSecurityScheme.yaml")))
            {
                var yamlStream = new YamlStream();
                yamlStream.Load(new StreamReader(stream));
                var yamlNode = yamlStream.Documents.First().RootNode;

                var context    = new ParsingContext();
                var diagnostic = new OpenApiDiagnostic();

                var node = new MapNode(context, diagnostic, (YamlMappingNode)yamlNode);

                // Act
                var securityScheme = OpenApiV3Deserializer.LoadSecurityScheme(node);

                // Assert
                securityScheme.ShouldBeEquivalentTo(
                    new OpenApiSecurityScheme
                {
                    Type             = SecuritySchemeType.OpenIdConnect,
                    Description      = "Sample Description",
                    OpenIdConnectUrl = new Uri("http://www.example.com")
                });
            }
        }
        public void ParseBearerSecuritySchemeShouldSucceed()
        {
            using (var stream = File.OpenRead(Path.Combine(SampleFolderPath, "bearerSecurityScheme.yaml")))
            {
                var yamlStream = new YamlStream();
                yamlStream.Load(new StreamReader(stream));
                var yamlNode = yamlStream.Documents.First().RootNode;

                var context    = new ParsingContext();
                var diagnostic = new OpenApiDiagnostic();

                var node = new MapNode(context, diagnostic, (YamlMappingNode)yamlNode);

                // Act
                var securityScheme = OpenApiV3Deserializer.LoadSecurityScheme(node);

                // Assert
                securityScheme.ShouldBeEquivalentTo(
                    new OpenApiSecurityScheme
                {
                    Type         = SecuritySchemeType.Http,
                    Scheme       = "bearer",
                    BearerFormat = "JWT"
                });
            }
        }
        public void ParseListAsAnyShouldSucceed()
        {
            var input      = @"
- fooBar
- 10
- 2.34
- 2017-01-01
                ";
            var yamlStream = new YamlStream();

            yamlStream.Load(new StringReader(input));
            var yamlNode = yamlStream.Documents.First().RootNode;

            var context    = new ParsingContext();
            var diagnostic = new OpenApiDiagnostic();

            var node = new ListNode(context, diagnostic, (YamlSequenceNode)yamlNode);

            var any = node.CreateAny();

            diagnostic.Errors.Should().BeEmpty();

            any.ShouldBeEquivalentTo(
                new OpenApiArray
            {
                new OpenApiString("fooBar"),
                new OpenApiInteger(10),
                new OpenApiDouble(2.34),
                new OpenApiDateTime(DateTimeOffset.Parse("2017-01-01"))
            });
        }
        public void ParseBasicXmlShouldSucceed()
        {
            using (var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "basicXml.yaml")))
            {
                var yamlStream = new YamlStream();
                yamlStream.Load(new StreamReader(stream));
                var yamlNode = yamlStream.Documents.First().RootNode;

                var context    = new ParsingContext();
                var diagnostic = new OpenApiDiagnostic();

                var node = new MapNode(context, diagnostic, (YamlMappingNode)yamlNode);

                // Act
                var xml = OpenApiV3Deserializer.LoadXml(node);

                // Assert
                xml.ShouldBeEquivalentTo(
                    new OpenApiXml
                {
                    Name      = "name1",
                    Namespace = new Uri("http://example.com/schema/namespaceSample"),
                    Prefix    = "samplePrefix",
                    Wrapped   = true
                });
            }
        }
Esempio n. 18
0
        public void LoadResponseReference()
        {
            // Arrange
            var      context    = new ParsingContext();
            var      diagnostic = new OpenApiDiagnostic();
            RootNode rootNode;

            using (var stream = File.OpenRead(Path.Combine(SampleFolderPath, "multipleReferences.v2.yaml")))
            {
                var yamlStream = new YamlStream();
                yamlStream.Load(new StreamReader(stream));
                var yamlDocument = yamlStream.Documents.First();

                rootNode = new RootNode(context, diagnostic, yamlDocument);
            }

            context.ReferenceService = new OpenApiV2ReferenceService(rootNode);

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

            // Act
            context.ReferenceService.TryLoadReference(reference, out var referencedObject);

            // Assert
            referencedObject.ShouldBeEquivalentTo(
                new OpenApiResponse
            {
                Description = "Entity not found."
            }
                );
        }
        public void ParseMapAsAnyShouldSucceed()
        {
            var input      = @"
aString: fooBar
aInteger: 10
aDouble: 2.34
aDateTime: 2017-01-01
                ";
            var yamlStream = new YamlStream();

            yamlStream.Load(new StringReader(input));
            var yamlNode = yamlStream.Documents.First().RootNode;

            var context    = new ParsingContext();
            var diagnostic = new OpenApiDiagnostic();

            var node = new MapNode(context, diagnostic, (YamlMappingNode)yamlNode);

            var anyMap = node.CreateAny();

            diagnostic.Errors.Should().BeEmpty();

            anyMap.ShouldBeEquivalentTo(
                new OpenApiObject
            {
                ["aString"]   = new OpenApiString("fooBar"),
                ["aInteger"]  = new OpenApiInteger(10),
                ["aDouble"]   = new OpenApiDouble(2.34),
                ["aDateTime"] = new OpenApiDateTime(DateTimeOffset.Parse("2017-01-01"))
            });
        }
Esempio n. 20
0
 public OpenApiDocumentContainer(FileInfo docFile, string docText, OpenApiDocument openApiDocument, OpenApiDiagnostic openApiDiagnostic)
 {
     DocFile    = docFile;
     DocText    = docText;
     Document   = openApiDocument;
     Diagnostic = openApiDiagnostic;
 }
Esempio n. 21
0
        public void ParseBasicDiscriminatorShouldSucceed()
        {
            using (var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "basicDiscriminator.yaml")))
            {
                var yamlStream = new YamlStream();
                yamlStream.Load(new StreamReader(stream));
                var yamlNode = yamlStream.Documents.First().RootNode;

                var diagnostic = new OpenApiDiagnostic();
                var context    = new ParsingContext(diagnostic);

                var node = new MapNode(context, (YamlMappingNode)yamlNode);

                // Act
                var discriminator = OpenApiV3Deserializer.LoadDiscriminator(node);

                // Assert
                discriminator.Should().BeEquivalentTo(
                    new OpenApiDiscriminator
                {
                    PropertyName = "pet_type",
                    Mapping      =
                    {
                        ["puppy"]  = "#/components/schemas/Dog",
                        ["kitten"] = "Cat"
                    }
                });
            }
        }
Esempio n. 22
0
        public void ParseApiKeySecuritySchemeShouldSucceed()
        {
            using (var stream = File.OpenRead(Path.Combine(SampleFolderPath, "apiKeySecurityScheme.yaml")))
            {
                var yamlStream = new YamlStream();
                yamlStream.Load(new StreamReader(stream));
                var yamlNode = yamlStream.Documents.First().RootNode;

                var context    = new ParsingContext();
                var diagnostic = new OpenApiDiagnostic();

                var node = new MapNode(context, diagnostic, (YamlMappingNode)yamlNode);

                // Act
                var securityScheme = OpenApiV2Deserializer.LoadSecurityScheme(node);

                // Assert
                securityScheme.ShouldBeEquivalentTo(
                    new OpenApiSecurityScheme
                {
                    Type = SecuritySchemeType.ApiKey,
                    Name = "api_key",
                    In   = ParameterLocation.Header
                });
            }
        }
        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"
                }
            }
                );
        }
Esempio n. 24
0
 /// <summary>
 /// Gets an Open API YAML file stored as an embedded resource, and returns parsing diagnostics.
 /// </summary>
 /// <param name="assembly">The assembly in which the resource is stored.</param>
 /// <param name="resourceName">The name of the embedded resource.</param>
 /// <param name="diagnostics">Diagnostics will be returned through this parameter.</param>
 /// <returns>The parsed document.</returns>
 public static OpenApiDocument ReadOpenApiServiceFromEmbeddedDefinitionWithDiagnostics(
     Assembly assembly,
     string resourceName,
     out OpenApiDiagnostic diagnostics)
 {
     using Stream stream = assembly.GetManifestResourceStream(resourceName);
     return(new OpenApiStreamReader().Read(stream, out diagnostics));
 }
Esempio n. 25
0
        public void ParseAdvancedInfoShouldSucceed()
        {
            using (var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "advancedInfo.yaml")))
            {
                var yamlStream = new YamlStream();
                yamlStream.Load(new StreamReader(stream));
                var yamlNode = yamlStream.Documents.First().RootNode;

                var diagnostic = new OpenApiDiagnostic();
                var context    = new ParsingContext(diagnostic);

                var node = new MapNode(context, (YamlMappingNode)yamlNode);

                // Act
                var openApiInfo = OpenApiV3Deserializer.LoadInfo(node);

                // Assert
                openApiInfo.Should().BeEquivalentTo(
                    new OpenApiInfo
                {
                    Title          = "Advanced Info",
                    Description    = "Sample Description",
                    Version        = "1.0.0",
                    TermsOfService = new Uri("http://example.org/termsOfService"),
                    Contact        = new OpenApiContact
                    {
                        Email      = "*****@*****.**",
                        Extensions =
                        {
                            ["x-twitter"] = new OpenApiString("@exampleTwitterHandler")
                        },
                        Name = "John Doe",
                        Url  = new Uri("http://www.example.com/url1")
                    },
                    License = new OpenApiLicense
                    {
                        Extensions = { ["x-disclaimer"] = new OpenApiString("Sample Extension String Disclaimer") },
                        Name       = "licenseName",
                        Url        = new Uri("http://www.example.com/url2")
                    },
                    Extensions =
                    {
                        ["x-something"] = new OpenApiString("Sample Extension String Something"),
                        ["x-contact"]   = new OpenApiObject
                        {
                            ["name"]  = new OpenApiString("John Doe"),
                            ["url"]   = new OpenApiString("http://www.example.com/url3"),
                            ["email"] = new OpenApiString("*****@*****.**")
                        },
                        ["x-list"] = new OpenApiArray
                        {
                            new OpenApiString("1"),
                            new OpenApiString("2")
                        }
                    }
                });
            }
        }
Esempio n. 26
0
        public void ParseAdvancedExampleShouldSucceed()
        {
            using (var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "advancedExample.yaml")))
            {
                var yamlStream = new YamlStream();
                yamlStream.Load(new StreamReader(stream));
                var yamlNode = yamlStream.Documents.First().RootNode;

                var context    = new ParsingContext();
                var diagnostic = new OpenApiDiagnostic();

                var node = new MapNode(context, diagnostic, (YamlMappingNode)yamlNode);

                var example = OpenApiV3Deserializer.LoadExample(node);

                diagnostic.Errors.Should().BeEmpty();

                example.ShouldBeEquivalentTo(
                    new OpenApiExample
                {
                    Value = new OpenApiObject
                    {
                        ["versions"] = new OpenApiArray
                        {
                            new OpenApiObject
                            {
                                ["status"] = new OpenApiString("Status1"),
                                ["id"]     = new OpenApiString("v1"),
                                ["links"]  = new OpenApiArray
                                {
                                    new OpenApiObject
                                    {
                                        ["href"] = new OpenApiString("http://example.com/1"),
                                        ["rel"]  = new OpenApiString("sampleRel1")
                                    }
                                }
                            },

                            new OpenApiObject
                            {
                                ["status"] = new OpenApiString("Status2"),
                                ["id"]     = new OpenApiString("v2"),
                                ["links"]  = new OpenApiArray
                                {
                                    new OpenApiObject
                                    {
                                        ["href"] = new OpenApiString("http://example.com/2"),
                                        ["rel"]  = new OpenApiString("sampleRel2")
                                    }
                                }
                            }
                        }
                    }
                });
            }
        }
        /// <summary>
        /// Blazor WebAssembly won't be ready for a while, so this method assumes we're using Blazor Server.
        /// So a .json file is read.
        /// For Blazer WA this should make an http call.
        /// </summary>
        /// <returns></returns>
        public Task <OpenApiDocument> GetDocument()
        {
            OpenApiDiagnostic apiDiagnostic = null;

            // Note: OpenApi.NET doesn't appear to have an async reader or I would have used it.
            OpenApiDocument document =
                new OpenApiStreamReader().Read(new FileStream(Path, FileMode.Open), out apiDiagnostic);

            return(Task.FromResult(document));
        }
Esempio n. 28
0
 public ValueNode(ParsingContext context, OpenApiDiagnostic diagnostic, YamlNode node) : base(
         context,
         diagnostic)
 {
     if (!(node is YamlScalarNode scalarNode))
     {
         throw new OpenApiReaderException("Expected a value.", node);
     }
     _node = scalarNode;
 }
        public ConvertToOpenApiReferenceV2Tests()
        {
            var context    = new ParsingContext();
            var diagnostic = new OpenApiDiagnostic();

            var yamlDocument = new YamlDocument("{}");
            var rootNode     = new RootNode(context, diagnostic, yamlDocument);

            _referenceService = new OpenApiV2ReferenceService(rootNode);
        }
Esempio n. 30
0
        public void LoadSchemaReference()
        {
            // Arrange
            var      context    = new ParsingContext();
            var      diagnostic = new OpenApiDiagnostic();
            RootNode rootNode;

            using (var stream = File.OpenRead(Path.Combine(SampleFolderPath, "multipleReferences.v2.yaml")))
            {
                var yamlStream = new YamlStream();
                yamlStream.Load(new StreamReader(stream));
                var yamlDocument = yamlStream.Documents.First();

                rootNode = new RootNode(context, diagnostic, yamlDocument);
            }

            context.ReferenceService = new OpenApiV2ReferenceService(rootNode);

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

            // Act
            context.ReferenceService.TryLoadReference(reference, out var referencedObject);

            // 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"
                    }
                }
            }
                );
        }