You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Support xs-ms-enum values without the "value" label #216
Some contract generators define the values of x-ms-enum as a list of actual values without labels.
The current version OpenApi-Diff doesn't support this format and throws a Newtonsoft.Json.JsonSerializationException in this case.
Example of x-ms-enum with and without the "value" label "enum": [ "Mammals", "Fish", "Birds", "Reptiles", "Amphibians", "Invertebrates" ], "type": "string", "x-ms-enum": { "name": "PetType", "modelAsString": false, "values": [ { "value": 0, "description": "humans and all other animals that are warm-blooded vertebrates", "name": "Mammals" }, { "value": 1, "description": "aquatic, craniate, gill-bearing animals that lack limbs with digits" }, { "value": 2, "name": "Birds" }, 3, 4, 5 ], "x-nullable": false }
The issue with this XmsEnumExtension is that we cannot cast an object of primitive type (e.g. long, string) to a XmsEnumValue , thus all contracts that contains x-ms-enum with a list of values of primitive type causes a deserialization issue in the OpenApiDiff comparison.
The exception is the following
Newtonsoft.Json.JsonSerializationException : Error converting value 3 to type 'AutoRest.Swagger.Model.XmsEnumValue'. Path 'definitions.PetType.x-ms-enum.values[0]', line 235, position 11.
----> System.ArgumentException : Could not cast or convert from System.Int64 to AutoRest.Swagger.Model.XmsEnumValue.
Hi Jianye Xi (@jianyexi),
I do agree that in one contract the "values" should have the same pattern.
In the example above I just wanted to show all the possible patterns.
openapi-diff supports almost all the patterns, but not the one without labels like the following example "values": [0, 1, 2]
Activity
Support xs-ms-enum values without the 'value' label
jianyexi commentedon Dec 1, 2021
Khalil KOOLI (@kooli89) why to support the json format ? it does not make sense , as value in the "values" should have same pattern
kooli89 commentedon Dec 2, 2021
Hi Jianye Xi (@jianyexi),
I do agree that in one contract the "values" should have the same pattern.
In the example above I just wanted to show all the possible patterns.
openapi-diff supports almost all the patterns, but not the one without labels like the following example
"values": [0, 1, 2]