Example #1
0
    public void RecordingSourcePath()
    {
        var    echoMessageHandler = new EchoMessageHandler();
        string expected           = Path.GetFullPath(Path.Combine(GetOutputDirectory(), "..", "..", "..", "..", "src", "HttpClientEcho.Tests", "HttpClientEcho" + Path.DirectorySeparatorChar));

        Assert.Equal(expected, echoMessageHandler.RecordingSourcePath);
    }
Example #2
0
    public async Task CacheIsSharedAcrossInstances()
    {
        var handler2 = new EchoMessageHandler(this.mockHandler)
        {
            PlaybackRuntimePath = this.echoMessageHandler.PlaybackRuntimePath,
            RecordingSourcePath = this.echoMessageHandler.RecordingSourcePath,
        };
        var httpClient2 = new HttpClient(handler2);

        // The first time should hit the network.
        await this.httpClient.GetAsync(PublicTestSite);

        Assert.Equal(1, this.mockHandler.TrafficCounter);

        // The subsequent time should not, even if using a different instance of the message handler.
        this.mockHandler.ThrowIfCalled = true;
        await httpClient2.GetAsync(PublicTestSite);
    }
Example #3
0
    private void StartNewSession()
    {
        this.echoMessageHandler = new EchoMessageHandler(this.mockHandler)
        {
            RecordingSourcePath = Path.Combine(this.tempDir, "recording"),
            PlaybackRuntimePath = Path.Combine(this.tempDir, "playback"),
        };
        this.ClearMemoryCache();

        // If prior recordings existed, migrate them to playback.
        // This emulates the anticipated build step that will occur in test projects to deploy recorded files.
        var recordingDir = new DirectoryInfo(this.echoMessageHandler.RecordingSourcePath);

        if (recordingDir.Exists)
        {
            foreach (var file in recordingDir.EnumerateFiles())
            {
                Directory.CreateDirectory(this.echoMessageHandler.PlaybackRuntimePath);
                file.CopyTo(Path.Combine(this.echoMessageHandler.PlaybackRuntimePath, file.Name), overwrite: true);
            }
        }

        this.httpClient = new HttpClient(this.echoMessageHandler);
    }
Example #4
0
    public void PlaybackRuntimePath()
    {
        var echoMessageHandler = new EchoMessageHandler();

        Assert.Equal("HttpClientEcho" + Path.DirectorySeparatorChar, echoMessageHandler.PlaybackRuntimePath);
    }
Example #5
0
    public void InnerHandlerIsSet()
    {
        var handler = new EchoMessageHandler(this.mockHandler);

        Assert.Same(this.mockHandler, handler.InnerHandler);
    }
Example #6
0
    public void DefaultCtorUsesRealNetwork()
    {
        var handler = new EchoMessageHandler();

        Assert.IsType <HttpClientHandler>(handler.InnerHandler);
    }