< Summary - CoreWCF Coverage — PR #1766

Information
Class: CoreWCF.BasicHttpSecurity
Assembly: CoreWCF.Http
File(s): /home/runner/work/CoreWCF/CoreWCF/src/CoreWCF.Http/src/CoreWCF/BasicHttpSecurity.cs
Line coverage
88%
Covered lines: 31
Uncovered lines: 4
Coverable lines: 35
Total lines: 106
Line coverage: 88.5%
Branch coverage
60%
Covered branches: 12
Total branches: 20
Branch coverage: 60%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Cyclomatic complexity NPath complexity Sequence coverage
.ctor()100%11100%
.ctor(...)50%6685.71%
CreateMessageSecurity()75%4480%
EnableTransportSecurity(...)100%22100%
EnableTransportAuthentication(...)100%11100%
DisableTransportAuthentication(...)100%11100%
ApplyAuthorizationPolicySupport(...)100%22100%

File(s)

/home/runner/work/CoreWCF/CoreWCF/src/CoreWCF.Http/src/CoreWCF/BasicHttpSecurity.cs

#LineLine coverage
 1// Licensed to the .NET Foundation under one or more agreements.
 2// The .NET Foundation licenses this file to you under the MIT license.
 3
 4using System;
 5using CoreWCF.Channels;
 6using CoreWCF.Runtime;
 7
 8namespace CoreWCF
 9{
 10    public sealed class BasicHttpSecurity
 11    {
 12        internal const BasicHttpSecurityMode DefaultMode = BasicHttpSecurityMode.None;
 13        private BasicHttpSecurityMode _mode;
 14        private HttpTransportSecurity _transportSecurity;
 15        private BasicHttpMessageSecurity _messageSecurity;
 16
 17        public BasicHttpSecurity()
 42718            : this(DefaultMode, new HttpTransportSecurity(), new BasicHttpMessageSecurity())
 19        {
 42720        }
 21
 42722        private BasicHttpSecurity(BasicHttpSecurityMode mode, HttpTransportSecurity transportSecurity, BasicHttpMessageS
 23        {
 24            Fx.Assert(BasicHttpSecurityModeHelper.IsDefined(mode), string.Format("Invalid BasicHttpSecurityMode value: {
 42725            if (mode == BasicHttpSecurityMode.Message ) // || mode == BasicHttpSecurityMode.TransportWithMessageCredenti
 26            {
 027                throw new PlatformNotSupportedException($"{nameof(BasicHttpSecurityMode.Message)}");
 28            }
 29
 42730            Mode = mode;
 42731            _transportSecurity = transportSecurity ?? new HttpTransportSecurity();
 42732            _messageSecurity = messageSecurity == null ? new BasicHttpMessageSecurity() : messageSecurity;
 42733        }
 34
 35        public BasicHttpSecurityMode Mode
 36        {
 505437            get => _mode;
 38            set
 39            {
 86040                if (!BasicHttpSecurityModeHelper.IsDefined(value))
 41                {
 042                    throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException(nameof(val
 43                }
 44
 86045                _mode = value;
 86046            }
 47        }
 48
 49        public HttpTransportSecurity Transport
 50        {
 989251            get => _transportSecurity;
 8452            set => _transportSecurity = value ?? new HttpTransportSecurity();
 53        }
 54
 55        public BasicHttpMessageSecurity Message
 56        {
 1357            get => _messageSecurity;
 058            set => _messageSecurity = value ?? new BasicHttpMessageSecurity();
 59        }
 60
 61        internal SecurityBindingElement CreateMessageSecurity()
 62        {
 351163            if (_mode == BasicHttpSecurityMode.TransportWithMessageCredential)
 64            {
 7065                return _messageSecurity.CreateMessageSecurity(Mode == BasicHttpSecurityMode.TransportWithMessageCredenti
 66            }
 344167            else if(_mode == BasicHttpSecurityMode.Message)
 68            {
 069                throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new NotSupportedException(SR.Format(SR.Unsuppo
 70            }
 71            else
 72            {
 344173                return null;
 74            }
 75        }
 76
 77        internal void EnableTransportSecurity(HttpsTransportBindingElement https)
 78        {
 53379            if (_mode == BasicHttpSecurityMode.TransportWithMessageCredential)
 80            {
 8881                _transportSecurity.ConfigureTransportProtectionOnly(https);
 82            }
 83            else
 84            {
 44585                _transportSecurity.ConfigureTransportProtectionAndAuthentication(https);
 86            }
 44587        }
 88
 89        internal void EnableTransportAuthentication(HttpTransportBindingElement http)
 90        {
 97491            _transportSecurity.ConfigureTransportAuthentication(http);
 97492        }
 93
 94        internal void DisableTransportAuthentication(HttpTransportBindingElement http)
 95        {
 347296            _transportSecurity.DisableTransportAuthentication(http);
 347297        }
 98
 99        internal void ApplyAuthorizationPolicySupport(HttpTransportBindingElement httpTransport)
 100        {
 4979101            httpTransport.AlwaysUseAuthorizationPolicySupport =
 4979102                Transport.AlwaysUseAuthorizationPolicySupport
 4979103                || Transport.ClientCredentialType == HttpClientCredentialType.InheritedFromHost;
 4979104        }
 105    }
 106}