Skip to content

Commit

Permalink
Support deleting / resetting a single scenario (#834)
Browse files Browse the repository at this point in the history
* Support deleting / resetting a single scenario

* move files
  • Loading branch information
StefH authored Oct 26, 2022
1 parent b4c32dd commit 31298d2
Show file tree
Hide file tree
Showing 27 changed files with 184 additions and 177 deletions.
8 changes: 8 additions & 0 deletions WireMock.Net Solution.sln.DotSettings
Original file line number Diff line number Diff line change
@@ -1,10 +1,18 @@
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=AD/@EntryIndexedValue">AD</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=CONNECT/@EntryIndexedValue">CONNECT</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=CS/@EntryIndexedValue">CS</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=DELETE/@EntryIndexedValue">DELETE</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=EC/@EntryIndexedValue">EC</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=GET/@EntryIndexedValue">GET</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=HEAD/@EntryIndexedValue">HEAD</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=ID/@EntryIndexedValue">ID</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=IP/@EntryIndexedValue">IP</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=MD/@EntryIndexedValue">MD5</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=OPTIONS/@EntryIndexedValue">OPTIONS</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=PATCH/@EntryIndexedValue">PATCH</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=POST/@EntryIndexedValue">POST</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=PUT/@EntryIndexedValue">PUT</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=RSA/@EntryIndexedValue">RSA</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=SSL/@EntryIndexedValue">SSL</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=TE/@EntryIndexedValue">TE</s:String>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
namespace WireMock.Http;
namespace WireMock.Constants;

/// <summary>
/// https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods
/// </summary>
internal static class HttpRequestMethods
public static class HttpRequestMethod
{
public const string CONNECT = "CONNECT";
public const string DELETE = "DELETE";
Expand Down
7 changes: 5 additions & 2 deletions src/WireMock.Net.Abstractions/Server/IWireMockServer.cs
Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@
using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using JetBrains.Annotations;
using WireMock.Admin.Mappings;
using WireMock.Logging;
using WireMock.Matchers.Request;

namespace WireMock.Server
{
Expand Down Expand Up @@ -144,6 +142,11 @@ public interface IWireMockServer : IDisposable
/// </summary>
void ResetScenarios();

/// <summary>
/// Resets a specific Scenario by the name.
/// </summary>
bool ResetScenario(string name);

/// <summary>
/// Resets the LogEntries.
/// </summary>
Expand Down
19 changes: 10 additions & 9 deletions src/WireMock.Net.FluentAssertions/Assertions/WireMockAssertions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
using System.Linq;
using FluentAssertions;
using FluentAssertions.Execution;
using WireMock.Constants;
using WireMock.Server;
using WireMock.Types;

Expand Down Expand Up @@ -169,39 +170,39 @@ public AndConstraint<WireMockAssertions> WithHeader(string expectedKey, string[]

[CustomAssertion]
public AndConstraint<WireMockAssertions> UsingConnect(string because = "", params object[] becauseArgs)
=> UsingMethod("CONNECT", because, becauseArgs);
=> UsingMethod(HttpRequestMethod.CONNECT, because, becauseArgs);

[CustomAssertion]
public AndConstraint<WireMockAssertions> UsingDelete(string because = "", params object[] becauseArgs)
=> UsingMethod("DELETE", because, becauseArgs);
=> UsingMethod(HttpRequestMethod.DELETE, because, becauseArgs);

[CustomAssertion]
public AndConstraint<WireMockAssertions> UsingGet(string because = "", params object[] becauseArgs)
=> UsingMethod("GET", because, becauseArgs);
=> UsingMethod(HttpRequestMethod.GET, because, becauseArgs);

[CustomAssertion]
public AndConstraint<WireMockAssertions> UsingHead(string because = "", params object[] becauseArgs)
=> UsingMethod("HEAD", because, becauseArgs);
=> UsingMethod(HttpRequestMethod.HEAD, because, becauseArgs);

[CustomAssertion]
public AndConstraint<WireMockAssertions> UsingOptions(string because = "", params object[] becauseArgs)
=> UsingMethod("OPTIONS", because, becauseArgs);
=> UsingMethod(HttpRequestMethod.OPTIONS, because, becauseArgs);

[CustomAssertion]
public AndConstraint<WireMockAssertions> UsingPost(string because = "", params object[] becauseArgs)
=> UsingMethod("POST", because, becauseArgs);
=> UsingMethod(HttpRequestMethod.POST, because, becauseArgs);

[CustomAssertion]
public AndConstraint<WireMockAssertions> UsingPatch(string because = "", params object[] becauseArgs)
=> UsingMethod("PATCH", because, becauseArgs);
=> UsingMethod(HttpRequestMethod.PATCH, because, becauseArgs);

[CustomAssertion]
public AndConstraint<WireMockAssertions> UsingPut(string because = "", params object[] becauseArgs)
=> UsingMethod("PUT", because, becauseArgs);
=> UsingMethod(HttpRequestMethod.PUT, because, becauseArgs);

[CustomAssertion]
public AndConstraint<WireMockAssertions> UsingTrace(string because = "", params object[] becauseArgs)
=> UsingMethod("TRACE", because, becauseArgs);
=> UsingMethod(HttpRequestMethod.TRACE, because, becauseArgs);

[CustomAssertion]
public AndConstraint<WireMockAssertions> UsingAnyMethod(string because = "", params object[] becauseArgs)
Expand Down
16 changes: 15 additions & 1 deletion src/WireMock.Net.RestClient/IWireMockAdminApi.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
using RestEase;
using RestEase;
using System;
using System.Collections.Generic;
using System.Net.Http.Headers;
Expand Down Expand Up @@ -179,6 +179,20 @@ public interface IWireMockAdminApi
[Post("scenarios")]
Task<StatusModel> ResetScenariosAsync();

/// <summary>
/// Delete (reset) a specific scenario
/// </summary>
[Delete("scenarios/{name}")]
[AllowAnyStatusCode]
Task<StatusModel> DeleteScenarioAsync([Path] string name);

/// <summary>
/// Delete (reset) all scenarios
/// </summary>
[Post("scenarios/{name}/reset")]
[AllowAnyStatusCode]
Task<StatusModel> ResetScenarioAsync([Path] string name);

/// <summary>
/// Create a new File
/// </summary>
Expand Down
2 changes: 1 addition & 1 deletion src/WireMock.Net/Owin/WireMockMiddlewareOptions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ internal class WireMockMiddlewareOptions : IWireMockMiddlewareOptions

public ConcurrentDictionary<Guid, IMapping> Mappings { get; } = new ConcurrentDictionary<Guid, IMapping>();

public ConcurrentDictionary<string, ScenarioState> Scenarios { get; } = new();
public ConcurrentDictionary<string, ScenarioState> Scenarios { get; } = new(StringComparer.OrdinalIgnoreCase);

public ConcurrentObservableCollection<LogEntry> LogEntries { get; } = new();

Expand Down
1 change: 1 addition & 0 deletions src/WireMock.Net/Pact/Models/V2/Interaction.cs
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
#pragma warning disable CS1591
namespace WireMock.Pact.Models.V2;

public class Interaction
Expand Down
40 changes: 20 additions & 20 deletions src/WireMock.Net/Pact/Models/V2/MatchingRule.cs
Original file line number Diff line number Diff line change
@@ -1,25 +1,25 @@
namespace WireMock.Pact.Models.V2
#pragma warning disable CS1591
namespace WireMock.Pact.Models.V2;

public class MatchingRule
{
public class MatchingRule
{
/// <summary>
/// type or regex
/// </summary>
public string Match { get; set; } = "type";
/// <summary>
/// type or regex
/// </summary>
public string Match { get; set; } = "type";

/// <summary>
/// Used for Match = "type"
/// </summary>
public string Min { get; set; }
/// <summary>
/// Used for Match = "type"
/// </summary>
public string Min { get; set; }

/// <summary>
/// Used for Match = "type"
/// </summary>
public string Max { get; set; }
/// <summary>
/// Used for Match = "type"
/// </summary>
public string Max { get; set; }

/// <summary>
/// Used for Match = "regex"
/// </summary>
public string Regex { get; set; }
}
/// <summary>
/// Used for Match = "regex"
/// </summary>
public string Regex { get; set; }
}
12 changes: 6 additions & 6 deletions src/WireMock.Net/Pact/Models/V2/Metadata.cs
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
namespace WireMock.Pact.Models.V2
#pragma warning disable CS1591
namespace WireMock.Pact.Models.V2;

public class Metadata
{
public class Metadata
{
public string PactSpecificationVersion { get; set; }
public string PactSpecificationVersion { get; set; }

public PactSpecification PactSpecification { get; set; } = new PactSpecification();
}
public PactSpecification PactSpecification { get; set; } = new PactSpecification();
}
16 changes: 8 additions & 8 deletions src/WireMock.Net/Pact/Models/V2/Pact.cs
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
#pragma warning disable CS1591
using System.Collections.Generic;

namespace WireMock.Pact.Models.V2
namespace WireMock.Pact.Models.V2;

public class Pact
{
public class Pact
{
public Pacticipant Consumer { get; set; }
public Pacticipant Consumer { get; set; }

public List<Interaction> Interactions { get; set; } = new List<Interaction>();
public List<Interaction> Interactions { get; set; } = new List<Interaction>();

public Metadata Metadata { get; set; }
public Metadata Metadata { get; set; }

public Pacticipant Provider { get; set; }
}
public Pacticipant Provider { get; set; }
}
4 changes: 3 additions & 1 deletion src/WireMock.Net/Pact/Models/V2/PactRequest.cs
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
#pragma warning disable CS1591
using System.Collections.Generic;
using WireMock.Constants;

namespace WireMock.Pact.Models.V2;

public class PactRequest
{
public IDictionary<string, string>? Headers { get; set; }

public string Method { get; set; } = "GET";
public string Method { get; set; } = HttpRequestMethod.GET;

public string? Path { get; set; } = "/";

Expand Down
1 change: 1 addition & 0 deletions src/WireMock.Net/Pact/Models/V2/PactResponse.cs
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
#pragma warning disable CS1591
using System.Collections.Generic;

namespace WireMock.Pact.Models.V2;
Expand Down
14 changes: 7 additions & 7 deletions src/WireMock.Net/Pact/Models/V2/PactRust.cs
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
namespace WireMock.Pact.Models.V2
#pragma warning disable CS1591
namespace WireMock.Pact.Models.V2;

public class PactRust
{
public class PactRust
{
public string Ffi { get; set; }
public string Ffi { get; set; }

public string Mockserver { get; set; }
public string Mockserver { get; set; }

public string Models { get; set; }
}
public string Models { get; set; }
}
10 changes: 5 additions & 5 deletions src/WireMock.Net/Pact/Models/V2/PactSpecification.cs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
namespace WireMock.Pact.Models.V2
#pragma warning disable CS1591
namespace WireMock.Pact.Models.V2;

public class PactSpecification
{
public class PactSpecification
{
public string Version { get; set; } = "2.0";
}
public string Version { get; set; } = "2.0";
}
10 changes: 5 additions & 5 deletions src/WireMock.Net/Pact/Models/V2/Pacticipant.cs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
namespace WireMock.Pact.Models.V2
#pragma warning disable CS1591
namespace WireMock.Pact.Models.V2;

public class Pacticipant
{
public class Pacticipant
{
public string Name { get; set; }
}
public string Name { get; set; }
}
12 changes: 6 additions & 6 deletions src/WireMock.Net/Pact/Models/V2/ProviderState.cs
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
#pragma warning disable CS1591
using System.Collections.Generic;

namespace WireMock.Pact.Models.V2
namespace WireMock.Pact.Models.V2;

public class ProviderState
{
public class ProviderState
{
public string Name { get; set; }
public string Name { get; set; }

public IDictionary<string, string> Params { get; set; }
}
public IDictionary<string, string> Params { get; set; }
}
Loading

0 comments on commit 31298d2

Please sign in to comment.