diff --git a/WireMock.Net Solution.sln b/WireMock.Net Solution.sln
index db8ff6636..86b5368b3 100644
--- a/WireMock.Net Solution.sln
+++ b/WireMock.Net Solution.sln
@@ -136,6 +136,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WireMock.Net.ConsoleApp.Usi
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WireMock.Net.Tests.UsingNuGet", "test\WireMock.Net.Tests.UsingNuGet\WireMock.Net.Tests.UsingNuGet.csproj", "{BBA332C6-28A9-42E7-9C4D-A0816E52A198}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WireMock.Net.GraphQL", "src\WireMock.Net.GraphQL\WireMock.Net.GraphQL.csproj", "{B6269AAC-170A-4346-8B9A-444DED3D9A45}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -326,6 +328,10 @@ Global
{BBA332C6-28A9-42E7-9C4D-A0816E52A198}.Debug|Any CPU.Build.0 = Debug|Any CPU
{BBA332C6-28A9-42E7-9C4D-A0816E52A198}.Release|Any CPU.ActiveCfg = Release|Any CPU
{BBA332C6-28A9-42E7-9C4D-A0816E52A198}.Release|Any CPU.Build.0 = Release|Any CPU
+ {B6269AAC-170A-4346-8B9A-444DED3D9A45}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {B6269AAC-170A-4346-8B9A-444DED3D9A45}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {B6269AAC-170A-4346-8B9A-444DED3D9A45}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {B6269AAC-170A-4346-8B9A-444DED3D9A45}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -379,6 +385,7 @@ Global
{BFEF8990-65B3-4274-310F-7355F0B84035} = {8F890C6F-9ACC-438D-928A-AD61CDA862F2}
{1F80A6E6-D146-4E40-9EA8-49DB8494239F} = {985E0ADB-D4B4-473A-AA40-567E279B7946}
{BBA332C6-28A9-42E7-9C4D-A0816E52A198} = {0BB8B634-407A-4610-A91F-11586990767A}
+ {B6269AAC-170A-4346-8B9A-444DED3D9A45} = {8F890C6F-9ACC-438D-928A-AD61CDA862F2}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {DC539027-9852-430C-B19F-FD035D018458}
diff --git a/src/WireMock.Net.Abstractions/Models/GraphQL/ISchemaData.cs b/src/WireMock.Net.Abstractions/Models/GraphQL/ISchemaData.cs
new file mode 100644
index 000000000..14be1ea35
--- /dev/null
+++ b/src/WireMock.Net.Abstractions/Models/GraphQL/ISchemaData.cs
@@ -0,0 +1,5 @@
+// Copyright © WireMock.Net
+
+namespace WireMock.Models.GraphQL;
+
+public interface ISchemaData;
\ No newline at end of file
diff --git a/src/WireMock.Net.Minimal/Matchers/GraphQLMatcher.cs b/src/WireMock.Net.GraphQL/Matchers/GraphQLMatcher.cs
similarity index 94%
rename from src/WireMock.Net.Minimal/Matchers/GraphQLMatcher.cs
rename to src/WireMock.Net.GraphQL/Matchers/GraphQLMatcher.cs
index 2227b3717..aaf830d17 100644
--- a/src/WireMock.Net.Minimal/Matchers/GraphQLMatcher.cs
+++ b/src/WireMock.Net.GraphQL/Matchers/GraphQLMatcher.cs
@@ -1,6 +1,5 @@
// Copyright © WireMock.Net
-#if GRAPHQL
using System;
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
@@ -14,17 +13,17 @@
using Stef.Validation;
using WireMock.Exceptions;
using WireMock.Extensions;
-using WireMock.Matchers.Models;
+using WireMock.GraphQL.Models;
using WireMock.Models;
-using WireMock.Util;
+using WireMock.Models.GraphQL;
+using WireMock.Utils;
namespace WireMock.Matchers;
///
/// GrapQLMatcher Schema Matcher
///
-///
-public class GraphQLMatcher : IStringMatcher
+public class GraphQLMatcher : IGraphQLMatcher
{
private sealed class GraphQLRequest
{
@@ -54,7 +53,7 @@ private sealed class GraphQLRequest
/// The match behaviour. (default = "AcceptOnMatch")
/// The to use. (default = "Or")
public GraphQLMatcher(
- AnyOf schema,
+ AnyOf schema,
MatchBehaviour matchBehaviour = MatchBehaviour.AcceptOnMatch,
MatchOperator matchOperator = MatchOperator.Or
) : this(schema, null, matchBehaviour, matchOperator)
@@ -69,7 +68,7 @@ public GraphQLMatcher(
/// The match behaviour. (default = "AcceptOnMatch")
/// The to use. (default = "Or")
public GraphQLMatcher(
- AnyOf schema,
+ AnyOf schema,
IDictionary? customScalars,
MatchBehaviour matchBehaviour = MatchBehaviour.AcceptOnMatch,
MatchOperator matchOperator = MatchOperator.Or
@@ -94,7 +93,7 @@ public GraphQLMatcher(
break;
case AnyOfType.Third:
- _schema = schema.Third;
+ _schema = ((SchemaDataWrapper)schema.Third).Schema;
break;
default:
@@ -201,7 +200,7 @@ private ISchema BuildSchema(string typeDefinitions)
throw new WireMockException($"The GraphQL Scalar type '{scalarTypeDefinitionName}' is not defined in the CustomScalars dictionary.");
}
- // Create a this custom Scalar GraphType (extending the WireMockCustomScalarGraphType<{clrType}> class)
+ // Create a custom Scalar GraphType (extending the WireMockCustomScalarGraphType<{clrType}> class)
var customScalarGraphType = ReflectionUtils.CreateGenericType(customScalarGraphTypeName, typeof(WireMockCustomScalarGraphType<>), clrType);
schema.RegisterType(customScalarGraphType);
}
@@ -209,5 +208,4 @@ private ISchema BuildSchema(string typeDefinitions)
return schema;
}
-}
-#endif
\ No newline at end of file
+}
\ No newline at end of file
diff --git a/src/WireMock.Net.GraphQL/Models/SchemaDataWrapper.cs b/src/WireMock.Net.GraphQL/Models/SchemaDataWrapper.cs
new file mode 100644
index 000000000..5816f9066
--- /dev/null
+++ b/src/WireMock.Net.GraphQL/Models/SchemaDataWrapper.cs
@@ -0,0 +1,18 @@
+// Copyright © WireMock.Net
+
+using GraphQL.Types;
+using WireMock.Models.GraphQL;
+
+namespace WireMock.Models;
+
+///
+/// Represents a wrapper for schema data, providing access to the associated schema.
+///
+///
+public class SchemaDataWrapper(ISchema schema) : ISchemaData
+{
+ ///
+ /// Gets the schema associated with the current instance.
+ ///
+ public ISchema Schema { get; } = schema;
+}
\ No newline at end of file
diff --git a/src/WireMock.Net.Minimal/Matchers/Models/WireMockCustomScalarGraphType.cs b/src/WireMock.Net.GraphQL/Models/WireMockCustomScalarGraphType.cs
similarity index 89%
rename from src/WireMock.Net.Minimal/Matchers/Models/WireMockCustomScalarGraphType.cs
rename to src/WireMock.Net.GraphQL/Models/WireMockCustomScalarGraphType.cs
index a600cebd6..12b563e65 100644
--- a/src/WireMock.Net.Minimal/Matchers/Models/WireMockCustomScalarGraphType.cs
+++ b/src/WireMock.Net.GraphQL/Models/WireMockCustomScalarGraphType.cs
@@ -1,10 +1,10 @@
// Copyright © WireMock.Net
-#if GRAPHQL
using System;
using GraphQL.Types;
-namespace WireMock.Matchers.Models;
+// ReSharper disable once CheckNamespace
+namespace WireMock.GraphQL.Models;
///
public abstract class WireMockCustomScalarGraphType : ScalarGraphType
@@ -28,5 +28,4 @@ public abstract class WireMockCustomScalarGraphType : ScalarGraphType
return (T)Convert.ChangeType(value, typeof(T));
}
-}
-#endif
\ No newline at end of file
+}
\ No newline at end of file
diff --git a/src/WireMock.Net.GraphQL/Properties/AssemblyInfo.cs b/src/WireMock.Net.GraphQL/Properties/AssemblyInfo.cs
new file mode 100644
index 000000000..cf30594ab
--- /dev/null
+++ b/src/WireMock.Net.GraphQL/Properties/AssemblyInfo.cs
@@ -0,0 +1,8 @@
+// Copyright © WireMock.Net
+
+using System.Runtime.CompilerServices;
+
+// [assembly: InternalsVisibleTo("WireMock.Net.Tests, PublicKey=0024000004800000940000000602000000240000525341310004000001000100e138ec44d93acac565953052636eb8d5e7e9f27ddb030590055cd1a0ab2069a5623f1f77ca907d78e0b37066ca0f6d63da7eecc3fcb65b76aa8ebeccf7ebe1d11264b8404cd9b1cbbf2c83f566e033b3e54129f6ef28daffff776ba7aebbc53c0d635ebad8f45f78eb3f7e0459023c218f003416e080f96a1a3c5ffeb56bee9e")]
+
+// Needed for Moq in the UnitTest project
+// [assembly: InternalsVisibleTo("DynamicProxyGenAssembly2, PublicKey=0024000004800000940000000602000000240000525341310004000001000100c547cac37abd99c8db225ef2f6c8a3602f3b3606cc9891605d02baa56104f4cfc0734aa39b93bf7852f7d9266654753cc297e7d2edfe0bac1cdcf9f717241550e0a7b191195b7667bb4f64bcb8e2121380fd1d9d46ad2d92d2d15605093924cceaf74c4861eff62abf69b9291ed0a340e113be11e6a7d3113e92484cf7045cc7")]
\ No newline at end of file
diff --git a/src/WireMock.Net.GraphQL/RequestBuilders/IRequestBuilderExtensions.cs b/src/WireMock.Net.GraphQL/RequestBuilders/IRequestBuilderExtensions.cs
new file mode 100644
index 000000000..9b745e172
--- /dev/null
+++ b/src/WireMock.Net.GraphQL/RequestBuilders/IRequestBuilderExtensions.cs
@@ -0,0 +1,94 @@
+// Copyright © WireMock.Net
+
+using System;
+using System.Collections.Generic;
+using GraphQL.Types;
+using Stef.Validation;
+using WireMock.Matchers;
+using WireMock.Matchers.Request;
+using WireMock.Models;
+using WireMock.Models.GraphQL;
+
+namespace WireMock.RequestBuilders;
+
+///
+/// IRequestBuilderExtensions extensions for GraphQL.
+///
+// ReSharper disable once InconsistentNaming
+public static class IRequestBuilderExtensions
+{
+ ///
+ /// WithBodyAsGraphQL: The GraphQL body as a string.
+ ///
+ /// The .
+ /// The GraphQL schema.
+ /// The match behaviour. (Default is MatchBehaviour.AcceptOnMatch).
+ /// The .
+ public static IRequestBuilder WithGraphQLSchema(this IRequestBuilder requestBuilder, string schema, MatchBehaviour matchBehaviour = MatchBehaviour.AcceptOnMatch)
+ {
+ return Guard.NotNull(requestBuilder).Add(new RequestMessageGraphQLMatcher(matchBehaviour, schema));
+ }
+
+ ///
+ /// WithBodyAsGraphQL: The GraphQL schema as a string.
+ ///
+ /// The .
+ /// The GraphQL schema.
+ /// A dictionary defining the custom scalars used in this schema. (optional)
+ /// The match behaviour. (Default is MatchBehaviour.AcceptOnMatch).
+ /// The .
+ public static IRequestBuilder WithGraphQLSchema(this IRequestBuilder requestBuilder, string schema, IDictionary? customScalars, MatchBehaviour matchBehaviour = MatchBehaviour.AcceptOnMatch)
+ {
+ return Guard.NotNull(requestBuilder).Add(new RequestMessageGraphQLMatcher(matchBehaviour, schema, customScalars));
+ }
+
+ ///
+ /// WithBodyAsGraphQL: The GraphQL schema as a .
+ ///
+ /// The .
+ /// The GraphQL schema.
+ /// The match behaviour. (Default is MatchBehaviour.AcceptOnMatch).
+ /// The .
+ public static IRequestBuilder WithGraphQLSchema(this IRequestBuilder requestBuilder, ISchema schema, MatchBehaviour matchBehaviour = MatchBehaviour.AcceptOnMatch)
+ {
+ return Guard.NotNull(requestBuilder).Add(new RequestMessageGraphQLMatcher(matchBehaviour, new SchemaDataWrapper(schema)));
+ }
+
+ ///
+ /// WithBodyAsGraphQL: The GraphQL schema as a .
+ ///
+ /// The .
+ /// The GraphQL schema.
+ /// A dictionary defining the custom scalars used in this schema. (optional)
+ /// The match behaviour. (Default is MatchBehaviour.AcceptOnMatch).
+ /// The .
+ public static IRequestBuilder WithGraphQLSchema(this IRequestBuilder requestBuilder, ISchema schema, IDictionary? customScalars, MatchBehaviour matchBehaviour = MatchBehaviour.AcceptOnMatch)
+ {
+ return Guard.NotNull(requestBuilder).Add(new RequestMessageGraphQLMatcher(matchBehaviour, new SchemaDataWrapper(schema), customScalars));
+ }
+
+ ///
+ /// WithBodyAsGraphQL: The GraphQL schema as a .
+ ///
+ /// The .
+ /// The GraphQL schema.
+ /// The match behaviour. (Default is MatchBehaviour.AcceptOnMatch).
+ /// The .
+ public static IRequestBuilder WithGraphQLSchema(this IRequestBuilder requestBuilder, ISchemaData schema, MatchBehaviour matchBehaviour = MatchBehaviour.AcceptOnMatch)
+ {
+ return Guard.NotNull(requestBuilder).Add(new RequestMessageGraphQLMatcher(matchBehaviour, schema));
+ }
+
+ ///
+ /// WithBodyAsGraphQL: The GraphQL schema as a .
+ ///
+ /// The .
+ /// The GraphQL schema.
+ /// A dictionary defining the custom scalars used in this schema. (optional)
+ /// The match behaviour. (Default is MatchBehaviour.AcceptOnMatch).
+ /// The .
+ public static IRequestBuilder WithGraphQLSchema(this IRequestBuilder requestBuilder, ISchemaData schema, IDictionary? customScalars, MatchBehaviour matchBehaviour = MatchBehaviour.AcceptOnMatch)
+ {
+ return Guard.NotNull(requestBuilder).Add(new RequestMessageGraphQLMatcher(matchBehaviour, schema, customScalars));
+ }
+}
\ No newline at end of file
diff --git a/src/WireMock.Net.Minimal/Util/ReflectionUtils.cs b/src/WireMock.Net.GraphQL/Utils/ReflectionUtils.cs
similarity index 98%
rename from src/WireMock.Net.Minimal/Util/ReflectionUtils.cs
rename to src/WireMock.Net.GraphQL/Utils/ReflectionUtils.cs
index 0d4720a2c..1beb41840 100644
--- a/src/WireMock.Net.Minimal/Util/ReflectionUtils.cs
+++ b/src/WireMock.Net.GraphQL/Utils/ReflectionUtils.cs
@@ -6,7 +6,7 @@
using System.Reflection;
using System.Reflection.Emit;
-namespace WireMock.Util;
+namespace WireMock.Utils;
internal static class ReflectionUtils
{
diff --git a/src/WireMock.Net.GraphQL/WireMock.Net.GraphQL.csproj b/src/WireMock.Net.GraphQL/WireMock.Net.GraphQL.csproj
new file mode 100644
index 000000000..51235cff1
--- /dev/null
+++ b/src/WireMock.Net.GraphQL/WireMock.Net.GraphQL.csproj
@@ -0,0 +1,47 @@
+
+
+
+ GraphQL support for WireMock.Net
+ WireMock.Net.Matchers.GraphQL
+ Stef Heyenrath
+ netstandard2.0;netstandard2.1;netcoreapp3.1;net5.0;net6.0;net8.0
+ true
+ wiremock;matchers;matcher;graphql
+ WireMock
+ {B6269AAC-170A-4346-8B9A-444DED3D9A45}
+ true
+ true
+ true
+ true
+ ../WireMock.Net/WireMock.Net.ruleset
+ true
+ ../WireMock.Net/WireMock.Net.snk
+
+ true
+ MIT
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ all
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+
+
+
+
\ No newline at end of file
diff --git a/src/WireMock.Net.Minimal/Models/GraphQLSchemaDetails.cs b/src/WireMock.Net.Minimal/Models/GraphQLSchemaDetails.cs
index ee473d55a..24874fde9 100644
--- a/src/WireMock.Net.Minimal/Models/GraphQLSchemaDetails.cs
+++ b/src/WireMock.Net.Minimal/Models/GraphQLSchemaDetails.cs
@@ -4,6 +4,7 @@
using System.Collections.Generic;
using AnyOfTypes;
using Newtonsoft.Json;
+using WireMock.Models.GraphQL;
namespace WireMock.Models;
@@ -22,17 +23,16 @@ public class GraphQLSchemaDetails
///
public StringPattern? SchemaAsStringPattern { get; set; }
-#if GRAPHQL
///
- /// The GraphQL schema as a .
+ /// The GraphQL schema as a .
///
- public GraphQL.Types.ISchema? SchemaAsISchema { get; set; }
+ public ISchemaData? SchemaAsISchemaData { get; set; }
///
/// The GraphQL Schema.
///
[JsonIgnore]
- public AnyOf? Schema
+ public AnyOf? Schema
{
get
{
@@ -46,15 +46,14 @@ public class GraphQLSchemaDetails
return SchemaAsStringPattern;
}
- if (SchemaAsISchema != null)
+ if (SchemaAsISchemaData != null)
{
- return new AnyOf(SchemaAsISchema);
+ return new AnyOf(SchemaAsISchemaData);
}
return null;
}
}
-#endif
///
/// The custom Scalars to define for this schema.
diff --git a/src/WireMock.Net.Minimal/RequestBuilders/IGraphQLRequestBuilder.cs b/src/WireMock.Net.Minimal/RequestBuilders/IGraphQLRequestBuilder.cs
deleted file mode 100644
index 276bda680..000000000
--- a/src/WireMock.Net.Minimal/RequestBuilders/IGraphQLRequestBuilder.cs
+++ /dev/null
@@ -1,83 +0,0 @@
-// Copyright © WireMock.Net
-
-using System;
-using System.Collections.Generic;
-using WireMock.Matchers;
-
-namespace WireMock.RequestBuilders;
-
-///
-/// The GraphQLRequestBuilder interface.
-///
-public interface IGraphQLRequestBuilder : IMultiPartRequestBuilder
-{
- ///
- /// WithGraphQLSchema: The GraphQL schema as a string.
- ///
- /// The GraphQL schema.
- /// The match behaviour. (Default is MatchBehaviour.AcceptOnMatch).
- /// The .
- IRequestBuilder WithGraphQLSchema(string schema, MatchBehaviour matchBehaviour = MatchBehaviour.AcceptOnMatch);
-
- ///
- /// WithGraphQLSchema: The GraphQL schema as a string.
- ///
- /// The GraphQL schema.
- /// A dictionary defining the custom scalars used in this schema. (optional)
- /// The match behaviour. (Default is MatchBehaviour.AcceptOnMatch).
- /// The .
- IRequestBuilder WithGraphQLSchema(string schema, IDictionary? customScalars, MatchBehaviour matchBehaviour = MatchBehaviour.AcceptOnMatch);
-
- ///
- /// WithBodyAsGraphQL: The GraphQL schema as a string.
- ///
- /// The GraphQL schema.
- /// The match behaviour. (Default is MatchBehaviour.AcceptOnMatch).
- /// The .
- IRequestBuilder WithBodyAsGraphQL(string schema, MatchBehaviour matchBehaviour = MatchBehaviour.AcceptOnMatch);
-
- ///
- /// WithBodyAsGraphQL: The GraphQL schema as a string.
- ///
- /// The GraphQL schema.
- /// A dictionary defining the custom scalars used in this schema. (optional)
- /// The match behaviour. (Default is MatchBehaviour.AcceptOnMatch).
- /// The .
- IRequestBuilder WithBodyAsGraphQL(string schema, IDictionary? customScalars, MatchBehaviour matchBehaviour = MatchBehaviour.AcceptOnMatch);
-
-#if GRAPHQL
- ///
- /// WithGraphQLSchema: The GraphQL schema as a ISchema.
- ///
- /// The GraphQL schema.
- /// The match behaviour. (Default is MatchBehaviour.AcceptOnMatch).
- /// The .
- IRequestBuilder WithGraphQLSchema(GraphQL.Types.ISchema schema, MatchBehaviour matchBehaviour = MatchBehaviour.AcceptOnMatch);
-
- ///
- /// WithGraphQLSchema: The GraphQL schema as a ISchema.
- ///
- /// The GraphQL schema.
- /// A dictionary defining the custom scalars used in this schema. (optional)
- /// The match behaviour. (Default is MatchBehaviour.AcceptOnMatch).
- /// The .
- IRequestBuilder WithGraphQLSchema(GraphQL.Types.ISchema schema, IDictionary? customScalars, MatchBehaviour matchBehaviour = MatchBehaviour.AcceptOnMatch);
-
- ///
- /// WithBodyAsGraphQL: The GraphQL schema as a ISchema.
- ///
- /// The GraphQL schema.
- /// The match behaviour. (Default is MatchBehaviour.AcceptOnMatch).
- /// The .
- IRequestBuilder WithBodyAsGraphQL(GraphQL.Types.ISchema schema, MatchBehaviour matchBehaviour = MatchBehaviour.AcceptOnMatch);
-
- ///
- /// WithBodyAsGraphQL: The GraphQL schema as a ISchema.
- ///
- /// The GraphQL schema.
- /// A dictionary defining the custom scalars used in this schema. (optional)
- /// The match behaviour. (Default is MatchBehaviour.AcceptOnMatch).
- /// The .
- IRequestBuilder WithBodyAsGraphQL(GraphQL.Types.ISchema schema, IDictionary? customScalars, MatchBehaviour matchBehaviour = MatchBehaviour.AcceptOnMatch);
-#endif
-}
\ No newline at end of file
diff --git a/src/WireMock.Net.Minimal/RequestBuilders/Request.WithBody.cs b/src/WireMock.Net.Minimal/RequestBuilders/Request.WithBody.cs
index 8aa01516d..fd840aaea 100644
--- a/src/WireMock.Net.Minimal/RequestBuilders/Request.WithBody.cs
+++ b/src/WireMock.Net.Minimal/RequestBuilders/Request.WithBody.cs
@@ -98,10 +98,4 @@ public IRequestBuilder WithBody(Func?, bool> func)
_requestMatchers.Add(new RequestMessageBodyMatcher(Guard.NotNull(func)));
return this;
}
-
- ///
- public IRequestBuilder WithBodyAsGraphQLSchema(string body, MatchBehaviour matchBehaviour = MatchBehaviour.AcceptOnMatch)
- {
- return WithGraphQLSchema(body, matchBehaviour);
- }
}
\ No newline at end of file
diff --git a/src/WireMock.Net.Minimal/RequestBuilders/Request.WithGraphQLSchema.cs b/src/WireMock.Net.Minimal/RequestBuilders/Request.WithGraphQLSchema.cs
deleted file mode 100644
index 982d8dfd2..000000000
--- a/src/WireMock.Net.Minimal/RequestBuilders/Request.WithGraphQLSchema.cs
+++ /dev/null
@@ -1,61 +0,0 @@
-// Copyright © WireMock.Net
-
-using System.Collections.Generic;
-using System;
-using WireMock.Matchers;
-using WireMock.Matchers.Request;
-
-namespace WireMock.RequestBuilders;
-
-public partial class Request
-{
- ///
- public IRequestBuilder WithGraphQLSchema(string schema, MatchBehaviour matchBehaviour = MatchBehaviour.AcceptOnMatch)
- {
- return WithBodyAsGraphQL(schema, matchBehaviour);
- }
-
- ///
- public IRequestBuilder WithGraphQLSchema(string schema, IDictionary? customScalars, MatchBehaviour matchBehaviour = MatchBehaviour.AcceptOnMatch)
- {
- return WithBodyAsGraphQL(schema, customScalars, matchBehaviour);
- }
-
- ///
- public IRequestBuilder WithBodyAsGraphQL(string schema, MatchBehaviour matchBehaviour = MatchBehaviour.AcceptOnMatch)
- {
- return Add(new RequestMessageGraphQLMatcher(matchBehaviour, schema));
- }
-
- ///
- public IRequestBuilder WithBodyAsGraphQL(string schema, IDictionary? customScalars, MatchBehaviour matchBehaviour = MatchBehaviour.AcceptOnMatch)
- {
- return Add(new RequestMessageGraphQLMatcher(matchBehaviour, schema, customScalars));
- }
-
-#if GRAPHQL
- ///
- public IRequestBuilder WithGraphQLSchema(GraphQL.Types.ISchema schema, MatchBehaviour matchBehaviour = MatchBehaviour.AcceptOnMatch)
- {
- return WithBodyAsGraphQL(schema, matchBehaviour);
- }
-
- ///
- public IRequestBuilder WithGraphQLSchema(GraphQL.Types.ISchema schema, IDictionary? customScalars, MatchBehaviour matchBehaviour = MatchBehaviour.AcceptOnMatch)
- {
- return WithBodyAsGraphQL(schema, customScalars, matchBehaviour);
- }
-
- ///
- public IRequestBuilder WithBodyAsGraphQL(GraphQL.Types.ISchema schema, MatchBehaviour matchBehaviour = MatchBehaviour.AcceptOnMatch)
- {
- return Add(new RequestMessageGraphQLMatcher(matchBehaviour, schema));
- }
-
- ///
- public IRequestBuilder WithBodyAsGraphQL(GraphQL.Types.ISchema schema, IDictionary? customScalars, MatchBehaviour matchBehaviour = MatchBehaviour.AcceptOnMatch)
- {
- return Add(new RequestMessageGraphQLMatcher(matchBehaviour, schema, customScalars));
- }
-#endif
-}
\ No newline at end of file
diff --git a/src/WireMock.Net.Minimal/RequestBuilders/Request.cs b/src/WireMock.Net.Minimal/RequestBuilders/Request.cs
index b37e92ab5..2b3f21ae4 100644
--- a/src/WireMock.Net.Minimal/RequestBuilders/Request.cs
+++ b/src/WireMock.Net.Minimal/RequestBuilders/Request.cs
@@ -73,6 +73,17 @@ public IList GetRequestMessageMatchers() where T : IRequestMatcher
return _requestMatchers.OfType().FirstOrDefault(func);
}
+ public IRequestBuilder Add(T requestMatcher) where T : IRequestMatcher
+ {
+ foreach (var existing in _requestMatchers.OfType().ToArray())
+ {
+ _requestMatchers.Remove(existing);
+ }
+
+ _requestMatchers.Add(requestMatcher);
+ return this;
+ }
+
internal bool TryGetProtoBufMatcher([NotNullWhen(true)] out IProtoBufMatcher? protoBufMatcher)
{
protoBufMatcher = GetRequestMessageMatcher()?.Matcher;
@@ -85,15 +96,4 @@ internal bool TryGetProtoBufMatcher([NotNullWhen(true)] out IProtoBufMatcher? pr
protoBufMatcher = bodyMatcher?.Matchers?.OfType().FirstOrDefault();
return protoBufMatcher != null;
}
-
- private IRequestBuilder Add(T requestMatcher) where T : IRequestMatcher
- {
- foreach (var existing in _requestMatchers.OfType().ToArray())
- {
- _requestMatchers.Remove(existing);
- }
-
- _requestMatchers.Add(requestMatcher);
- return this;
- }
}
\ No newline at end of file
diff --git a/src/WireMock.Net.Minimal/Serialization/MappingConverter.cs b/src/WireMock.Net.Minimal/Serialization/MappingConverter.cs
index aacc94a5d..71f29e5c7 100644
--- a/src/WireMock.Net.Minimal/Serialization/MappingConverter.cs
+++ b/src/WireMock.Net.Minimal/Serialization/MappingConverter.cs
@@ -13,7 +13,6 @@
using WireMock.Extensions;
using WireMock.Matchers;
using WireMock.Matchers.Request;
-using WireMock.Models;
using WireMock.RequestBuilders;
using WireMock.ResponseBuilders;
using WireMock.Types;
@@ -111,15 +110,13 @@ public string ToCSharpCode(IMapping mapping, MappingConverterSettings? settings
sb.AppendLine($" .WithHttpVersion({requestMessageHttpVersionMatcher.HttpVersion})");
}
-#if GRAPHQL
if (requestMessageGraphQLMatcher?.Matchers != null)
{
- if (requestMessageGraphQLMatcher.Matchers.OfType().FirstOrDefault() is { } graphQLMatcher && graphQLMatcher.GetPatterns().Any())
+ if (requestMessageGraphQLMatcher.Matchers.OfType().FirstOrDefault() is { } graphQLMatcher && graphQLMatcher.GetPatterns().Any())
{
sb.AppendLine($" .WithGraphQLSchema({GetString(graphQLMatcher)})");
}
}
-#endif
if (requestMessageMultiPartMatcher?.Matchers != null)
{
diff --git a/src/WireMock.Net.Minimal/Serialization/MatcherMapper.cs b/src/WireMock.Net.Minimal/Serialization/MatcherMapper.cs
index 06b1a284b..73d4c7230 100644
--- a/src/WireMock.Net.Minimal/Serialization/MatcherMapper.cs
+++ b/src/WireMock.Net.Minimal/Serialization/MatcherMapper.cs
@@ -10,6 +10,7 @@
using WireMock.Extensions;
using WireMock.Matchers;
using WireMock.Models;
+using WireMock.Models.GraphQL;
using WireMock.Settings;
using WireMock.Util;
@@ -70,10 +71,11 @@ public MatcherMapper(WireMockServerSettings settings)
case nameof(ExactObjectMatcher):
return CreateExactObjectMatcher(matchBehaviour, stringPatterns[0]);
-#if GRAPHQL
- case nameof(GraphQLMatcher):
- return new GraphQLMatcher(stringPatterns[0].GetPattern(), matcherModel.CustomScalars, matchBehaviour, matchOperator);
-#endif
+
+ case "GraphQLMatcher":
+ var patternAsString = stringPatterns[0].GetPattern();
+ var schema = new AnyOf(patternAsString);
+ return TypeLoader.LoadNewInstance(schema, matcherModel.CustomScalars, matchBehaviour, matchOperator);
case "MimePartMatcher":
return CreateMimePartMatcher(matchBehaviour, matcherModel);
@@ -165,11 +167,10 @@ public MatcherMapper(WireMockServerSettings settings)
case XPathMatcher xpathMatcher:
model.XmlNamespaceMap = xpathMatcher.XmlNamespaceMap;
break;
-#if GRAPHQL
- case GraphQLMatcher graphQLMatcher:
+
+ case IGraphQLMatcher graphQLMatcher:
model.CustomScalars = graphQLMatcher.CustomScalars;
break;
-#endif
}
switch (matcher)
@@ -277,10 +278,10 @@ private static ExactObjectMatcher CreateExactObjectMatcher(MatchBehaviour matchB
private IMimePartMatcher CreateMimePartMatcher(MatchBehaviour matchBehaviour, MatcherModel matcher)
{
- var contentTypeMatcher = Map(matcher?.ContentTypeMatcher) as IStringMatcher;
- var contentDispositionMatcher = Map(matcher?.ContentDispositionMatcher) as IStringMatcher;
- var contentTransferEncodingMatcher = Map(matcher?.ContentTransferEncodingMatcher) as IStringMatcher;
- var contentMatcher = Map(matcher?.ContentMatcher);
+ var contentTypeMatcher = Map(matcher.ContentTypeMatcher) as IStringMatcher;
+ var contentDispositionMatcher = Map(matcher.ContentDispositionMatcher) as IStringMatcher;
+ var contentTransferEncodingMatcher = Map(matcher.ContentTransferEncodingMatcher) as IStringMatcher;
+ var contentMatcher = Map(matcher.ContentMatcher);
return TypeLoader.LoadNewInstance(matchBehaviour, contentTypeMatcher, contentDispositionMatcher, contentTransferEncodingMatcher, contentMatcher);
}
diff --git a/src/WireMock.Net.Minimal/WireMock.Net.Minimal.csproj b/src/WireMock.Net.Minimal/WireMock.Net.Minimal.csproj
index b31baa67e..f3fb103a7 100644
--- a/src/WireMock.Net.Minimal/WireMock.Net.Minimal.csproj
+++ b/src/WireMock.Net.Minimal/WireMock.Net.Minimal.csproj
@@ -126,7 +126,6 @@
-
diff --git a/src/WireMock.Net.Shared/Extensions/AnyOfExtensions.cs b/src/WireMock.Net.Shared/Extensions/AnyOfExtensions.cs
index 72646f74f..aefe5e1ea 100644
--- a/src/WireMock.Net.Shared/Extensions/AnyOfExtensions.cs
+++ b/src/WireMock.Net.Shared/Extensions/AnyOfExtensions.cs
@@ -13,10 +13,10 @@ namespace WireMock.Extensions;
public static class AnyOfExtensions
{
///
- /// Gets the pattern.
+ /// Gets the pattern as string value.
///
/// AnyOf type
- /// string value
+ /// The string value
public static string GetPattern(this AnyOf value)
{
return value.IsFirst ? value.First : value.Second.Pattern;
diff --git a/src/WireMock.Net.Shared/Matchers/IGraphQLMatcher.cs b/src/WireMock.Net.Shared/Matchers/IGraphQLMatcher.cs
new file mode 100644
index 000000000..330cd8bba
--- /dev/null
+++ b/src/WireMock.Net.Shared/Matchers/IGraphQLMatcher.cs
@@ -0,0 +1,18 @@
+// Copyright © WireMock.Net
+
+using System;
+using System.Collections.Generic;
+
+namespace WireMock.Matchers;
+
+///
+/// GraphQLMatcher
+///
+///
+public interface IGraphQLMatcher : IStringMatcher
+{
+ ///
+ /// An optional dictionary defining the custom Scalar and the type.
+ ///
+ public IDictionary? CustomScalars { get; }
+}
\ No newline at end of file
diff --git a/src/WireMock.Net.Minimal/Matchers/Request/RequestMessageGraphQLMatcher.cs b/src/WireMock.Net.Shared/Matchers/Request/RequestMessageGraphQLMatcher.cs
similarity index 78%
rename from src/WireMock.Net.Minimal/Matchers/Request/RequestMessageGraphQLMatcher.cs
rename to src/WireMock.Net.Shared/Matchers/Request/RequestMessageGraphQLMatcher.cs
index 6351909a8..613d58f82 100644
--- a/src/WireMock.Net.Minimal/Matchers/Request/RequestMessageGraphQLMatcher.cs
+++ b/src/WireMock.Net.Shared/Matchers/Request/RequestMessageGraphQLMatcher.cs
@@ -3,8 +3,12 @@
using System;
using System.Collections.Generic;
using System.Linq;
+using AnyOfTypes;
using Stef.Validation;
+using WireMock.Models;
+using WireMock.Models.GraphQL;
using WireMock.Types;
+using WireMock.Util;
namespace WireMock.Matchers.Request;
@@ -34,18 +38,16 @@ public RequestMessageGraphQLMatcher(MatchBehaviour matchBehaviour, string schema
{
}
-#if GRAPHQL
///
/// Initializes a new instance of the class.
///
/// The match behaviour.
/// The schema.
/// A dictionary defining the custom scalars used in this schema. [optional]
- public RequestMessageGraphQLMatcher(MatchBehaviour matchBehaviour, GraphQL.Types.ISchema schema, IDictionary? customScalars = null) :
- this(CreateMatcherArray(matchBehaviour, new AnyOfTypes.AnyOf(schema), customScalars))
+ public RequestMessageGraphQLMatcher(MatchBehaviour matchBehaviour, ISchemaData schema, IDictionary? customScalars = null) :
+ this(CreateMatcherArray(matchBehaviour, new AnyOf(schema), customScalars))
{
}
-#endif
///
/// Initializes a new instance of the class.
@@ -89,22 +91,16 @@ private static MatchResult CalculateMatchResult(IRequestMessage requestMessage,
private IReadOnlyList CalculateMatchResults(IRequestMessage requestMessage)
{
- return Matchers == null ? new[] { new MatchResult() } : Matchers.Select(matcher => CalculateMatchResult(requestMessage, matcher)).ToArray();
+ return Matchers == null ? [new MatchResult()] : Matchers.Select(matcher => CalculateMatchResult(requestMessage, matcher)).ToArray();
}
-#if GRAPHQL
private static IMatcher[] CreateMatcherArray(
MatchBehaviour matchBehaviour,
- AnyOfTypes.AnyOf schema,
+ AnyOf schema,
IDictionary? customScalars
)
{
- return new[] { new GraphQLMatcher(schema, customScalars, matchBehaviour) }.Cast().ToArray();
+ var graphQLMatcher = TypeLoader.LoadNewInstance(schema, customScalars, matchBehaviour, MatchOperator.Or);
+ return [graphQLMatcher];
}
-#else
- private static IMatcher[] CreateMatcherArray(MatchBehaviour matchBehaviour, object schema, IDictionary? customScalars)
- {
- throw new System.NotSupportedException("The GrapQLMatcher can not be used for .NETStandard1.3 or .NET Framework 4.6.1 or lower.");
- }
-#endif
}
\ No newline at end of file
diff --git a/src/WireMock.Net.Shared/Properties/AssemblyInfo.cs b/src/WireMock.Net.Shared/Properties/AssemblyInfo.cs
index 922e9942b..60438b3d3 100644
--- a/src/WireMock.Net.Shared/Properties/AssemblyInfo.cs
+++ b/src/WireMock.Net.Shared/Properties/AssemblyInfo.cs
@@ -4,6 +4,7 @@
[assembly: InternalsVisibleTo("WireMock.Net.Minimal, PublicKey=0024000004800000940000000602000000240000525341310004000001000100e138ec44d93acac565953052636eb8d5e7e9f27ddb030590055cd1a0ab2069a5623f1f77ca907d78e0b37066ca0f6d63da7eecc3fcb65b76aa8ebeccf7ebe1d11264b8404cd9b1cbbf2c83f566e033b3e54129f6ef28daffff776ba7aebbc53c0d635ebad8f45f78eb3f7e0459023c218f003416e080f96a1a3c5ffeb56bee9e")]
[assembly: InternalsVisibleTo("WireMock.Net.MimePart, PublicKey=0024000004800000940000000602000000240000525341310004000001000100e138ec44d93acac565953052636eb8d5e7e9f27ddb030590055cd1a0ab2069a5623f1f77ca907d78e0b37066ca0f6d63da7eecc3fcb65b76aa8ebeccf7ebe1d11264b8404cd9b1cbbf2c83f566e033b3e54129f6ef28daffff776ba7aebbc53c0d635ebad8f45f78eb3f7e0459023c218f003416e080f96a1a3c5ffeb56bee9e")]
+[assembly: InternalsVisibleTo("WireMock.Net.GraphQL, PublicKey=0024000004800000940000000602000000240000525341310004000001000100e138ec44d93acac565953052636eb8d5e7e9f27ddb030590055cd1a0ab2069a5623f1f77ca907d78e0b37066ca0f6d63da7eecc3fcb65b76aa8ebeccf7ebe1d11264b8404cd9b1cbbf2c83f566e033b3e54129f6ef28daffff776ba7aebbc53c0d635ebad8f45f78eb3f7e0459023c218f003416e080f96a1a3c5ffeb56bee9e")]
[assembly: InternalsVisibleTo("WireMock.Net.Matchers.CSharpCode, PublicKey=0024000004800000940000000602000000240000525341310004000001000100e138ec44d93acac565953052636eb8d5e7e9f27ddb030590055cd1a0ab2069a5623f1f77ca907d78e0b37066ca0f6d63da7eecc3fcb65b76aa8ebeccf7ebe1d11264b8404cd9b1cbbf2c83f566e033b3e54129f6ef28daffff776ba7aebbc53c0d635ebad8f45f78eb3f7e0459023c218f003416e080f96a1a3c5ffeb56bee9e")]
// [assembly: InternalsVisibleTo("WireMock.Net.StandAlone, PublicKey=0024000004800000940000000602000000240000525341310004000001000100e138ec44d93acac565953052636eb8d5e7e9f27ddb030590055cd1a0ab2069a5623f1f77ca907d78e0b37066ca0f6d63da7eecc3fcb65b76aa8ebeccf7ebe1d11264b8404cd9b1cbbf2c83f566e033b3e54129f6ef28daffff776ba7aebbc53c0d635ebad8f45f78eb3f7e0459023c218f003416e080f96a1a3c5ffeb56bee9e")]
[assembly: InternalsVisibleTo("WireMock.Net.Tests, PublicKey=0024000004800000940000000602000000240000525341310004000001000100e138ec44d93acac565953052636eb8d5e7e9f27ddb030590055cd1a0ab2069a5623f1f77ca907d78e0b37066ca0f6d63da7eecc3fcb65b76aa8ebeccf7ebe1d11264b8404cd9b1cbbf2c83f566e033b3e54129f6ef28daffff776ba7aebbc53c0d635ebad8f45f78eb3f7e0459023c218f003416e080f96a1a3c5ffeb56bee9e")]
diff --git a/src/WireMock.Net.Minimal/RequestBuilders/IBodyRequestBuilder.cs b/src/WireMock.Net.Shared/RequestBuilders/IBodyRequestBuilder.cs
similarity index 86%
rename from src/WireMock.Net.Minimal/RequestBuilders/IBodyRequestBuilder.cs
rename to src/WireMock.Net.Shared/RequestBuilders/IBodyRequestBuilder.cs
index c935e1f2f..f720988f8 100644
--- a/src/WireMock.Net.Minimal/RequestBuilders/IBodyRequestBuilder.cs
+++ b/src/WireMock.Net.Shared/RequestBuilders/IBodyRequestBuilder.cs
@@ -52,7 +52,7 @@ public interface IBodyRequestBuilder : IProtoBufRequestBuilder
IRequestBuilder WithBody(object body, MatchBehaviour matchBehaviour = MatchBehaviour.AcceptOnMatch);
///
- /// WithBodyAsJson: A will be used to match this object.
+ /// WithBodyAsJson: A JsonMatcher will be used to match this object.
///
/// The body.
/// The match behaviour [default is AcceptOnMatch].
@@ -93,12 +93,4 @@ public interface IBodyRequestBuilder : IProtoBufRequestBuilder
/// The form-urlencoded values.
/// The .
IRequestBuilder WithBody(Func?, bool> func);
-
- ///
- /// WithBodyAsGraphQLSchema: Body as GraphQL schema as a string.
- ///
- /// The GraphQL schema.
- /// The match behaviour. (Default is MatchBehaviour.AcceptOnMatch).
- /// The .
- IRequestBuilder WithBodyAsGraphQLSchema(string body, MatchBehaviour matchBehaviour = MatchBehaviour.AcceptOnMatch);
}
\ No newline at end of file
diff --git a/src/WireMock.Net.Minimal/RequestBuilders/IClientIPRequestBuilder.cs b/src/WireMock.Net.Shared/RequestBuilders/IClientIPRequestBuilder.cs
similarity index 100%
rename from src/WireMock.Net.Minimal/RequestBuilders/IClientIPRequestBuilder.cs
rename to src/WireMock.Net.Shared/RequestBuilders/IClientIPRequestBuilder.cs
diff --git a/src/WireMock.Net.Minimal/RequestBuilders/ICookiesRequestBuilder.cs b/src/WireMock.Net.Shared/RequestBuilders/ICookiesRequestBuilder.cs
similarity index 100%
rename from src/WireMock.Net.Minimal/RequestBuilders/ICookiesRequestBuilder.cs
rename to src/WireMock.Net.Shared/RequestBuilders/ICookiesRequestBuilder.cs
diff --git a/src/WireMock.Net.Minimal/RequestBuilders/IHeadersRequestBuilder.cs b/src/WireMock.Net.Shared/RequestBuilders/IHeadersRequestBuilder.cs
similarity index 100%
rename from src/WireMock.Net.Minimal/RequestBuilders/IHeadersRequestBuilder.cs
rename to src/WireMock.Net.Shared/RequestBuilders/IHeadersRequestBuilder.cs
diff --git a/src/WireMock.Net.Minimal/RequestBuilders/IHttpVersionBuilder.cs b/src/WireMock.Net.Shared/RequestBuilders/IHttpVersionBuilder.cs
similarity index 100%
rename from src/WireMock.Net.Minimal/RequestBuilders/IHttpVersionBuilder.cs
rename to src/WireMock.Net.Shared/RequestBuilders/IHttpVersionBuilder.cs
diff --git a/src/WireMock.Net.Minimal/RequestBuilders/IMethodRequestBuilder.cs b/src/WireMock.Net.Shared/RequestBuilders/IMethodRequestBuilder.cs
similarity index 100%
rename from src/WireMock.Net.Minimal/RequestBuilders/IMethodRequestBuilder.cs
rename to src/WireMock.Net.Shared/RequestBuilders/IMethodRequestBuilder.cs
diff --git a/src/WireMock.Net.Minimal/RequestBuilders/IMultiPartRequestBuilder.cs b/src/WireMock.Net.Shared/RequestBuilders/IMultiPartRequestBuilder.cs
similarity index 97%
rename from src/WireMock.Net.Minimal/RequestBuilders/IMultiPartRequestBuilder.cs
rename to src/WireMock.Net.Shared/RequestBuilders/IMultiPartRequestBuilder.cs
index 4fe26daf8..30e23a97c 100644
--- a/src/WireMock.Net.Minimal/RequestBuilders/IMultiPartRequestBuilder.cs
+++ b/src/WireMock.Net.Shared/RequestBuilders/IMultiPartRequestBuilder.cs
@@ -1,7 +1,6 @@
// Copyright © WireMock.Net
using WireMock.Matchers;
-using WireMock.Matchers.Request;
namespace WireMock.RequestBuilders;
diff --git a/src/WireMock.Net.Minimal/RequestBuilders/IParamsRequestBuilder.cs b/src/WireMock.Net.Shared/RequestBuilders/IParamsRequestBuilder.cs
similarity index 100%
rename from src/WireMock.Net.Minimal/RequestBuilders/IParamsRequestBuilder.cs
rename to src/WireMock.Net.Shared/RequestBuilders/IParamsRequestBuilder.cs
diff --git a/src/WireMock.Net.Minimal/RequestBuilders/IProtoBufRequestBuilder.cs b/src/WireMock.Net.Shared/RequestBuilders/IProtoBufRequestBuilder.cs
similarity index 98%
rename from src/WireMock.Net.Minimal/RequestBuilders/IProtoBufRequestBuilder.cs
rename to src/WireMock.Net.Shared/RequestBuilders/IProtoBufRequestBuilder.cs
index f5362837c..c3908be7a 100644
--- a/src/WireMock.Net.Minimal/RequestBuilders/IProtoBufRequestBuilder.cs
+++ b/src/WireMock.Net.Shared/RequestBuilders/IProtoBufRequestBuilder.cs
@@ -8,7 +8,7 @@ namespace WireMock.RequestBuilders;
///
/// The ProtoBufRequestBuilder interface.
///
-public interface IProtoBufRequestBuilder : IGraphQLRequestBuilder
+public interface IProtoBufRequestBuilder : IMultiPartRequestBuilder
{
///
/// WithBodyAsProtoBuf
diff --git a/src/WireMock.Net.Minimal/RequestBuilders/IRequestBuilder.cs b/src/WireMock.Net.Shared/RequestBuilders/IRequestBuilder.cs
similarity index 61%
rename from src/WireMock.Net.Minimal/RequestBuilders/IRequestBuilder.cs
rename to src/WireMock.Net.Shared/RequestBuilders/IRequestBuilder.cs
index 0304d15d3..2ebe40f33 100644
--- a/src/WireMock.Net.Minimal/RequestBuilders/IRequestBuilder.cs
+++ b/src/WireMock.Net.Shared/RequestBuilders/IRequestBuilder.cs
@@ -1,5 +1,7 @@
// Copyright © WireMock.Net
+using WireMock.Matchers.Request;
+
namespace WireMock.RequestBuilders;
///
@@ -7,4 +9,5 @@ namespace WireMock.RequestBuilders;
///
public interface IRequestBuilder : IClientIPRequestBuilder
{
+ public IRequestBuilder Add(T requestMatcher) where T : IRequestMatcher;
}
\ No newline at end of file
diff --git a/src/WireMock.Net.Minimal/RequestBuilders/IUrlAndPathRequestBuilder.cs b/src/WireMock.Net.Shared/RequestBuilders/IUrlAndPathRequestBuilder.cs
similarity index 100%
rename from src/WireMock.Net.Minimal/RequestBuilders/IUrlAndPathRequestBuilder.cs
rename to src/WireMock.Net.Shared/RequestBuilders/IUrlAndPathRequestBuilder.cs
diff --git a/src/WireMock.Net.Minimal/Util/TypeLoader.cs b/src/WireMock.Net.Shared/Util/TypeLoader.cs
similarity index 100%
rename from src/WireMock.Net.Minimal/Util/TypeLoader.cs
rename to src/WireMock.Net.Shared/Util/TypeLoader.cs
diff --git a/src/WireMock.Net.Shared/WireMock.Net.Shared.csproj b/src/WireMock.Net.Shared/WireMock.Net.Shared.csproj
index 6889ff227..2e438c5eb 100644
--- a/src/WireMock.Net.Shared/WireMock.Net.Shared.csproj
+++ b/src/WireMock.Net.Shared/WireMock.Net.Shared.csproj
@@ -39,6 +39,10 @@
+
+
+
+
diff --git a/src/WireMock.Net/WireMock.Net.csproj b/src/WireMock.Net/WireMock.Net.csproj
index af948cb30..90b06baa4 100644
--- a/src/WireMock.Net/WireMock.Net.csproj
+++ b/src/WireMock.Net/WireMock.Net.csproj
@@ -34,5 +34,6 @@
+
\ No newline at end of file
diff --git a/test/WireMock.Net.Tests/Matchers/Models/WireMockCustomScalarGraphTypeTests.cs b/test/WireMock.Net.Tests/Matchers/Models/WireMockCustomScalarGraphTypeTests.cs
index cce687e45..b557cd84c 100644
--- a/test/WireMock.Net.Tests/Matchers/Models/WireMockCustomScalarGraphTypeTests.cs
+++ b/test/WireMock.Net.Tests/Matchers/Models/WireMockCustomScalarGraphTypeTests.cs
@@ -3,7 +3,7 @@
#if GRAPHQL
using System;
using FluentAssertions;
-using WireMock.Matchers.Models;
+using WireMock.GraphQL.Models;
using Xunit;
namespace WireMock.Net.Tests.Matchers.Models;
diff --git a/test/WireMock.Net.Tests/Serialization/MappingConverterTests.cs b/test/WireMock.Net.Tests/Serialization/MappingConverterTests.cs
index 7b0f5855b..fcda72eec 100644
--- a/test/WireMock.Net.Tests/Serialization/MappingConverterTests.cs
+++ b/test/WireMock.Net.Tests/Serialization/MappingConverterTests.cs
@@ -549,7 +549,7 @@ type Student {
lastName:String
fullName:String
}";
- var request = Request.Create().WithBodyAsGraphQLSchema(schema);
+ var request = Request.Create().WithGraphQLSchema(schema);
var response = Response.Create();
var mapping = new Mapping(_guid, _updatedAt, string.Empty, string.Empty, null, _settings, request, response, 42, null, null, null, null, null, false, null, null);
diff --git a/test/WireMock.Net.Tests/Serialization/MatcherMapperTests.cs b/test/WireMock.Net.Tests/Serialization/MatcherMapperTests.cs
index 3e270f0cc..3b069fb28 100644
--- a/test/WireMock.Net.Tests/Serialization/MatcherMapperTests.cs
+++ b/test/WireMock.Net.Tests/Serialization/MatcherMapperTests.cs
@@ -1076,7 +1076,7 @@ type Mutation {
};
// Act
- var matcher = (GraphQLMatcher)_sut.Map(model)!;
+ var matcher = (IGraphQLMatcher)_sut.Map(model)!;
// Assert
matcher.GetPatterns().Should().HaveElementAt(0, testSchema);