aspnetcore/test/Microsoft.AspNetCore.Http.A.../CookieBuilderTests.cs

58 lines
2.0 KiB
C#

// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using Xunit;
namespace Microsoft.AspNetCore.Http.Abstractions.Tests
{
public class CookieBuilderTests
{
[Theory]
[InlineData(CookieSecurePolicy.Always, false, true)]
[InlineData(CookieSecurePolicy.Always, true, true)]
[InlineData(CookieSecurePolicy.SameAsRequest, true, true)]
[InlineData(CookieSecurePolicy.SameAsRequest, false, false)]
[InlineData(CookieSecurePolicy.None, true, false)]
[InlineData(CookieSecurePolicy.None, false, false)]
public void ConfiguresSecurePolicy(CookieSecurePolicy policy, bool requestIsHttps, bool secure)
{
var builder = new CookieBuilder
{
SecurePolicy = policy
};
var context = new DefaultHttpContext();
context.Request.IsHttps = requestIsHttps;
var options = builder.Build(context);
Assert.Equal(secure, options.Secure);
}
[Fact]
public void ComputesExpiration()
{
Assert.Null(new CookieBuilder().Build(new DefaultHttpContext()).Expires);
var now = DateTimeOffset.Now;
var options = new CookieBuilder { Expiration = TimeSpan.FromHours(1) }.Build(new DefaultHttpContext(), now);
Assert.Equal(now.AddHours(1), options.Expires);
}
[Fact]
public void ComputesMaxAge()
{
Assert.Null(new CookieBuilder().Build(new DefaultHttpContext()).MaxAge);
var now = TimeSpan.FromHours(1);
var options = new CookieBuilder { MaxAge = now }.Build(new DefaultHttpContext());
Assert.Equal(now, options.MaxAge);
}
[Fact]
public void CookieBuilderPreservesDefaultPath()
{
Assert.Equal(new CookieOptions().Path, new CookieBuilder().Build(new DefaultHttpContext()).Path);
}
}
}