public void Does_Not_Append_Header_If_Already_Exists()
    {
        // Arrange
        var context   = CreateContext("0");
        var attribute = new AppendUserModifiedHeaderAttribute();

        // Act
        attribute.OnActionExecuting(context);

        // Assert
        context.HttpContext.Response.Headers.TryGetValue("X-Umb-User-Modified", out var headerValue);
        Assert.AreEqual("0", headerValue[0]);
    }
    public void Does_Not_Append_Header_When_User_Id_Parameter_Provided_And_Does_Not_Match_Current_User()
    {
        // Arrange
        var context         = CreateContext(actionArgument: new KeyValuePair <string, object>("UserId", 99));
        var userIdParameter = "UserId";
        var attribute       = new AppendUserModifiedHeaderAttribute(userIdParameter);

        // Act
        attribute.OnActionExecuting(context);

        // Assert
        Assert.IsFalse(context.HttpContext.Response.Headers.ContainsKey("X-Umb-User-Modified"));
    }
    public void Appends_Header_When_No_User_Parameter_Provider()
    {
        // Arrange
        var context   = CreateContext();
        var attribute = new AppendUserModifiedHeaderAttribute();

        // Act
        attribute.OnActionExecuting(context);

        // Assert
        context.HttpContext.Response.Headers.TryGetValue("X-Umb-User-Modified", out var headerValue);
        Assert.AreEqual("1", headerValue[0]);
    }
    public void Appends_Header_When_User_Id_Parameter_Provided_And_Does_Not_Match_Current_User()
    {
        // Arrange
        var context         = CreateContext(actionArgument: new KeyValuePair <string, object>("UserId", 100));
        var userIdParameter = "UserId";
        var attribute       = new AppendUserModifiedHeaderAttribute(userIdParameter);

        // Act
        attribute.OnActionExecuting(context);

        // Assert
        context.HttpContext.Response.Headers.TryGetValue("X-Umb-User-Modified", out var headerValue);
        Assert.AreEqual("1", headerValue[0]);
    }