public async Task ExecuteResultAsync_FormatsData()
    {
        // Arrange
        var url           = "testAction";
        var linkGenerator = new TestLinkGenerator {
            Url = url
        };
        var httpContext = GetHttpContext(linkGenerator);
        var stream      = new MemoryStream();

        httpContext.Response.Body = stream;

        var routeValues = new RouteValueDictionary(new Dictionary <string, string>()
        {
            { "test", "case" },
            { "sample", "route" }
        });

        // Act
        var result = new AcceptedAtRoute <string>(
            routeName: "sample",
            routeValues: routeValues,
            value: "Hello world");
        await result.ExecuteAsync(httpContext);

        // Assert
        var response = Encoding.UTF8.GetString(stream.ToArray());

        Assert.Equal("\"Hello world\"", response);
    }
    public void ExecuteAsync_ThrowsArgumentNullException_WhenHttpContextIsNull()
    {
        // Arrange
        var         result      = new AcceptedAtRoute <object>(null, null);
        HttpContext httpContext = null;

        // Act & Assert
        Assert.ThrowsAsync <ArgumentNullException>("httpContext", () => result.ExecuteAsync(httpContext));
    }
    public void AcceptedAtRouteResult_ProblemDetails_SetsStatusCodeAndValue()
    {
        // Arrange & Act
        var routeValues = new RouteValueDictionary(new Dictionary <string, string>()
        {
            { "test", "case" },
            { "sample", "route" }
        });
        var obj    = new HttpValidationProblemDetails();
        var result = new AcceptedAtRoute <HttpValidationProblemDetails>(routeValues, obj);

        // Assert
        Assert.Equal(StatusCodes.Status202Accepted, result.StatusCode);
        Assert.Equal(StatusCodes.Status202Accepted, obj.Status);
        Assert.Equal(obj, result.Value);
    }
Example #4
0
    public async Task ExecuteResultAsync_ThrowsIfRouteUrlIsNull()
    {
        // Arrange
        var linkGenerator = new TestLinkGenerator();
        var httpContext   = GetHttpContext(linkGenerator);

        // Act
        var result = new AcceptedAtRoute(
            routeName: null,
            routeValues: new Dictionary <string, object>());

        // Assert
        await ExceptionAssert.ThrowsAsync <InvalidOperationException>(() =>
                                                                      result.ExecuteAsync(httpContext),
                                                                      "No route matches the supplied values.");
    }
    public async Task ExecuteResultAsync_SetsStatusCodeAndLocationHeader(object values)
    {
        // Arrange
        var expectedUrl   = "testAction";
        var linkGenerator = new TestLinkGenerator {
            Url = expectedUrl
        };
        var httpContext = GetHttpContext(linkGenerator);

        // Act
        var result = new AcceptedAtRoute <object>(routeValues: values, value: null);
        await result.ExecuteAsync(httpContext);

        // Assert
        Assert.Equal(StatusCodes.Status202Accepted, httpContext.Response.StatusCode);
        Assert.Equal(expectedUrl, httpContext.Response.Headers["Location"]);
    }