Skip to content

Commit b3b5663

Browse files
committed
fix: dereference of a possible null reference
1 parent 56bb532 commit b3b5663

File tree

3 files changed

+38
-38
lines changed

3 files changed

+38
-38
lines changed

test/Microsoft.OpenApi.Hidi.Tests/Formatters/PowerShellFormatterTests.cs

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ public void FormatOperationIdsInOpenAPIDocument(string operationId, string expec
4444
walker.Walk(openApiDocument);
4545

4646
// Assert
47-
Assert.Equal(expectedOperationId, openApiDocument.Paths[path].Operations[operationType].OperationId);
47+
Assert.Equal(expectedOperationId, openApiDocument.Paths[path].Operations?[operationType].OperationId);
4848
}
4949

5050
[Fact]
@@ -61,20 +61,20 @@ public void RemoveAnyOfAndOneOfFromSchema()
6161
Assert.NotNull(openApiDocument.Components);
6262
Assert.NotNull(openApiDocument.Components.Schemas);
6363
var testSchema = openApiDocument.Components.Schemas["TestSchema"];
64-
var averageAudioDegradationProperty = testSchema.Properties["averageAudioDegradation"];
65-
var defaultPriceProperty = testSchema.Properties["defaultPrice"];
64+
var averageAudioDegradationProperty = testSchema.Properties?["averageAudioDegradation"];
65+
var defaultPriceProperty = testSchema.Properties?["defaultPrice"];
6666

6767
// Assert
6868
Assert.NotNull(openApiDocument.Components);
6969
Assert.NotNull(openApiDocument.Components.Schemas);
7070
Assert.NotNull(testSchema);
71-
Assert.Null(averageAudioDegradationProperty.AnyOf);
72-
Assert.Equal(JsonSchemaType.Number | JsonSchemaType.Null, averageAudioDegradationProperty.Type);
73-
Assert.Equal("float", averageAudioDegradationProperty.Format);
74-
Assert.Equal(JsonSchemaType.Null, averageAudioDegradationProperty.Type & JsonSchemaType.Null);
75-
Assert.Null(defaultPriceProperty.OneOf);
76-
Assert.Equal(JsonSchemaType.Number, defaultPriceProperty.Type);
77-
Assert.Equal("double", defaultPriceProperty.Format);
71+
Assert.Null(averageAudioDegradationProperty?.AnyOf);
72+
Assert.Equal(JsonSchemaType.Number | JsonSchemaType.Null, averageAudioDegradationProperty?.Type);
73+
Assert.Equal("float", averageAudioDegradationProperty?.Format);
74+
Assert.Equal(JsonSchemaType.Null, averageAudioDegradationProperty?.Type & JsonSchemaType.Null);
75+
Assert.Null(defaultPriceProperty?.OneOf);
76+
Assert.Equal(JsonSchemaType.Number, defaultPriceProperty?.Type);
77+
Assert.Equal("double", defaultPriceProperty?.Format);
7878
Assert.NotNull(testSchema.AdditionalProperties);
7979
}
8080

@@ -89,7 +89,7 @@ public void ResolveFunctionParameters()
8989
var walker = new OpenApiWalker(powerShellFormatter);
9090
walker.Walk(openApiDocument);
9191

92-
var idsParameter = openApiDocument.Paths["/foo"].Operations[OperationType.Get].Parameters?.Where(static p => p.Name == "ids").FirstOrDefault();
92+
var idsParameter = openApiDocument.Paths["/foo"].Operations?[OperationType.Get].Parameters?.Where(static p => p.Name == "ids").FirstOrDefault();
9393

9494
// Assert
9595
Assert.Null(idsParameter?.Content);

test/Microsoft.OpenApi.Hidi.Tests/Services/OpenApiFilterServiceTests.cs

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -100,9 +100,9 @@ public void TestPredicateFiltersUsingRelativeRequestUrls()
100100
var predicate = OpenApiFilterService.CreatePredicate(requestUrls: requestUrls, source: openApiDocument);
101101

102102
// Then
103-
Assert.True(predicate("/foo", OperationType.Get, null));
104-
Assert.True(predicate("/foo", OperationType.Post, null));
105-
Assert.False(predicate("/foo", OperationType.Patch, null));
103+
Assert.True(predicate("/foo", OperationType.Get, null!));
104+
Assert.True(predicate("/foo", OperationType.Post, null!));
105+
Assert.False(predicate("/foo", OperationType.Patch, null!));
106106
}
107107

108108
[Fact]
@@ -153,7 +153,7 @@ public void CreateFilteredDocumentUsingPredicateFromRequestUrl()
153153
// Assert that there's only 1 parameter in the subset document
154154
Assert.NotNull(subsetDoc);
155155
Assert.NotEmpty(subsetDoc.Paths);
156-
Assert.Single(subsetDoc.Paths.First().Value.Parameters);
156+
Assert.Single(subsetDoc.Paths.First().Value.Parameters!);
157157
}
158158

159159
[Fact]
@@ -236,14 +236,14 @@ public async Task CopiesOverAllReferencedComponentsToTheSubsetDocumentCorrectly(
236236
var predicate = OpenApiFilterService.CreatePredicate(operationIds: operationIds);
237237
var subsetOpenApiDocument = OpenApiFilterService.CreateFilteredDocument(doc, predicate);
238238

239-
var response = subsetOpenApiDocument.Paths["/items"].Operations[OperationType.Get]?.Responses?["200"];
240-
var responseHeader = response?.Headers["x-custom-header"];
241-
var mediaTypeExample = response?.Content["application/json"]?.Examples?.First().Value;
239+
var response = subsetOpenApiDocument.Paths["/items"].Operations?[OperationType.Get]?.Responses?["200"];
240+
var responseHeader = response?.Headers?["x-custom-header"];
241+
var mediaTypeExample = response?.Content?["application/json"]?.Examples?.First().Value;
242242
var targetHeaders = subsetOpenApiDocument.Components?.Headers;
243243
var targetExamples = subsetOpenApiDocument.Components?.Examples;
244244

245245
// Assert
246-
Assert.Same(doc.Servers, subsetOpenApiDocument.Servers);
246+
Assert.Same(doc?.Servers, subsetOpenApiDocument.Servers);
247247
var headerReference = Assert.IsType<OpenApiHeaderReference>(responseHeader);
248248
Assert.False(headerReference.UnresolvedReference);
249249
var exampleReference = Assert.IsType<OpenApiExampleReference>(mediaTypeExample);
@@ -266,8 +266,8 @@ public void ReturnsPathParametersOnSlicingBasedOnOperationIdsOrTags(string? oper
266266
// Assert
267267
foreach (var pathItem in subsetOpenApiDocument.Paths)
268268
{
269-
Assert.True(pathItem.Value.Parameters.Any());
270-
Assert.Single(pathItem.Value.Parameters);
269+
Assert.True(pathItem.Value.Parameters!.Any());
270+
Assert.Single(pathItem.Value.Parameters!);
271271
}
272272
}
273273
}

test/Microsoft.OpenApi.Hidi.Tests/UtilityFiles/OpenApiDocumentMock.cs

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -678,23 +678,23 @@ public static OpenApiDocument CreateOpenApiDocument()
678678
}
679679
}
680680
};
681-
document.Paths[getTeamsActivityByPeriodPath].Operations[OperationType.Get].Tags!.Add(new OpenApiTagReference("reports.Functions", document));
682-
document.Paths[getTeamsActivityByDatePath].Operations[OperationType.Get].Tags!.Add(new OpenApiTagReference("reports.Functions", document));
683-
document.Paths[usersPath].Operations[OperationType.Get].Tags!.Add(new OpenApiTagReference("users.user", document));
684-
document.Paths[usersByIdPath].Operations[OperationType.Get].Tags!.Add(new OpenApiTagReference("users.user", document));
685-
document.Paths[usersByIdPath].Operations[OperationType.Patch].Tags!.Add(new OpenApiTagReference("users.user", document));
686-
document.Paths[messagesByIdPath].Operations[OperationType.Get].Tags!.Add(new OpenApiTagReference("users.message", document));
687-
document.Paths[administrativeUnitRestorePath].Operations[OperationType.Post].Tags!.Add(new OpenApiTagReference("administrativeUnits.Actions", document));
688-
document.Paths[logoPath].Operations[OperationType.Put].Tags!.Add(new OpenApiTagReference("applications.application", document));
689-
document.Paths[securityProfilesPath].Operations[OperationType.Get].Tags!.Add(new OpenApiTagReference("security.hostSecurityProfile", document));
690-
document.Paths[communicationsCallsKeepAlivePath].Operations[OperationType.Post].Tags!.Add(new OpenApiTagReference("communications.Actions", document));
691-
document.Paths[eventsDeltaPath].Operations[OperationType.Get].Tags!.Add(new OpenApiTagReference("groups.Functions", document));
692-
document.Paths[refPath].Operations[OperationType.Get].Tags!.Add(new OpenApiTagReference("applications.directoryObject", document));
693-
((OpenApiSchema)document.Paths[usersPath].Operations[OperationType.Get].Responses!["200"].Content[applicationJsonMediaType].Schema!.Properties["value"]).Items = new OpenApiSchemaReference("microsoft.graph.user", document);
694-
document.Paths[usersByIdPath].Operations[OperationType.Get].Responses!["200"].Content[applicationJsonMediaType].Schema = new OpenApiSchemaReference("microsoft.graph.user", document);
695-
document.Paths[messagesByIdPath].Operations[OperationType.Get].Responses!["200"].Content[applicationJsonMediaType].Schema = new OpenApiSchemaReference("microsoft.graph.message", document);
696-
((OpenApiSchema)document.Paths[securityProfilesPath].Operations[OperationType.Get].Responses!["200"].Content[applicationJsonMediaType].Schema!.Properties["value"]).Items = new OpenApiSchemaReference("microsoft.graph.networkInterface", document);
697-
((OpenApiSchema)document.Paths[eventsDeltaPath].Operations[OperationType.Get].Responses!["200"].Content[applicationJsonMediaType].Schema!.Properties["value"]).Items = new OpenApiSchemaReference("microsoft.graph.event", document);
681+
document.Paths[getTeamsActivityByPeriodPath].Operations?[OperationType.Get].Tags!.Add(new OpenApiTagReference("reports.Functions", document));
682+
document.Paths[getTeamsActivityByDatePath].Operations?[OperationType.Get].Tags!.Add(new OpenApiTagReference("reports.Functions", document));
683+
document.Paths[usersPath].Operations?[OperationType.Get].Tags!.Add(new OpenApiTagReference("users.user", document));
684+
document.Paths[usersByIdPath].Operations?[OperationType.Get].Tags!.Add(new OpenApiTagReference("users.user", document));
685+
document.Paths[usersByIdPath].Operations?[OperationType.Patch].Tags!.Add(new OpenApiTagReference("users.user", document));
686+
document.Paths[messagesByIdPath].Operations?[OperationType.Get].Tags!.Add(new OpenApiTagReference("users.message", document));
687+
document.Paths[administrativeUnitRestorePath].Operations?[OperationType.Post].Tags!.Add(new OpenApiTagReference("administrativeUnits.Actions", document));
688+
document.Paths[logoPath].Operations?[OperationType.Put].Tags!.Add(new OpenApiTagReference("applications.application", document));
689+
document.Paths[securityProfilesPath].Operations?[OperationType.Get].Tags!.Add(new OpenApiTagReference("security.hostSecurityProfile", document));
690+
document.Paths[communicationsCallsKeepAlivePath].Operations?[OperationType.Post].Tags!.Add(new OpenApiTagReference("communications.Actions", document));
691+
document.Paths[eventsDeltaPath].Operations?[OperationType.Get].Tags!.Add(new OpenApiTagReference("groups.Functions", document));
692+
document.Paths[refPath].Operations?[OperationType.Get].Tags!.Add(new OpenApiTagReference("applications.directoryObject", document));
693+
((OpenApiSchema)document.Paths[usersPath].Operations![OperationType.Get].Responses!["200"].Content![applicationJsonMediaType].Schema!.Properties!["value"]).Items = new OpenApiSchemaReference("microsoft.graph.user", document);
694+
document.Paths[usersByIdPath].Operations![OperationType.Get].Responses!["200"].Content![applicationJsonMediaType].Schema = new OpenApiSchemaReference("microsoft.graph.user", document);
695+
document.Paths[messagesByIdPath].Operations![OperationType.Get].Responses!["200"].Content![applicationJsonMediaType].Schema = new OpenApiSchemaReference("microsoft.graph.message", document);
696+
((OpenApiSchema)document.Paths[securityProfilesPath].Operations![OperationType.Get].Responses!["200"].Content![applicationJsonMediaType].Schema!.Properties!["value"]).Items = new OpenApiSchemaReference("microsoft.graph.networkInterface", document);
697+
((OpenApiSchema)document.Paths[eventsDeltaPath].Operations![OperationType.Get].Responses!["200"].Content![applicationJsonMediaType].Schema!.Properties!["value"]).Items = new OpenApiSchemaReference("microsoft.graph.event", document);
698698
return document;
699699
}
700700
}

0 commit comments

Comments
 (0)