diff --git a/src/WireMock.Net.OpenApiParser/Settings/IWireMockOpenApiParserExampleValues.cs b/src/WireMock.Net.OpenApiParser/Settings/IWireMockOpenApiParserExampleValues.cs
new file mode 100644
index 000000000..6778794ff
--- /dev/null
+++ b/src/WireMock.Net.OpenApiParser/Settings/IWireMockOpenApiParserExampleValues.cs
@@ -0,0 +1,52 @@
+using System;
+
+namespace WireMock.Net.OpenApiParser.Settings
+{
+ ///
+ /// A interface defining the example values to use for the different types.
+ ///
+ public interface IWireMockOpenApiParserExampleValues
+ {
+ ///
+ /// An example value for a Boolean.
+ ///
+ bool Boolean { get; set; }
+ ///
+ /// An example value for an Integer.
+ ///
+ int Integer { get; set; }
+ ///
+ /// An example value for a Float.
+ ///
+ float Float { get; set; }
+ ///
+ /// An example value for a Double.
+ ///
+ double Double { get; set; }
+
+ ///
+ /// An example value for a Date.
+ ///
+ Func Date { get; set; }
+
+ ///
+ /// An example value for a DateTime.
+ ///
+ Func DateTime { get; set; }
+
+ ///
+ /// An example value for Bytes.
+ ///
+ byte[] Bytes { get; set; }
+
+ ///
+ /// An example value for a Object.
+ ///
+ object Object { get; set; }
+
+ ///
+ /// An example value for a String.
+ ///
+ string String { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/src/WireMock.Net.OpenApiParser/Settings/WireMockOpenApiParserDynamicExampleValues.cs b/src/WireMock.Net.OpenApiParser/Settings/WireMockOpenApiParserDynamicExampleValues.cs
new file mode 100644
index 000000000..26e87a5d7
--- /dev/null
+++ b/src/WireMock.Net.OpenApiParser/Settings/WireMockOpenApiParserDynamicExampleValues.cs
@@ -0,0 +1,31 @@
+using System;
+using RandomDataGenerator.FieldOptions;
+using RandomDataGenerator.Randomizers;
+
+namespace WireMock.Net.OpenApiParser.Settings
+{
+ ///
+ /// A class defining the random example values to use for the different types.
+ ///
+ public class WireMockOpenApiParserDynamicExampleValues : IWireMockOpenApiParserExampleValues
+ {
+ ///
+ public bool Boolean { get { return RandomizerFactory.GetRandomizer(new FieldOptionsBoolean()).Generate() ?? true; } set { } }
+ ///
+ public int Integer { get { return RandomizerFactory.GetRandomizer(new FieldOptionsInteger()).Generate() ?? 42; } set { } }
+ ///
+ public float Float { get { return RandomizerFactory.GetRandomizer(new FieldOptionsFloat()).Generate() ?? 4.2f; } set { } }
+ ///
+ public double Double { get { return RandomizerFactory.GetRandomizer(new FieldOptionsDouble()).Generate() ?? 4.2d; } set { } }
+ ///
+ public Func Date { get { return () => RandomizerFactory.GetRandomizer(new FieldOptionsDateTime()).Generate() ?? System.DateTime.UtcNow.Date; } set { } }
+ ///
+ public Func DateTime { get { return () => RandomizerFactory.GetRandomizer(new FieldOptionsDateTime()).Generate() ?? System.DateTime.UtcNow; } set { } }
+ ///
+ public byte[] Bytes { get { return RandomizerFactory.GetRandomizer(new FieldOptionsBytes()).Generate(); } set { } }
+ ///
+ public object Object { get; set; } = "example-object";
+ ///
+ public string String { get { return RandomizerFactory.GetRandomizer(new FieldOptionsTextWords()).Generate() ?? "example-string"; } set { } }
+ }
+}
\ No newline at end of file
diff --git a/src/WireMock.Net.OpenApiParser/Settings/WireMockOpenApiParserExampleValues.cs b/src/WireMock.Net.OpenApiParser/Settings/WireMockOpenApiParserExampleValues.cs
index c4d43ee95..58c95a1a6 100644
--- a/src/WireMock.Net.OpenApiParser/Settings/WireMockOpenApiParserExampleValues.cs
+++ b/src/WireMock.Net.OpenApiParser/Settings/WireMockOpenApiParserExampleValues.cs
@@ -5,26 +5,25 @@ namespace WireMock.Net.OpenApiParser.Settings
///
/// A class defining the example values to use for the different types.
///
- public class WireMockOpenApiParserExampleValues
+ public class WireMockOpenApiParserExampleValues : IWireMockOpenApiParserExampleValues
{
-#pragma warning disable 1591
+ ///
public bool Boolean { get; set; } = true;
-
+ ///
public int Integer { get; set; } = 42;
-
+ ///
public float Float { get; set; } = 4.2f;
-
+ ///
public double Double { get; set; } = 4.2d;
-
+ ///
public Func Date { get; set; } = () => System.DateTime.UtcNow.Date;
-
+ ///
public Func DateTime { get; set; } = () => System.DateTime.UtcNow;
-
+ ///
public byte[] Bytes { get; set; } = { 48, 49, 50 };
-
+ ///
public object Object { get; set; } = "example-object";
-
+ ///
public string String { get; set; } = "example-string";
-#pragma warning restore 1591
}
}
\ No newline at end of file
diff --git a/src/WireMock.Net.OpenApiParser/Settings/WireMockOpenApiParserSettings.cs b/src/WireMock.Net.OpenApiParser/Settings/WireMockOpenApiParserSettings.cs
index f02c98137..e56f4d20e 100644
--- a/src/WireMock.Net.OpenApiParser/Settings/WireMockOpenApiParserSettings.cs
+++ b/src/WireMock.Net.OpenApiParser/Settings/WireMockOpenApiParserSettings.cs
@@ -25,6 +25,11 @@ public class WireMockOpenApiParserSettings
///
/// The example values to use
///
- public WireMockOpenApiParserExampleValues ExampleValues { get; } = new WireMockOpenApiParserExampleValues();
+ public IWireMockOpenApiParserExampleValues ExampleValues { get; set; } = new WireMockOpenApiParserExampleValues();
+
+ ///
+ /// Are examples generated dynamically?
+ ///
+ public bool DynamicExamples { get; set; } = false;
}
}
\ No newline at end of file
diff --git a/src/WireMock.Net.OpenApiParser/Utils/ExampleValueGenerator.cs b/src/WireMock.Net.OpenApiParser/Utils/ExampleValueGenerator.cs
index 1e03dc06b..e94c4bdc4 100644
--- a/src/WireMock.Net.OpenApiParser/Utils/ExampleValueGenerator.cs
+++ b/src/WireMock.Net.OpenApiParser/Utils/ExampleValueGenerator.cs
@@ -13,6 +13,14 @@ internal class ExampleValueGenerator
public ExampleValueGenerator(WireMockOpenApiParserSettings settings)
{
_settings = settings ?? throw new ArgumentNullException(nameof(settings));
+ if (_settings.DynamicExamples)
+ {
+ _settings.ExampleValues = new WireMockOpenApiParserDynamicExampleValues();
+ }
+ else
+ {
+ _settings.ExampleValues = new WireMockOpenApiParserExampleValues();
+ }
}
public object GetExampleValue(OpenApiSchema schema)
diff --git a/src/WireMock.Net.OpenApiParser/WireMock.Net.OpenApiParser.csproj b/src/WireMock.Net.OpenApiParser/WireMock.Net.OpenApiParser.csproj
index 45f887553..0284b6b58 100644
--- a/src/WireMock.Net.OpenApiParser/WireMock.Net.OpenApiParser.csproj
+++ b/src/WireMock.Net.OpenApiParser/WireMock.Net.OpenApiParser.csproj
@@ -25,6 +25,7 @@
+