1
+ // Copyright (c) Microsoft Corporation. All rights reserved.
2
+ // Licensed under the MIT license.
3
+
4
+ using System . IO ;
5
+ using FluentAssertions ;
6
+ using Microsoft . OpenApi . Models ;
7
+ using Microsoft . OpenApi . Readers . ParseNodes ;
8
+ using Microsoft . OpenApi . Readers . V2 ;
9
+ using Xunit ;
10
+
11
+ namespace Microsoft . OpenApi . Readers . Tests . V2Tests
12
+ {
13
+ [ Collection ( "DefaultSettings" ) ]
14
+ public class OpenApiParameterTests
15
+ {
16
+ private const string SampleFolderPath = "V2Tests/Samples/OpenApiParameter" ;
17
+
18
+ [ Fact ]
19
+ public void ParseBodyParameterShouldSucceed ( )
20
+ {
21
+ // Arrange
22
+ MapNode node ;
23
+ using ( var stream = File . OpenRead ( Path . Combine ( SampleFolderPath , "bodyParameter.yaml" ) ) )
24
+ {
25
+ node = TestHelper . CreateYamlMapNode ( stream ) ;
26
+ }
27
+
28
+ // Act
29
+ var parameter = OpenApiV2Deserializer . LoadParameter ( node ) ;
30
+
31
+ // Assert
32
+ // Body parameter is currently not translated via LoadParameter.
33
+ // This design may be revisited and this unit test may likely change.
34
+ parameter . ShouldBeEquivalentTo ( null ) ;
35
+ }
36
+
37
+ [ Fact ]
38
+ public void ParsePathParameterShouldSucceed ( )
39
+ {
40
+ // Arrange
41
+ MapNode node ;
42
+ using ( var stream = File . OpenRead ( Path . Combine ( SampleFolderPath , "pathParameter.yaml" ) ) )
43
+ {
44
+ node = TestHelper . CreateYamlMapNode ( stream ) ;
45
+ }
46
+
47
+ // Act
48
+ var parameter = OpenApiV2Deserializer . LoadParameter ( node ) ;
49
+
50
+ // Assert
51
+ parameter . ShouldBeEquivalentTo (
52
+ new OpenApiParameter
53
+ {
54
+ In = ParameterLocation . Path ,
55
+ Name = "username" ,
56
+ Description = "username to fetch" ,
57
+ Required = true ,
58
+ Schema = new OpenApiSchema
59
+ {
60
+ Type = "string"
61
+ }
62
+ } ) ;
63
+ }
64
+
65
+ [ Fact ]
66
+ public void ParseQueryParameterShouldSucceed ( )
67
+ {
68
+ // Arrange
69
+ MapNode node ;
70
+ using ( var stream = File . OpenRead ( Path . Combine ( SampleFolderPath , "queryParameter.yaml" ) ) )
71
+ {
72
+ node = TestHelper . CreateYamlMapNode ( stream ) ;
73
+ }
74
+
75
+ // Act
76
+ var parameter = OpenApiV2Deserializer . LoadParameter ( node ) ;
77
+
78
+ // Assert
79
+ parameter . ShouldBeEquivalentTo (
80
+ new OpenApiParameter
81
+ {
82
+ In = ParameterLocation . Query ,
83
+ Name = "id" ,
84
+ Description = "ID of the object to fetch" ,
85
+ Required = false ,
86
+ Schema = new OpenApiSchema
87
+ {
88
+ Type = "array" ,
89
+ Items = new OpenApiSchema
90
+ {
91
+ Type = "string"
92
+ }
93
+ } ,
94
+ Style = ParameterStyle . Form ,
95
+ Explode = true
96
+ } ) ;
97
+ }
98
+
99
+ [ Fact ]
100
+ public void ParseFormDataParameterShouldSucceed ( )
101
+ {
102
+ // Arrange
103
+ MapNode node ;
104
+ using ( var stream = File . OpenRead ( Path . Combine ( SampleFolderPath , "formDataParameter.yaml" ) ) )
105
+ {
106
+ node = TestHelper . CreateYamlMapNode ( stream ) ;
107
+ }
108
+
109
+ // Act
110
+ var parameter = OpenApiV2Deserializer . LoadParameter ( node ) ;
111
+
112
+ // Assert
113
+ // Form data parameter is currently not translated via LoadParameter.
114
+ // This design may be revisited and this unit test may likely change.
115
+ parameter . ShouldBeEquivalentTo ( null ) ;
116
+ }
117
+
118
+ [ Fact ]
119
+ public void ParseHeaderParameterShouldSucceed ( )
120
+ {
121
+ // Arrange
122
+ MapNode node ;
123
+ using ( var stream = File . OpenRead ( Path . Combine ( SampleFolderPath , "headerParameter.yaml" ) ) )
124
+ {
125
+ node = TestHelper . CreateYamlMapNode ( stream ) ;
126
+ }
127
+
128
+ // Act
129
+ var parameter = OpenApiV2Deserializer . LoadParameter ( node ) ;
130
+
131
+ // Assert
132
+ parameter . ShouldBeEquivalentTo (
133
+ new OpenApiParameter
134
+ {
135
+ In = ParameterLocation . Header ,
136
+ Name = "token" ,
137
+ Description = "token to be passed as a header" ,
138
+ Required = true ,
139
+ Style = ParameterStyle . Simple ,
140
+ Schema = new OpenApiSchema
141
+ {
142
+ Type = "array" ,
143
+ Items = new OpenApiSchema
144
+ {
145
+ Type = "integer" ,
146
+ Format = "int64"
147
+ }
148
+ }
149
+ } ) ;
150
+ }
151
+ }
152
+ }
0 commit comments