diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 0000000..2d5484b --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,6 @@ +{ + "tasks": { + "test": "dotnet test", + "build": "dotnet build" + } +} \ No newline at end of file diff --git a/ApiStub.FSharp/CE.fs b/ApiStub.FSharp/CE.fs index 105e41c..589a695 100644 --- a/ApiStub.FSharp/CE.fs +++ b/ApiStub.FSharp/CE.fs @@ -8,6 +8,7 @@ open System open Microsoft.Extensions.Http open Microsoft.AspNetCore.Routing.Template open Microsoft.AspNetCore.Routing +open Microsoft.AspNetCore.Http /// computation expression module (builder CE), contains `TestClient` that wraps `WebApplicationFactory` module CE = @@ -211,6 +212,10 @@ module CE = s.ConfigureAll(fun options -> options.HttpMessageHandlerBuilderActions.Add(fun builder -> //builder.AdditionalHandlers.Add(httpMessageHandler) |> ignore + + if httpMessageHandler = null then + failwith "no mocks were provided" + builder.PrimaryHandler <- httpMessageHandler) options.HttpClientActions.Add(fun c -> diff --git a/test/ApiStub.FSharp.Tests.fsproj b/test/ApiStub.FSharp.Tests.fsproj index 1bc2665..6c300cf 100644 --- a/test/ApiStub.FSharp.Tests.fsproj +++ b/test/ApiStub.FSharp.Tests.fsproj @@ -10,6 +10,7 @@ + @@ -35,4 +36,4 @@ - \ No newline at end of file + diff --git a/test/Issues.fs b/test/Issues.fs new file mode 100644 index 0000000..a3a1f83 --- /dev/null +++ b/test/Issues.fs @@ -0,0 +1,44 @@ +namespace ApiStub.FSharp.Tests + +open Xunit +open fsharpintegrationtests +open Microsoft.AspNetCore.Mvc.Testing +open Microsoft.Extensions.DependencyInjection +open Microsoft.AspNetCore.Hosting +open SwaggerProvider +open System.Threading.Tasks +open System.Net.Http +open System +open Microsoft.AspNetCore.TestHost +open Microsoft.Extensions.Http +open Microsoft.AspNetCore.Routing.Template +open Microsoft.AspNetCore.Routing.Patterns +open Microsoft.AspNetCore.Routing +open System.Net +open System.Text.Json +open Microsoft.AspNetCore.Http +open System.Net.Http.Json +open Swensen.Unquote +open ApiStub.FSharp.CE +open ApiStub.FSharp.BuilderExtensions +open ApiStub.FSharp.HttpResponseHelpers +open ApiStub.FSharp +open ApiStub.FSharp.BDD +open HttpResponseMessageExtensions +open Xunit.Abstractions + +module IssuesTests = + + let testce = new CE.TestClient() + + [] + let ``test_no_mocks_declared_throws_exception`` () = + task { + let factory = testce.GetFactory() + let client = factory.CreateClient() + + let! response = client.GetAsync("/Hello") + Assert.False(response.IsSuccessStatusCode) + let! responseString = response.Content.ReadAsStringAsync() + Assert.Contains("no mocks were provided", responseString) + }