public void Equality(CookieDescriptor cookieDescriptor)
        {
            // Arrange
            var cookieDescriptorNew = new CookieDescriptor(cookieDescriptor.Name, cookieDescriptor.Value);

            // Act

            // Assert
            cookieDescriptorNew.Should().Be(cookieDescriptor);
        }
        public void ToHttpHeader_DifferentDomains(string domain, string domainInHeader, bool forAllSubdomains)
        {
            // Arrange
            var cookieDescriptor = new CookieDescriptor("a", "b");
            var domainPart       = string.IsNullOrEmpty(domainInHeader) ? "" : $"domain={domainInHeader}; ";

            // Act
            var result = cookieDescriptor.ToHttpHeader(domain, forAllSubdomains);

            // Assert
            result.Should().BeEquivalentTo($"a=b; {domainPart}path=/");
        }
        public void ToHttpHeader_CodeStatus(string value, string valueInHeader, CookieCodeStatus codeStatus)
        {
            // Arrange
            var cookieDescriptor = new CookieDescriptor("a", value)
            {
                CodeStatus = codeStatus,
            };

            // Act
            var result = cookieDescriptor.ToHttpHeader("");

            // Assert
            result.Should().BeEquivalentTo($"a={valueInHeader}; path=/");
        }
        public void ToHttpHeader_EmptyDomain()
        {
            // Arrange
            var cookieDescriptor = new CookieDescriptor("a", "b")
            {
                Expires = new DateTime(1992, 12, 23),
            };

            // Act
            var result = cookieDescriptor.ToHttpHeader("");

            // Assert
            result.Should().BeEquivalentTo("a=b; expires=Wed, 23 Dec 1992 00:00:00 GMT; path=/");
        }
        public void ToHttpHeader_DifferentFlags([Values] bool isHttpOnly, [Values] bool isSecure, [Values("/test", null, "")] string path)
        {
            // Arrange
            const string domain = "www.example.org";

            var cookieDescriptor = new CookieDescriptor("a", "b")
            {
                Expires  = new DateTime(1992, 12, 23),
                HttpOnly = isHttpOnly,
                Secure   = isSecure,
                Path     = path,
            };
            var httpOnlyPart = isHttpOnly ? "HttpOnly; " : "";
            var securePart   = isSecure ? "Secure; " : "";
            var pathPart     = string.IsNullOrEmpty(path) ? "path=/" : $"path={path}";

            // Act
            var result = cookieDescriptor.ToHttpHeader(domain);

            // Assert
            result.Should().BeEquivalentTo($"a=b; expires=Wed, 23 Dec 1992 00:00:00 GMT; {httpOnlyPart}{securePart}domain={domain}; {pathPart}");
        }