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);