Skip to content

Commit b511167

Browse files
committed
Update tests
Since we are no longer resolving JsonSchema refs when parsing a doc., some tests need to be updated
1 parent dd08d86 commit b511167

File tree

8 files changed

+61
-131
lines changed

8 files changed

+61
-131
lines changed

test/Microsoft.OpenApi.Readers.Tests/OpenApiReaderTests/OpenApiDiagnosticTests.cs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,13 +54,11 @@ public async Task DiagnosticReportMergedForExternalReference()
5454
ReadResult result;
5555
result = await OpenApiDocument.LoadAsync("OpenApiReaderTests/Samples/OpenApiDiagnosticReportMerged/TodoMain.yaml", settings);
5656

57-
5857
Assert.NotNull(result);
5958
Assert.NotNull(result.OpenApiDocument.Workspace);
6059
result.OpenApiDiagnostic.Errors.Should().BeEquivalentTo(new List<OpenApiError>
6160
{
62-
new OpenApiError("", "[File: ./TodoReference.yaml] Paths is a REQUIRED field at #/"),
63-
new(new OpenApiException("[File: ./TodoReference.yaml] Invalid Reference identifier 'object-not-existing'."))
61+
new OpenApiError("", "[File: ./TodoReference.yaml] Paths is a REQUIRED field at #/")
6462
});
6563
}
6664
}

test/Microsoft.OpenApi.Readers.Tests/OpenApiWorkspaceTests/OpenApiWorkspaceStreamTests.cs

Lines changed: 9 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ public async Task LoadingDocumentWithResolveAllReferencesShouldLoadDocumentIntoW
5252
}
5353

5454
[Fact]
55-
public async Task LoadDocumentWithExternalReferenceShouldLoadBothDocumentsIntoWorkspace()
55+
public async Task LoadDocumentWithExternalReferenceShouldLoadExternalDocumentComponentsIntoWorkspace()
5656
{
5757
// Create a reader that will resolve all references
5858
var settings = new OpenApiReaderSettings
@@ -63,28 +63,16 @@ public async Task LoadDocumentWithExternalReferenceShouldLoadBothDocumentsIntoWo
6363
};
6464

6565
ReadResult result;
66-
result = await OpenApiDocument.LoadAsync("V3Tests/Samples/OpenApiWorkspace/TodoMain.yaml", settings);
66+
result = await OpenApiDocument.LoadAsync("V3Tests/Samples/OpenApiWorkspace/TodoMain.yaml", settings);
6767

68-
Assert.NotNull(result.OpenApiDocument.Workspace);
69-
70-
var referencedSchema = result.OpenApiDocument
71-
.Paths["/todos"]
72-
.Operations[OperationType.Get]
73-
.Responses["200"]
74-
.Content["application/json"]
75-
.Schema;
76-
77-
var x = referencedSchema.GetProperties().TryGetValue("subject", out var schema);
78-
Assert.Equal(SchemaValueType.Object, referencedSchema.GetJsonType());
79-
Assert.Equal(SchemaValueType.String, schema.GetJsonType());
80-
81-
var referencedParameter = result.OpenApiDocument
82-
.Paths["/todos"]
83-
.Operations[OperationType.Get]
84-
.Parameters.Select(p => p)
85-
.FirstOrDefault(p => p.Name == "filter");
68+
var externalDocBaseUri = result.OpenApiDocument.Workspace.GetDocumentId("./TodoComponents.yaml");
69+
var schemasPath = "/components/schemas/";
70+
var parametersPath = "/components/parameters/";
8671

87-
Assert.Equal(SchemaValueType.String, referencedParameter.Schema.GetJsonType());
72+
Assert.NotNull(externalDocBaseUri);
73+
Assert.True(result.OpenApiDocument.Workspace.Contains(externalDocBaseUri + schemasPath + "todo"));
74+
Assert.True(result.OpenApiDocument.Workspace.Contains(externalDocBaseUri + schemasPath + "entity"));
75+
Assert.True(result.OpenApiDocument.Workspace.Contains(externalDocBaseUri + parametersPath + "filter"));
8876
}
8977
}
9078

test/Microsoft.OpenApi.Readers.Tests/ReferenceService/TryLoadReferenceV2Tests.cs

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Copyright (c) Microsoft Corporation. All rights reserved.
1+
// Copyright (c) Microsoft Corporation. All rights reserved.
22
// Licensed under the MIT license.
33

44
using System.Collections.Generic;
@@ -100,11 +100,6 @@ public void LoadResponseAndSchemaReference()
100100
{
101101
Schema = new JsonSchemaBuilder()
102102
.Ref("#/definitions/SampleObject2")
103-
.Description("Sample description")
104-
.Required("name")
105-
.Properties(
106-
("name", new JsonSchemaBuilder().Type(SchemaValueType.String)),
107-
("tag", new JsonSchemaBuilder().Type(SchemaValueType.String)))
108103
.Build()
109104
}
110105
}

test/Microsoft.OpenApi.Readers.Tests/V2Tests/OpenApiDocumentTests.cs

Lines changed: 12 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,12 @@
22
// Licensed under the MIT license.
33

44
using System;
5-
using System.Globalization;
65
using System.IO;
76
using System.Linq;
87
using FluentAssertions;
98
using Json.Schema;
109
using Microsoft.OpenApi.Models;
1110
using Microsoft.OpenApi.Reader;
12-
using Microsoft.OpenApi.Writers;
13-
using VerifyXunit;
1411
using Xunit;
1512

1613
namespace Microsoft.OpenApi.Readers.Tests.V2Tests
@@ -30,15 +27,10 @@ public void ShouldParseProducesInAnyOrder()
3027
var result = OpenApiDocument.Load(Path.Combine(SampleFolderPath, "twoResponses.json"));
3128

3229
var okSchema = new JsonSchemaBuilder()
33-
.Ref("#/definitions/Item")
34-
.Properties(("id", new JsonSchemaBuilder().Type(SchemaValueType.String).Description("Item identifier.")));
30+
.Ref("#/definitions/Item");
3531

3632
var errorSchema = new JsonSchemaBuilder()
37-
.Ref("#/definitions/Error")
38-
.Properties(
39-
("code", new JsonSchemaBuilder().Type(SchemaValueType.Integer).Format("int32")),
40-
("message", new JsonSchemaBuilder().Type(SchemaValueType.String)),
41-
("fields", new JsonSchemaBuilder().Type(SchemaValueType.String)));
33+
.Ref("#/definitions/Error");
4234

4335
var okMediaType = new OpenApiMediaType
4436
{
@@ -147,12 +139,18 @@ public void ShouldParseProducesInAnyOrder()
147139
{
148140
Schemas =
149141
{
150-
["Item"] = okSchema,
151-
["Error"] = errorSchema
142+
["Item"] = new JsonSchemaBuilder()
143+
.Ref("#/definitions/Item")
144+
.Properties(("id", new JsonSchemaBuilder().Type(SchemaValueType.String).Description("Item identifier."))),
145+
["Error"] = new JsonSchemaBuilder()
146+
.Ref("#/definitions/Error")
147+
.Properties(
148+
("code", new JsonSchemaBuilder().Type(SchemaValueType.Integer).Format("int32")),
149+
("message", new JsonSchemaBuilder().Type(SchemaValueType.String)),
150+
("fields", new JsonSchemaBuilder().Type(SchemaValueType.String)))
152151
}
153152
}
154153
}, options => options.Excluding(x => x.Workspace).Excluding(y => y.BaseUri));
155-
156154
}
157155

158156
[Fact]
@@ -169,10 +167,7 @@ public void ShouldAssignSchemaToAllResponses()
169167
.Properties(("id", new JsonSchemaBuilder().Type(SchemaValueType.String).Description("Item identifier."))));
170168

171169
var errorSchema = new JsonSchemaBuilder()
172-
.Ref("#/definitions/Error")
173-
.Properties(("code", new JsonSchemaBuilder().Type(SchemaValueType.Integer).Format("int32")),
174-
("message", new JsonSchemaBuilder().Type(SchemaValueType.String)),
175-
("fields", new JsonSchemaBuilder().Type(SchemaValueType.String)));
170+
.Ref("#/definitions/Error");
176171

177172
var responses = result.OpenApiDocument.Paths["/items"].Operations[OperationType.Get].Responses;
178173
foreach (var response in responses)

test/Microsoft.OpenApi.Readers.Tests/V31Tests/OpenApiDocumentTests.cs

Lines changed: 30 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -44,40 +44,37 @@ public static T Clone<T>(T element) where T : IOpenApiSerializable
4444
public void ParseDocumentWithWebhooksShouldSucceed()
4545
{
4646
// Arrange and Act
47-
var actual = OpenApiDocument.Load(Path.Combine(SampleFolderPath, "documentWithWebhooks.yaml"));
48-
49-
var petSchema = new JsonSchemaBuilder()
50-
.Type(SchemaValueType.Object)
51-
.Required("id", "name")
52-
.Properties(
53-
("id", new JsonSchemaBuilder()
54-
.Type(SchemaValueType.Integer)
55-
.Format("int64")),
56-
("name", new JsonSchemaBuilder()
57-
.Type(SchemaValueType.String)
58-
),
59-
("tag", new JsonSchemaBuilder().Type(SchemaValueType.String))
60-
);
61-
62-
var newPetSchema = new JsonSchemaBuilder()
63-
.Type(SchemaValueType.Object)
64-
.Required("name")
65-
.Properties(
66-
("id", new JsonSchemaBuilder()
67-
.Type(SchemaValueType.Integer)
68-
.Format("int64")),
69-
("name", new JsonSchemaBuilder()
70-
.Type(SchemaValueType.String)
71-
),
72-
("tag", new JsonSchemaBuilder().Type(SchemaValueType.String))
73-
);
47+
var actual = OpenApiDocument.Load(Path.Combine(SampleFolderPath, "documentWithWebhooks.yaml"));
48+
var petSchema = new JsonSchemaBuilder().Ref("#/components/schemas/petSchema");
49+
var newPetSchema = new JsonSchemaBuilder().Ref("#/components/schemas/newPetSchema");
7450

7551
var components = new OpenApiComponents
7652
{
7753
Schemas =
7854
{
79-
["petSchema"] = petSchema,
80-
["newPetSchema"] = newPetSchema
55+
["petSchema"] = new JsonSchemaBuilder()
56+
.Type(SchemaValueType.Object)
57+
.Required("id", "name")
58+
.Properties(
59+
("id", new JsonSchemaBuilder()
60+
.Type(SchemaValueType.Integer)
61+
.Format("int64")),
62+
("name", new JsonSchemaBuilder()
63+
.Type(SchemaValueType.String)
64+
),
65+
("tag", new JsonSchemaBuilder().Type(SchemaValueType.String))
66+
),
67+
["newPetSchema"] = new JsonSchemaBuilder()
68+
.Type(SchemaValueType.Object)
69+
.Required("name")
70+
.Properties(
71+
("id", new JsonSchemaBuilder()
72+
.Type(SchemaValueType.Integer)
73+
.Format("int64")),
74+
("name", new JsonSchemaBuilder()
75+
.Type(SchemaValueType.String)
76+
),
77+
("tag", new JsonSchemaBuilder().Type(SchemaValueType.String)))
8178
}
8279
};
8380

@@ -213,9 +210,11 @@ public void ParseDocumentsWithReusablePathItemInWebhooksSucceeds()
213210
}
214211
};
215212

213+
214+
216215
// Create a clone of the schema to avoid modifying things in components.
217-
var petSchema = components.Schemas["petSchema"];
218-
var newPetSchema = components.Schemas["newPetSchema"];
216+
var petSchema = new JsonSchemaBuilder().Ref("#/components/schemas/petSchema");
217+
var newPetSchema = new JsonSchemaBuilder().Ref("#/components/schemas/newPetSchema");
219218

220219
components.PathItems = new Dictionary<string, OpenApiPathItem>
221220
{

test/Microsoft.OpenApi.Readers.Tests/V3Tests/JsonSchemaTests.cs

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -239,12 +239,7 @@ public void ParseBasicSchemaWithReferenceShouldSucceed()
239239
.Ref("#/components/schemas/ExtendedErrorModel")
240240
.AllOf(
241241
new JsonSchemaBuilder()
242-
.Ref("#/components/schemas/ErrorModel")
243-
.Type(SchemaValueType.Object)
244-
.Properties(
245-
("code", new JsonSchemaBuilder().Type(SchemaValueType.Integer).Minimum(100).Maximum(600)),
246-
("message", new JsonSchemaBuilder().Type(SchemaValueType.String)))
247-
.Required("message", "code"),
242+
.Ref("#/components/schemas/ErrorModel"),
248243
new JsonSchemaBuilder()
249244
.Type(SchemaValueType.Object)
250245
.Required("rootCause")

test/Microsoft.OpenApi.Readers.Tests/V3Tests/OpenApiDocumentTests.cs

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Copyright (c) Microsoft Corporation. All rights reserved.
1+
// Copyright (c) Microsoft Corporation. All rights reserved.
22
// Licensed under the MIT license.
33

44
using System;
@@ -239,11 +239,11 @@ public void ParseStandardPetStoreDocumentShouldSucceed()
239239
("message", new JsonSchemaBuilder().Type(SchemaValueType.String)))
240240
}
241241
};
242-
var petSchema = components.Schemas["pet1"];
242+
var petSchema = new JsonSchemaBuilder().Ref("#/components/schemas/pet1");
243243

244-
var newPetSchema = components.Schemas["newPet"];
244+
var newPetSchema = new JsonSchemaBuilder().Ref("#/components/schemas/newPet");
245245

246-
var errorModelSchema = components.Schemas["errorModel"];
246+
var errorModelSchema = new JsonSchemaBuilder().Ref("#/components/schemas/errorModel");
247247

248248
var expectedDoc = new OpenApiDocument
249249
{
@@ -568,11 +568,11 @@ public void ParseModifiedPetStoreDocumentWithTagAndSecurityShouldSucceed()
568568
}
569569
};
570570

571-
var petSchema = components.Schemas["pet1"];
571+
var petSchema = new JsonSchemaBuilder().Ref("#/components/schemas/pet1");
572572

573-
var newPetSchema = components.Schemas["newPet"];
573+
var newPetSchema = new JsonSchemaBuilder().Ref("#/components/schemas/newPet");
574574

575-
var errorModelSchema = components.Schemas["errorModel"];
575+
var errorModelSchema = new JsonSchemaBuilder().Ref("#/components/schemas/errorModel");
576576

577577
var tag1 = new OpenApiTag
578578
{
@@ -1061,11 +1061,6 @@ public void ParseDocumentWithJsonSchemaReferencesWorks()
10611061

10621062
var expectedSchema = new JsonSchemaBuilder()
10631063
.Ref("#/components/schemas/User")
1064-
.Type(SchemaValueType.Object)
1065-
.Properties(
1066-
("id", new JsonSchemaBuilder().Type(SchemaValueType.Integer)),
1067-
("username", new JsonSchemaBuilder().Type(SchemaValueType.String)),
1068-
("email", new JsonSchemaBuilder().Type(SchemaValueType.String)))
10691064
.Build();
10701065

10711066
// Assert

test/Microsoft.OpenApi.Tests/Workspaces/OpenApiWorkspaceTests.cs

Lines changed: 0 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -75,41 +75,6 @@ public void OpenApiWorkspacesCanResolveExternalReferences()
7575
Assert.Equal("The referenced one", schema.GetDescription());
7676
}
7777

78-
[Fact]
79-
public void OpenApiWorkspacesAllowDocumentsToReferenceEachOther_short()
80-
{
81-
var doc = new OpenApiDocument();
82-
var reference = "common#/components/schemas/test";
83-
doc.CreatePathItem("/", p =>
84-
{
85-
p.Description = "Consumer";
86-
p.CreateOperation(OperationType.Get, op =>
87-
op.CreateResponse("200", re =>
88-
{
89-
re.Description = "Success";
90-
re.CreateContent("application/json", co =>
91-
co.Schema = new JsonSchemaBuilder().Ref(reference).Build()
92-
);
93-
})
94-
);
95-
});
96-
97-
var doc2 = CreateCommonDocument();
98-
doc.Workspace.RegisterComponents(doc2);
99-
doc2.Workspace.RegisterComponents(doc);
100-
doc.Workspace.AddDocumentId("common", doc2.BaseUri);
101-
var errors = doc.ResolveReferences();
102-
Assert.Empty(errors);
103-
}
104-
105-
// Enable Workspace to load from any reader, not just streams.
106-
107-
// Test fragments
108-
internal void OpenApiWorkspacesShouldLoadDocumentFragments()
109-
{
110-
Assert.True(false);
111-
}
112-
11378
[Fact]
11479
public void OpenApiWorkspacesCanResolveReferencesToDocumentFragments()
11580
{

0 commit comments

Comments
 (0)