58 lines
2.0 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|