|
1 | 1 | // Copyright (c) Microsoft Corporation. All rights reserved. |
2 | 2 | // Licensed under the MIT license. |
3 | 3 |
|
| 4 | +using System; |
4 | 5 | using System.Collections.Generic; |
5 | 6 | using System.Globalization; |
6 | 7 | using System.IO; |
@@ -406,5 +407,52 @@ public async Task SerializeParameterWithFormStyleAndExplodeTrueWorksAsync(bool p |
406 | 407 | // Assert |
407 | 408 | await Verifier.Verify(outputStringWriter).UseParameters(produceTerseOutput); |
408 | 409 | } |
| 410 | + |
| 411 | + [Fact] |
| 412 | + public void SerializeQueryStringParameter_BelowV32_Throws() |
| 413 | + { |
| 414 | + var parameter = new OpenApiParameter |
| 415 | + { |
| 416 | + Name = "foo", |
| 417 | + In = ParameterLocation.QueryString |
| 418 | + }; |
| 419 | + var writer = new OpenApiJsonWriter(new StringWriter()); |
| 420 | + // Style, Explode, AllowReserved, and Schema must be unset for this test to throw as expected |
| 421 | + Assert.Throws<InvalidOperationException>(() => parameter.SerializeAsV3(writer)); |
| 422 | + Assert.Throws<InvalidOperationException>(() => parameter.SerializeAsV31(writer)); |
| 423 | + Assert.Throws<InvalidOperationException>(() => parameter.SerializeAsV2(writer)); |
| 424 | + } |
| 425 | + |
| 426 | + [Fact] |
| 427 | + public void SerializeQueryStringParameter_WithForbiddenProperties_Throws() |
| 428 | + { |
| 429 | + var parameter = new OpenApiParameter |
| 430 | + { |
| 431 | + Name = "foo", |
| 432 | + In = ParameterLocation.QueryString, |
| 433 | + Style = ParameterStyle.Form, |
| 434 | + Explode = true, |
| 435 | + AllowReserved = true, |
| 436 | + Schema = new OpenApiSchema { Type = JsonSchemaType.String } |
| 437 | + }; |
| 438 | + var writer = new OpenApiJsonWriter(new StringWriter()); |
| 439 | + Assert.Throws<InvalidOperationException>(() => parameter.SerializeAsV32(writer)); |
| 440 | + } |
| 441 | + |
| 442 | + [Fact] |
| 443 | + public async Task SerializeQueryStringParameter_V32_Succeeds() |
| 444 | + { |
| 445 | + var parameter = new OpenApiParameter |
| 446 | + { |
| 447 | + Name = "foo", |
| 448 | + In = ParameterLocation.QueryString, |
| 449 | + Style = null, |
| 450 | + AllowReserved = false, |
| 451 | + Schema = null, |
| 452 | + // Explode must be false (default) and not set |
| 453 | + }; |
| 454 | + var json = await parameter.SerializeAsJsonAsync(OpenApiSpecVersion.OpenApi3_2); |
| 455 | + Assert.Contains("querystring", json); |
| 456 | + } |
409 | 457 | } |
410 | 458 | } |
0 commit comments