-
Notifications
You must be signed in to change notification settings - Fork 275
Expand file tree
/
Copy pathOpenApiModelFactoryTests.cs
More file actions
122 lines (120 loc) · 3.39 KB
/
OpenApiModelFactoryTests.cs
File metadata and controls
122 lines (120 loc) · 3.39 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
using Xunit;
using Microsoft.OpenApi.Reader;
using Microsoft.OpenApi.Models;
using System.Threading.Tasks;
using System.IO;
using System;
namespace Microsoft.OpenApi.Tests.Reader;
public class OpenApiModelFactoryTests
{
[Fact]
public async Task UsesSettingsBaseUrl()
{
var tempFilePathReferee = Path.Combine(Path.GetTempPath(), Path.GetTempFileName());
await File.WriteAllTextAsync(tempFilePathReferee,
"""
{
"openapi": "3.1.1",
"info": {
"title": "OData Service for namespace microsoft.graph",
"description": "This OData service is located at https://graph.microsoft.com/v1.0",
"version": "1.0.1"
},
"servers": [
{
"url": "https://graph.microsoft.com/v1.0"
}
],
"paths": {
"/placeholder": {
"get": {
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"type": "string"
}
}
}
}
}
}
}
},
"components": {
"schemas": {
"MySchema": {
"type": "object",
"properties": {
"id": {
"type": "string"
}
}
}
}
}
}
""");
var tempFilePathReferrer = Path.Combine(Path.GetTempPath(), Path.GetTempFileName());
await File.WriteAllTextAsync(tempFilePathReferrer,
$$$"""
{
"openapi": "3.1.1",
"info": {
"title": "OData Service for namespace microsoft.graph",
"description": "This OData service is located at https://graph.microsoft.com/v1.0",
"version": "1.0.1"
},
"servers": [
{
"url": "https://graph.microsoft.com/v1.0"
}
],
"paths": {
"/placeholder": {
"get": {
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "./{{{Path.GetFileName(tempFilePathReferee)}}}#/components/schemas/MySchema"
}
}
}
}
}
}
}
},
"components": {
"schemas": {
"MySchema": {
"type": "object",
"properties": {
"id": {
"type": "string"
}
}
}
}
}
}
""");
// read referrer document to a memory stream
using var stream = new MemoryStream();
using var reader = new StreamReader(tempFilePathReferrer);
await reader.BaseStream.CopyToAsync(stream);
stream.Position = 0;
var baseUri = new Uri(tempFilePathReferrer);
var settings = new OpenApiReaderSettings
{
BaseUrl = baseUri,
};
var readResult = await OpenApiDocument.LoadAsync(stream, settings: settings);
Assert.NotNull(readResult.Document);
Assert.NotNull(readResult.Document.Components);
Assert.Equal(baseUri, readResult.Document.BaseUri);
}
}